Pacemakerのocf:heartbeat:mysqlを使って、デフォルトポート(3306)以外を使うとスレーブ動作が正しく行われません。
参考資料
LINUX-HA WIKIのMySQL Master/Slave Replicationを参考にしてpacemakerにmysqlを制御させてみました。
デフォルトポート番号(3306)を使った場合には、promote/demoteともに問題なく動作しました。
デフォルトポート番号以外でテストしてみたところ・・・妙なことになりました。
3306にchange masterするのか・・・
マスター・スレーブ入れ替えやフェイルオーバーなどのテストをすると一見何の問題もなく動作しているように見えた(mysqlを2つ動作させていたため)のですが、実行ログやqueryログをよく見ると
スレーブになった側がCHANGE MASTER TOした先(マスター)のポートが3306になってしまっています。
ポートの指定が可能かどうかをLINUX-HAのドキュメントで確認してreplication_portを設定してみたのですが、CHANGE MASTER TOが実行される際の動作にはMASTER_PORTは指定されないためデフォルトのポート番号へ接続してきます。
困ったなぁとおもって、ocf:heartbeat:mysqlを見てみたら・・・やっぱりCHANGE MASTER TOを発行する際にMASTER_PORTは設定されていませんでした。
CentOS7にインストールされるOCF:heartbeat:mysqlでは何らかの修正がないかチェックしてみたのですが変わらず。
とうことで、ocf:heartbeat:mysqlのCHANGE MASTER TOを生成しているところにMASTER_PORTを設定してreplication_portで指定したポートで動作するように変更することにしました。
パッケージでインストールされるリソースを変更するのは、アップデートすると動作しなくなる可能性があるので別の名称に変更するなどを行った方が良いとおもいます。
取り合えず、
スレーブになったノードのCHANGE MASTER TOは正しいマスターポートを指すようになりました。