バイナリファイルからMySQLバイナリログ座標を取得するにはどうすればよいですか。

dba.stackexchange https://dba.stackexchange.com/questions/104927

  •  26-09-2020
  •  | 
  •  

質問

大きい(120 GB)MySQLデータベースのレプリケーションを設定しようとしています。

マスターをシャットダウンし、データファイルをコピーしてマスターを再起動しました。これで、スレーブ&スタートアップを設定しましたが、私はMASTER_LOG_FILEMASTER_LOG_POSの値をセットアップするために必要なことを怠っていることを認識しています。

まだデータファイルのタッチされていないコピーがあります。これらのファイルからMASTER_LOG_FILEMASTER_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;
.

それはそれをするべきです!!!

ビンログ位置は

の前にファイルサイズであることについて説明しました

を尋ねた

MASTER_LOG_POSを以前の時点に設定した場合はどうなりますか?

はい、これらのBinlogイベントを再生し、問題を引き起こします。

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top