あなたは素晴らしい驚きを感じるかもしれませんが、ここに行きます:
実行しますSHOW SLAVE STATUS\G
。例として、次のようになったとします。
Slave_IO_State: Waiting for master to send event
Master_Host: 10.64.68.253
Master_User: replusername
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.003202
Read_Master_Log_Pos: 577991837
Relay_Log_File: relay-bin.010449
Relay_Log_Pos: 306229695
Relay_Master_Log_File: mysql-bin.003202
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 577991837
Relay_Log_Space: 306229695
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
表示から次の項目を選択します。
Relay_Master_Log_File
( mysql-bin.003202
)
Exec_Master_Log_Pos
( 577991837
)
理由は次のとおりです。そして、スレーブに到達し、正常に実行されたマスターからの binlog エントリRelay_Master_Log_File
を表します。Exec_Master_Log_Pos
そこからピックアップするだけです。
次のコードを実行するだけです。Exec_Master_Log_Pos
STOP SLAVE;
CHANGE MASTER TO
MASTER_LOG_FILE='mysql-bin.003202',
MASTER_LOG_POS=577991837;
START SLAVE;
試してみる !!!
警告
Relay_Master_Log_File
マスターに存在しない場合は、ダメージ コントロールを実行する必要があります。前にSHOW SLAVE STATUS\G
述べたように、次のようにマスターの次のバイナリ ログにスキップする必要がある場合があります。
STOP SLAVE;
CHANGE MASTER TO
MASTER_LOG_FILE='mysql-bin.003203',
MASTER_LOG_POS=4;
START SLAVE;
レプリケーションが追いついたとしても、あなたは森の外にいるわけではありません。Percona Toolkit をダウンロードし、pt-table-checksumとpt-table-syncを実行して、スレーブで失われたデータを修復する必要がある場合があります。
レプリケーションがうまくいかない場合は、デューデリジェンスを実行してスレーブをリロードする必要があります。
レプリケーションが元の提案で機能する場合、この警告で何もする必要がないことを願っています。