MySQL WorkbenchからMySQL Utilitiesだけを引っこ抜いてインストールした記事。
mysqlfailoverの使い方自体は割と単純で、
$ mysqlfailover --master=root:root@localhost --candidate=root:root@cent22,root:root@cent23 --discover-slaves-login=root:root --log=/tmp/failover.log --rpl-user=repl:repl
MySQL Replication Failover Utility
Failover Mode = auto Next Interval = Wed Oct 24 11:35:00 2012
Master Information
------------------
Binary Log File Position Binlog_Do_DB Binlog_Ignore_DB
bin.000005 442
Replication Health Status
+------------+-------+---------+--------+------------+------------------------------------------+
| host | port | role | state | gtid_mode | health |
+------------+-------+---------+--------+------------+------------------------------------------+
| localhost | 3306 | MASTER | UP | ON | OK |
| cent22 | 3306 | SLAVE | UP | ON | OK |
| cent23 | 3306 | SLAVE | UP | ON | Slave has 1 transactions behind master. |
+------------+-------+---------+--------+------------+------------------------------------------+
joeパスワードなのはご愛嬌。topみたいに画面が更新される様になる。
--masterにはマスターのユーザー名[:パスワード]@ホスト名[:ポート番号]を指定。
mysql.failover_consoleテーブルに書き込みをしたり
mysql.userテーブルから読み込みしたりするので、権限のあるユーザーで。
--candidateにはマスターに昇格できるスレーブの情報を指定。
ユーザー名[:パスワード]@ホスト名[:ポート番号],ユーザー名[:パスワード]@ホスト名[:ポート番号],..
複数指定する時は書いた順番で優先される。
↑のやつだと、
"localhostが転けた時はcent22をマスターに昇格、cent22も転けた時はcent23に昇格"
という意味合い。
--discover-slaves-loginには、
マスターにログインして"SHOW SLAVE HOSTS"を叩けるユーザーを指定する。
--slaves=user@host,user@host,.. で列挙する場合、このオプション要らない。
--rpl-userにはREPLICATION SLAVE権限のユーザーを記載する。
これ書いておかないと謎のユーザー(3306@cent23w)で昇格後の新マスターに
つなぎに行くようになった。
動作的にはmysql.slave_master_infoから読んでる様な気配がするんだけどなぜこうなった。。
で、mysqladmin shutdownで順番に殺してやると、たまにしか上手く行かない(´・ω・`)
マスターを落とした直後に、"ERROR: No candidate found for failover."と言われて
mysqlfailoverスクリプトが落ちる。
⇒再現条件はっきりしてない。ログにも
"WARNING Candidate cent22:3306 does not meet the requirements."
としか書いてくれないから困る。。
また時間が取れたらがんばる。
というか、GTIDベースのレプリケーションにかなりやられたので、
使う予定の人は今から使っておいた方が絶対に良いと思う。。
0 件のコメント :
コメントを投稿