4月から2013新卒の方が入られて、1ヶ月以上過ぎましたが、活気があってよいですね。
では、本題のmysql5.5、5.6 混在環境でのフェイルオーバー編を紹介します。
keepalived、MySQL-MHA等は、前回までの
keepalived + MySQL-MHA + xtrabackupで自動フェイルオーバーと手動ファイルバック(その1 keepalived編)
keepalived + MySQL-MHA + xtrabackupで自動フェイルオーバーと手動フェイル(その2 MySQL-MHA編)
keepalived + MySQL-MHA + xtrabackupで自動フェイルオーバーと手動フェイル(その3 xtrabackup編)
keepalived + MySQL-MHAでフェイルオーバー(その4 master_ip_failover_script編)
も参考にしてください。
■今回の要旨
* MySQL5.5、5.6が混在している環境で、フェイルオーバーするとどうなるか。
* MySQL5.5から5.6へのバージョンアップ手順
■環境
以下のように、MySQL5.5のサーバがマスターで、MySQL5.5のサーバ1台、MySQL5.6のサーバが2台スレーブで繋がっている状態で検証を行ないました。
Manageサーバの設定
# vi /etc/app1.cnf
[server default] manager_log=/var/lib/mysql_mha/log/masterha/app1/app1.log manager_workdir=/var/lib/mysql_mha/masterha/app1 password=localtest_password remote_workdir=/var/lib/mysql_mha/log/masterha/app1 ssh_user=mysql user=root master_ip_failover_script= /var/lib/mysql_mha/masterha/script/master_ip_failover [server1] hostname=192.168.0.101 [server2] hostname=192.168.0.102 [server3] hostname=192.168.0.103 candidate_master=1 [server4] hostname=192.168.0.104
※優先的にマスターになるサーバを、db-003(MySQL5.6)にしています。
※レプリケーション及びMHAの設定は、その2 MySQL-MHA編を参考にしてください。
■MySQL5.5、5.6が混在している環境で、フェイルオーバーするとどうなるか。
普通に考えるとこんなことはしないと思いますが、
MHAマネージャーが起動している状態で、Masterの「DBサーバ1」のMySQLを落として、フェイルオーバーさせます。
[root@db-001 ~]# /etc/init.d/mysql stop
結果 優先的にマスターになるサーバを、db-003(MySQL5.6)にしているにも関わらず
db-002(MySQL5.5)がマスターに昇格しました。
MHAのソースを少し見てみましたが、MHAはMySQLのバージョンも見て、oldest versionのslaveサーバを優先的にマスターに昇格させているようです。
■MySQL5.5から5.6へのバージョンアップ手順
なるべくサーバを止めないでバージョンアップするにはどうしたらよいでしょうか。
私が考えた結論としては、
1. Master以外のSlaveを全てMySQL5.6に1台ずつ順番にバージョンアップする。
2. MasterのMySQL(5.5)をシャットダウンして、フェイルオーバーする。
3. 元MasterのMySQLを5.6にバージョンアップし、新MasterにSlaveとして繋ぐ。
こんな手順ですかね。
mysql5.5、5.6 混在環境でのフェイルオーバー編は以上となります。