バイナリファイルからMySQLバイナリログ座標を取得するにはどうすればよいですか。
-
26-09-2020 - |
質問
大きい(120 GB)MySQLデータベースのレプリケーションを設定しようとしています。
マスターをシャットダウンし、データファイルをコピーしてマスターを再起動しました。これで、スレーブ&スタートアップを設定しましたが、私はMASTER_LOG_FILE
とMASTER_LOG_POS
の値をセットアップするために必要なことを怠っていることを認識しています。
まだデータファイルのタッチされていないコピーがあります。これらのファイルからMASTER_LOG_FILE
とMASTER_LOG_POS
を決定する方法はありますか?
関連の質問:
-
MASTER_LOG_POS
を時々早い時点に設定した場合はどうなりますか? - am私は、重複するクエリを実行すると、データが重複する可能性があると仮定して正しいですか?
編集
mysqlbinlog
コマンドを調査し、実行して正しい情報のように見えるものを発見しました:
mysqlbinlog --to-last-log --start-datetime='2015-06-21 20:05:00'
mysql-bin.000006 | grep end_log_pos
.
出力はこのように見えます:
... a whole bunch more lines ...
#150621 20:10:21 server id 1 end_log_pos 720159843 Query thread_id=901489 exec_time=0 error_code=0
#150621 20:10:21 server id 1 end_log_pos 720161877 Query thread_id=901489 exec_time=0 error_code=0
#150621 20:10:21 server id 1 end_log_pos 720162762 Query thread_id=901489 exec_time=0 error_code=0
#150621 20:10:22 server id 1 end_log_pos 720164796 Query thread_id=901489 exec_time=0 error_code=0
#150621 20:10:22 server id 1 end_log_pos 720164815 Stop
.
私は私が最後の2つのポジションのうちの1つを使うべきですが、私はどれがかなりわからないと思います。
解決
うまくいけば、あなたはまだ奴隷でmysqldを起動しませんでした。
ビンログ位置も、すべてのBINLOGイベントの終わりにBINLOGサイズであることが起こります。あなたの場合は、最後のBinlogを使用することができます。スレーブSeesは、私が想定できると仮定することができます。ファイルサイズを取得して、その位置としてそれを使用します。
したがって、スレーブに走る
STOP SLAVE;
CHANGE MASTER TO
MASTER_HOST='...',
MASTER_PORT=3306,
MASTER_USER='repluser',
MASTER_PASSWORD='replpassword',
MASTER_LOG_FILE='mysql-bin.00006',
MASTER_LOG_POS=720164815;
START SLAVE;
.
それはそれをするべきです!!!
ビンログ位置は
の前にファイルサイズであることについて説明しました-
mysql-bin.000006
:どうやってMySQL Binlogファイルが破損している場合は監視できますか? -
Nov 30, 2012
:ディスク容量の停止 があったときにマイSQL DBマスターをマスターレプリケーションに処理する方法
を尋ねた
MASTER_LOG_POSを以前の時点に設定した場合はどうなりますか?
はい、これらのBinlogイベントを再生し、問題を引き起こします。
所属していません dba.stackexchange