2010-12-01 5 views
4

多くの人がマスタースレーブを使用すると、レプリケーションを使用して新しい一時マスターをセットアップし、再配置を停止してからロールを交換する再び始める。私はスタックオーバーフローで見つかった例(下記)を見つけました。MYSQLレプリケーションを使用してスキーマの変更とテーブルの操作を高速化する

  1. セットアップスレーブ
  2. 停止・レプリケーション。
  3. は、スレーブがマスタ
  4. スワップマスターとスレーブをキャッチアップしてみましょう、そうスレーブが、これは非常によく、すべてで変更 構造と最小限のダウンタイム

と本番サーバになり、スレーブ上でALTERを作りますしかし、私はステップ4を理解していないそれは私には明らかではありません。

誰かが手続きを明確に説明できるのだろうかと思います。

答えて

1

は、スレーブがマスタ

スレーブがマスタスレーブ意味に追いつくみましょうが、マスターの背後に0秒で追いつくみましょうする必要があります。

これは、レプリケーションが(テーブルを変更するために)ある時点で停止した場合、
最後のレプリケーション時間を登録することを意味します。

レプリケーションが再開すると、
は、マスタの現在の書き込みとスレーブの最後の複製時間を比較します。

しかし、手順はの脆弱性と思われます。

更新スレーブの 予想スキーマは、と同じです。

イベント列の種類が変更された場合、列が削除された
は、レプリケーションが失敗する可能性があります。

+0

古いスキーマのデータを新しいものに複製するにはどうしたらいいのですか?どのように手続きを思いつくのか? –

+0

私は何かが欠けていない限り、スクリプトだけが仕事をすることができると思いますか? –

+0

@andicrook - ダウンタイムが許せば、マスターで直接alterを実行します(alterはテーブルを読み書きからブロックします)。mysqlは変更を各スレーブに複製します。あなたのデータベースの大きさはどれくらいですか?現在、どのレプリケーションを実行していますか? – ajreal

0

seconds_behind_masterは0

+0

はい、古いデータは新しいスキーマに複製できません –

関連する問題