#author("2020-12-05T12:45:36+00:00","default:wikiadmin","wikiadmin")
#author("2020-12-07T02:21:35+00:00","default:wikiadmin","wikiadmin")
-個人レベルならmysqldump流し込み、それ以外はフルバックアップ+binlogでロールフォワード

*ファイルの種別 [#n3a4b5a8]

|mysql-bin.index|今のbinログを保持するテキストファイル|
|mysql-bin.00000x|binログ。mysql再起動か--flush-logsをつけてdumpした場合にはインクリメントされる|


*mysqlbinlog [#ja17adc5]

バイナリログとあるが、実はSQLを羅列したファイル

**binlog_formatの確認 [#w4c2266d]

 show variables like 'binlog_format';

-デフォルトはstatementのようだ

**ポイントインタイムリカバリー [#qf218a2d]

https://dev.mysql.com/doc/refman/5.6/ja/point-in-time-recovery.html

binlogが別れていても一度に復旧させないと不整合の元になる。

-NG (1に一時テーブルが含まれているとコネクション切断時に消滅、2で使っているとエラー)

 mysqlbinlog binlog.000001 | mysql -u root -p
 mysqlbinlog binlog.000002 | mysql -u root -p

-OK

 mysqlbinlog binlog.000001 binlog.000002 | mysql -u root -p

-一つのテキストに繋げて、内容確認してから流すのが良い

 mysqlbinlog binlog.000001 >  /tmp/statements.sql
 mysqlbinlog binlog.000002 >> /tmp/statements.sql
 mysql -u root -p -e "source /tmp/statements.sql"

-スタートのポジションを指定して実施

 mysqlbinlog --start-position=880 mysql-bin.000011 | more

-base64の情報を除去する(Auroraに流し込むときには必要)

 mysqlbinlog mysql-bin.000005 --base64-output=DECODE-ROWS

**実行バージョン [#zfa35bb3]

|From|To|結果|
|Mariadb 5.5|mariadb 5.5|OK|
|Mariadb 5.5|10.5.4-MariaDB|OK|

*binlog2sql [#m52408c0]

中国製ツール

https://www.percona.com/blog/2020/07/09/binlog2sql-binlog-to-raw-sql-conversion-and-point-in-time-recovery/

**インストール [#zf1289e0]

**使い方 [#bbc4176a]

binlogを持ってきて、接続情報もsuper admin権限必要。接続時に-dでdatabase指定できるようだが、binlogにあるやつは全部出るので意味なし!なおファイルはカレントディレクトリに持ってこないとエラー!複数ならstop-fileを指定する

 python3 binlog2sql/binlog2sql/binlog2sql.py -h127.0.0.1 -P3306 -uroot -pxxxxx --start-file='mysql-bin.000002'

**注意点 [#ace4fd44]

-一バイトにみたない列で本来b'0'とするところが'0'となってサイズオーバー

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS