mysqlメインダウンタイム、メインスレーブフェイルオーバー(プライマリマルチスレーブ)

2360 ワード

一:環境
192.168.1.100 master
192.168.1.101 slave1
192.168.1.102 slave2
 
slave 1,slave 2はmasterに接続されています.
 
二:模擬主故障
マスターインスタンスを閉じる
service mysql stop
この場合、slave 1、slave 2でshow slave statusGにエラーが表示されます.
Last_IO_Error: error reconnecting to master'[email protected]:3307' - retry-time: 60 retries: 1
 
IOプロセスとsqlプロセスの状態:
Slave_IO_Running:Connecting(このステータスは、プライマリを再接続しようとしていることを示し、プライマリが正常になった場合、プロセスステータスは自動的にYesになります)
Slave_SQL_Running: Yes
この場合、masterは読み書きサービスを提供できません.私たちはその中の最新のslaveを主にしたいと思っています.
三:切替手順
3.1すべてのrelay logがすべて読み込まれたことを確認する
各スレーブ・ライブラリで実行:
stopslave io_thread;
showprocesslist;
Slave has read all relay logが見えるまで;waitingfor more updatesは、ライブラリからの更新が完了したことを示します.
またはshow slave statusで表示します
Slave_SQL_Running_State: Slave has read allrelay log; waiting for more updates
 
3.2新しいマスターライブラリの選択
比較選択Relay_Master_Log_File,Exec_Master_Log_Pos最大は新しいマスターライブラリとして、ここではslave 1を新しいマスターライブラリとして選択します.
実際には、2つのIOプロセスが常に正常で、プライマリに遅れておらず、relay logが再生済みであれば、2つのスレーブは同じで、どちらを選択してもよい.
ここではslave 1を新しいマスターとして選択します.
 
3.3適切な構成
slave 1にログインしstop slaveを実行します.
データベースディレクトリに入り、masterを削除します.infoとrelay-log.infoファイル(削除する前に、この2つのファイルをバックアップすることができます).
構成my.cnfファイル、log-binを開き、log-slaves-updates=1とread-only=1がある場合は注記し、slave 1を再起動します.
 
3.4 reset master
slave 1でreset masterを使用すると、バイナリログが再生成されます.
mysql> reset master;
Query OK, 0 rows affected (0.02 sec)
 
mysql> show binary logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |       154 |
+------------------+-----------+
1 row in set (0.00 sec)
 
3.5同期用のユーザーの作成
slave 1がmasterを完全に同期している場合は、このステップは省略できます.
 
3.6 slave 2はslave 1を指す
mysql> change master to master_user='RepUser',master_password='beijing',master_host='192.168.1.101',master_port=3307,master_log_file='mysql-bin.000001',master_log_pos=154;
Query OK, 0 rows affected, 2 warnings (0.00 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

 
3.7プログラム書き込みIPをslave 1のIPに変更する
プログラムには以前にmasterのIPが記録されていましたが、今masterがダウンしているので、IPを変更する必要があります.