MySQL Master HA(MHA)をAWS-VPC環境で動作させた時に、 Routing-VIPを新masterに向け直すスクリプト
/etc/mha.cnf
[server default]
master_ip_failover_script=/root/mha-vpc/Mha-vpc.py
report_script=/root/mha-vpc/Report.py
- rootユーザーで各MySQLインスタンスがパス無し鍵認証接続できること
- MHA(manager / node)がMySQLインスタンスにインストールされていること
- 各MySQLインスタンスのENIについて、Source/Desc CheckがOFFになっていること
- 各MySQLインスタンスが所属するRoutingテーブルにvipを設定し、Master-MySQLのENIにDestinationを向けること
- boto / paramiko がインストールされていること
- config/aws_key.json : AWSアクセスキー, AWSシークレットキー, リージョンを指定
- config/route_table.json : VPCのRoutingテーブルのid, vip, Routingテーブル名
- Report.py : レポートメールの送信元/送信先メールアドレス
- MHAがmaster死亡を検知
- MHAによって以下がキックされる(stopssh)
/root/mha-vpc/Mha-vpc.py --orig_master_host=旧masterホスト名 --orig_master_ip=旧masterIP --orig_master_port=旧masterport --command=stopssh --ssh_user=SSH接続ユーザ名
- 2によってRoutingテーブルから旧masterIPが削除、旧masterインスタンスをシャットダウン
- MHAが新masterを選出、レプリケーション再構築
- MHAによって以下がキックされる(start)
/root/mha-vpc/Mha-vpc.py --command=start --ssh_user=ssh接続ユーザ名 --new_master_host=新masterホスト名 --new_master_ip=新masterIP --new_master_port=新masterのport
- 5によって、新masterをRoutingテーブルに登録
- Report.pyがキックされて、フェイルオーバー完了をメールで通知
https://code.google.com/p/mysql-master-ha/ http://d.hatena.ne.jp/c9katayama/20111225/1324837509