第7章二編、【MHA】フェイルオーバー
MHAフェイルオーバー:
一、Master自動監視とフェイルオーバ
デフォルトでは8時間以内に障害が連続して発生した場合、切り替えは行われません.--last_を設定します.failover_minute=(minutes)で時間を短縮しますが、--ignore_が設定されている場合はlast_failoverパラメータの場合、この手順は省略します.
詳細は、「MHA高可用性アーキテクチャの説明」のリカバリ手順と同様に追加されます.
1)MHA起動後:
メインライブラリのbinlogファイルが存在するかどうかを自動的に検出します(Executing SSH check script:save_binary_logsより)
ネットワーク接続の自動検出(Execution secondary network check script:/usr/local/bin/masterha_secondary_check_3307経由)---自分の環境で切り取る
2)MHAダウンタイム後:
ステップ1:構成チェック.生存スレーブ(192.168.143.242:3307)
ステップ2:SSHで死んだスレーブをシャットダウンする
ステップ3:masterリカバリフェーズ
二、Master手動フェイルオーバ
三、オンラインスムーズ切り替え
切り替えには、次の点が含まれます.
ステップ1:
1)構成チェック:現在生存しているmasterとslave
2)yesを入力し、元のmasterでflush no_を実行するwrite_to_binlog tablesは、開いているテーブルを強制的に閉じ、ビジネスが忙しい場合に時間がかかります.
3)yesを入力し、マスターをslaveに切り替えることを確認する
4)更新を拒否し、元のマスターライブラリにデータが書き込まれないようにする
*元マスター上の仮想IPをクリア
*元のマスターを読み取り専用モードに設定し、set global read_only=1
*killは、すべてのアプリケーションリンクのスレッドを削除します.
*flush tables with read lockグローバルロックの実行
*元のマスターでselect masterを実行post_wait(mysqld-bin.0023:234324)は、slaveがrelay logを実行するのを待って、新しいchange master to文を生成します.
ステップ2:
1)VIPをslave 1に切り替える
2)slave 1(新しく昇格したmaster)を読み書きモードset global read_に設定only=0
3)slave 2でchange master to slave 1を実行する
4)元マスターでロックテーブルunlock tablesを解除する
5)元のマスター上でchange master slave 1を実行する
6)slave 1(新しく昇格したmaster)でreset slave allを実行し、クリアする前の同期レプリケーション情報
7)切替プロセス全体の終了
上の過程は、私が自分のオンラインテストログに基づいて本と結びつけて書いたものです.みんなの実験の過程の中で、ゆっくりとテストのログを見て、全体の過程を理解することができます.
一、Master自動監視とフェイルオーバ
デフォルトでは8時間以内に障害が連続して発生した場合、切り替えは行われません.--last_を設定します.failover_minute=(minutes)で時間を短縮しますが、--ignore_が設定されている場合はlast_failoverパラメータの場合、この手順は省略します.
詳細は、「MHA高可用性アーキテクチャの説明」のリカバリ手順と同様に追加されます.
1)MHA起動後:
メインライブラリのbinlogファイルが存在するかどうかを自動的に検出します(Executing SSH check script:save_binary_logsより)
ネットワーク接続の自動検出(Execution secondary network check script:/usr/local/bin/masterha_secondary_check_3307経由)---自分の環境で切り取る
2)MHAダウンタイム後:
ステップ1:構成チェック.生存スレーブ(192.168.143.242:3307)
ステップ2:SSHで死んだスレーブをシャットダウンする
ステップ3:masterリカバリフェーズ
* slave slave master binlog mysql-bin.000006:2462
* master binlog (192.168.143.241:3307): save_binary_logs --command=save --start_file=mysql-bin.000006 --start_pos=2462 --binlog_dir=/data/mysql/mysql_3307/binlog --output_file=/var/log/masterha/app2/saved_master_binlog_from_VCrawlerDB-M_3307_20161129170047.binlog --handle_raw_binlog=1 --disable_log_bin=0 --manager_version=0.56 scp ( master)
* master, MHA app2.cnf candidate_master=1 , , master; , IP
* master master , slave master , scp slave , Executing command: apply_diff_relay_logs
* Statement should be: CHANGE MASTER TO MASTER_HOST='VCDB-S or 192.168.143.242', Master change
* IP master Executing master IP activate script: /usr/local/bin/master_ip_failover_app2 --command=start, set global read_only=0
* slave , slave sql_thread , , slave relay log position, master 。
* slave master relay log ,MHA master binlog slave, apply_diff_relay_logs , change master to master 。
二、Master手動フェイルオーバ
masterha_master_switch --conf=/etc/mha/app2.cnf --master_state=dead --ignore_last_failover --dead_master_host=Master --dead_master_ip=192.168.143.241 --dead_master_port=3307
三、オンラインスムーズ切り替え
masterha_master_switch --conf=/etc/app1.cnf --master_state=alive --orig_master_is_new_slave --running_updates_limit=1
切り替えには、次の点が含まれます.
ステップ1:
1)構成チェック:現在生存しているmasterとslave
2)yesを入力し、元のmasterでflush no_を実行するwrite_to_binlog tablesは、開いているテーブルを強制的に閉じ、ビジネスが忙しい場合に時間がかかります.
3)yesを入力し、マスターをslaveに切り替えることを確認する
4)更新を拒否し、元のマスターライブラリにデータが書き込まれないようにする
*元マスター上の仮想IPをクリア
*元のマスターを読み取り専用モードに設定し、set global read_only=1
*killは、すべてのアプリケーションリンクのスレッドを削除します.
*flush tables with read lockグローバルロックの実行
*元のマスターでselect masterを実行post_wait(mysqld-bin.0023:234324)は、slaveがrelay logを実行するのを待って、新しいchange master to文を生成します.
ステップ2:
1)VIPをslave 1に切り替える
2)slave 1(新しく昇格したmaster)を読み書きモードset global read_に設定only=0
3)slave 2でchange master to slave 1を実行する
4)元マスターでロックテーブルunlock tablesを解除する
5)元のマスター上でchange master slave 1を実行する
6)slave 1(新しく昇格したmaster)でreset slave allを実行し、クリアする前の同期レプリケーション情報
7)切替プロセス全体の終了
上の過程は、私が自分のオンラインテストログに基づいて本と結びつけて書いたものです.みんなの実験の過程の中で、ゆっくりとテストのログを見て、全体の過程を理解することができます.