MySQL 5.6で使えるGTIDの機能を使うと、MHAみたいなことがMySQL Workbench付属の
mysqlfailoverっていうユーティリティで出来るようになるよ!
ということで、試してみるメモ。
まずはVirtualBoxに5.6.7を3台浮かせる。。
_| ̄|○ < 3台は重いなー。。
my.cnfに↓を設定。
log-bin=bin
log-slave-update
gtid-mode = ON
disable-gtid-unsafe-statements
肝心なのはgtid-mode=ONだけだけど、
他のオプションも書いておかないと、
`gtid-mode=ONの時はこれつけないとダメだよ!'って怒られてmysqldが起動しなくなる(´・ω・)
GTIDを有効にしたら、レプリケーションを構成しておく。
mysql> CHANGE MASTER TO MASTER_HOST='cent21',MASTER_USER='repl',MASTER_AUTO_POSITION=1;
MASTER_AUTO_POSITION=1でGTIDを使ったレプリケーションを構築する、らしい。
GTIDを使うので、バイナリログファイル名もポジションも要らなくなる。
スレーブ側で保持している「最後に適用したGTID」の次のGTIDを探して、
それを含むバイナリログとポジションを自動設定してくれる、という様な動きっぽい。
ハマったのは、
121019 10:52:47 [ERROR] Slave I/O: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: 1593
と言われたこと。
サーバIDちゃんと別のにしてるのに! と思ったら、
server_uuidという値をdatadir/auto.cnfに書き込んでいた。
(datadir以下をまるっとマスターからコピーしていたので、これもコピーされたんだ)
これを一度削除して再起動すると、auto.cnfが再作成されてちゃんとユニークになった。
取り敢えずここまで。。
【2012/10/23 12:15】
色々ごにょごにょしていて(やっと)気付いたんだけれど、
disable-gtid-unsafe-statementsを有効にするとトランザクション非対応なテーブルに対する更新を
一切合切拒否る様になる。
つまり、InnoDBだけ更新できて、MyISAMやMemoryはダメ。
http://dev.mysql.com/doc/refman/5.6/en/replication-options-gtids.html
disられてるなぁMyISAM。。(つд`)
0 件のコメント :
コメントを投稿