カスタム検索

2009年2月27日金曜日

mySQLレプリケーションのセットアップ

もっぱらpostgresだったのだけんども食わず嫌いも良くないのでmySQLをもしゃもしゃしてみた。
このへんを参考に。

・セットアップ
Macはパッケージがあるので簡単セットアップで完了。
postgresでいう所のpgAdminはmySQL GUI TOOLというのがある。

サーバ管理系とクエリ/データ処理系とで以下の二つに別れている。

・MySQL Administrator
DBの起動/停止、DBの作成、テーブルの作成、ユーザの作成、バックアップ/リストア等がGUIで出来るツール

・MySQL QueryBrowser
クエリの実行、テーブルの中身をざっくりみたい場合もこっち


サクっと起動した所で、レプリケーションの設定。
スレーブ側からマスタへ接続する為のユーザを作成。

mysql> GRANT REPLICATION SLAVE ON *.* TO repl@'192.168.20.0/255.255.255.0' IDENTIFIED BY 'xmldo';

repl / xmldo というユーザが作成される。
この接続は 192.168.20.0/24 からのみ接続可能。
MySQL Administratorから作る事も出来る。

マスタ側はログをバイナリで出力する必要がある。
また、レプリケーションする際には、すべてのDBへ固有のserver-idが必要となる。
マスター側のmy.cnf

[mysqld]
server-id=10
log-bin


スレーブ側のmy.cnf

[mysqld]
server-id=11
master-host=192.168.20.15
master-user=repl
master-password=xmldo


設定ファイルを書き換えて再起動でレプリケーション完成。あら、アッサリなのね。
ではトラブルを想定して実験をしてみましょう。

・スレーブが停止中にマスターにデータが書き込まれ、その後スレーブが復帰。
>スレーブ復旧後に、追加したデータ問題なく挿入されました。

・マスターが停止中にスレーブにデータが書き込まれ、その後マスターが復帰。
>標準のレプリケーションはマスタ/スレーブ方式なので、復旧しない。

なんらかのトラブルでスレーブを使う事になったら、マスタ復旧時にはスレーブをバックアップ>マスタへリストアしてやる必要がある、と。
ここでマルチマスタ方式のmySqlClusterを使うのだろうけど、とりあえずバックアップをとっておきたいの場合はこれでも十分だろう。
(なんといっても設定が簡単だし・・・)

データだけを別システムで流用(リードオンリーで)するような場合は良いっすね。

0 件のコメント: