MySQLのレプリケーションで、マスターにだけ更新をかける方法。

もしくは、スレーブにだけ更新処理をさせるSQL文の書き方(オプション)などがありますでしょうか。

通常は、レプリケーションをしている状態で
メンテナンスや、管理上の都合で、マスターに対して更新処理をした場合に
スレーブに反映してほしくないSQLの書き方はあるでしょうか。

たとえば、テーブルを作成する場合に、マスターは、InnoDB型、スレーブは、MyISAMにしたい場合に
マスターでまずMyISAMでテーブルをつくり、スレーブに反映させ
マスターだけ、InnoDBに変更することをしたいのです。

今は、個別にスレーブに接続して、型を変えていますが
スレーブの数が多くなってきて作業が煩雑になっています。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2009/02/11 00:30:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:shintabo No.1

回答回数45ベストアンサー獲得回数10

# 実際やってはないのですが、こんなのはどうでしょうか?

# mysql

CREATE TABLE xxx ENGINE=MyISAM to MASTER

# shell

for s in `slave01 slave02 slave03`

do

ssh -f xxx@s 'echo "STOP SLAVE;SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;" | /usr/local/mysql/bin/mysql -uxxx -p'

done

# mysql

ALTER TABLE xxx ENGINE=InnoDB to MASTER

# shell

for s in `slave01 slave02 slave03`

do

ssh -f xxx@s 'echo "START SLAVE;" | /usr/local/mysql/bin/mysql -uxxx -p'

done

# ENGINE変える=すべて止まってる状態

# なんてのを勝手に想像していますが・・・

id:bushimichi

すいません。説明不足でした。

稼動中の Master Slave 構成に対して、新たにテーブルを追加するような場合を想定しているため

レプリケーションを止めるということはできません。

2009/02/04 01:45:24

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません