2つの別個のサーバー上の2つのMySQLインスタンス間でレプリケーションを実行しています。 MがマスターでSがスレーブであるとしましょう。一方向レプリケーションM-> Sとしてセットアップされます。現在、Sは読み取り専用で、-log-binオプションを使用してバイナリログを書き込んでいます。 Mがダウンしたため、Sにフェイルオーバーする必要があるとします。 Mを再びSと同期するようにMを回復する手順は何ですか?そして、Sは再びスレーブになることができますか?
次のスレッドを見ましたが、それらは循環レプリケーションに依存しています。
https://serverfault.com/questions/350756/recover-a-crashed-mysql-master-server-from-the-slavehttps:// serverfault .com/questions/350756/recover-a-crashed-mysql-master-server-from-the-slave
これまでにSをマスターに昇格させるための手順:
STOP SLAVE IO_THREAD;
SHOW PROCESSLIST; check 'has read all relay log' status
STOP SLAVE;
SET GLOBAL read_only=0;
UNLOCK TABLES;
RESET MASTER;
コマンドの更新されたリスト:
On Master:
CHANGE MASTER TO MASTER_Host=slave.com, MASTER_LOG_FILE=MASTER_LOG_FILE, MASTER_LOG_POS=MASTER_LOG_POS, ....
START SLAVE;
# Wait till caught up;
STOP SLAVE;
RESET MASTER;
On Slave:
CHANGE MASTER TO <original slave settings>;
START SLAVE;
USE mydb;
FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only=1;
Read_only = 0に設定し、スレーブ(新しいマスター)へのポイント接続を実行する前に、
show master status;
それらの番号をメモします。
マスターサーバーを回復したら、実行できます
CHANGE MASTER TO MASTER_Host=myslavehost.example.com, MASTER_LOG_FILE=[take it from your notes],MASTER_LOG_POS=[take it from your notes], MASTER_USER='replication_user', MASTER_PASSWORD='replication_password';
START SLAVE;
次に、古いマスターが新しいマスターから複製を開始し、追いつきます。
注意すべき点がいくつかあります。
レプリケーションのユーザーとパスワードを確認してください。そうでない場合は、次の方法で回復できます。
リポジトリテーブル(master_info_repository = TABLEの場合)
mysql.slave_master_infoからUser_name、User_passwordを選択します。
master.infoファイル(5行目と6行目)