2010年3月15日月曜日

MySQLでマルチマスタレプリケーション

スズキです。

二つのサーバのどちらを更新しても、そのどちらにも反映される、
MySQLのマルチマスタレプリケーションを試してみました。

ただ、マルチマスタといっても、お互いがレプリケーションしあうことで
実現しているので、当然、反映までの遅延はあり、
両サーバを同時に更新する場合は、そのあたりを考慮しなければいけません。
(AUTO_INCREMENTとかはヤバイと思います)

ということなので、結局は、どちらか一方にアクセスして、それが故障したら、
もう一方にアクセスするって用途(HA)になるんじゃないか?と思ってます。

やり方は簡単で、下記で紹介しているレプリケーションの設定を、
サーバを役割を逆にした状態でも設定するといった感じになります。
http://blog.suz-lab.com/2009/07/mysql.html

つまり、両方のサーバで、"log-bin"をとり、また、両方のサーバで、
お互いをマスタにして、"slave start"するってことになります。

実際に、一方のサーバで、以下のようなテーブルを作成するSQLを実行すると、
もう一方のサーバにも同じテーブルが作成されていることが確認でき、

--------【SQL】--------
CREATE TABLE hoge_sample (
  sample_id INTEGER NOT NULL AUTO_INCREMENT,
  sample_name VARCHAR(255) NOT NULL,
  sample_height DOUBLE NOT NULL,
  PRIMARY KEY (sample_id)
);
--------

もう一方のサーバで、以下のようなデータを挿入するSQLを実行すると、
反対のサーバにも、同じデータが挿入されていることが確認できます。

--------【SQL】--------
INSERT INTO hoge_sample (
  sample_name,
  sample_height
) VALUES (
  'suz-lab',
  165.0
);
--------

これで、MMMがすすめられる。
http://blog.suz-lab.com/2010/03/centosmulti-master-replication-manager.html

--------
http://www.suz-lab.com

0 コメント: