0

InnoDB を使用した MySQL MASTER MASTER シナリオ

1 つのインスタンスでインデックスを削除すると、他のインスタンスで同じテーブルを使用できますか?

活動の順番は?次のシーケンスを想定しています。

  1. 最初のインスタンスで INDEX を削除
  2. バイナリログに追加
  3. 2番目のインスタンスでDROP INDEX

誰でも確認できますか?

4

2 に答える 2

0

私は次のことが起こると信じています。

  • あなたのDROP INDEX(実際に実行ALTER TABLE ... DROP INDEXされる)はマスターで実行されます
  • ALTER が正常に完了すると、ステートメントがバイナリログに追加され、スレーブで実行されます

これは、最初の (マスター) マシンで が正常に完了ALTER TABLEするまで、他のマシンの が開始されないことを意味します。ALTER TABLE

いずれかのマシンで が実行されている間ALTER TABLE、テーブルはしばらくの間読み取り可能であり、その後、MySQL が最初にテーブルのコピーを内部的に作成してから変更を適用するため、読み取り/書き込みができなくなります。

http://dev.mysql.com/doc/refman/5.0/en/alter-table.htmlから

ほとんどの場合、ALTER TABLE は、元のテーブルの一時的なコピーを作成することによって機能します。コピーに対して変更が実行され、元のテーブルが削除され、新しいテーブルの名前が変更されます。ALTER TABLE の実行中、元のテーブルは他のセッションから読み取ることができます。テーブルへの更新と書き込みは、新しいテーブルの準備が整うまで停止され、更新が失敗することなく新しいテーブルに自動的にリダイレクトされます。一時テーブルは、新しいテーブルのデータベース ディレクトリに作成されます。ALTER TABLE がテーブルの名前を別のデータベースに変更している場合、これは元のテーブルのデータベース ディレクトリとは異なる場合があります。

于 2011-06-08T01:18:27.687 に答える
0

InnoDB を使用した MySQL MASTER MASTER シナリオ

私の知る限り、そのようなことは不可能です。NDB を使用するか、自動インクリメント フィールドが 1/2/3/more ずつインクリメントするように構成されたマルチマスター/スレーブ環境にいる必要があります。なので後者を想定。(注: InnoDB ベースのソリューションを知っている場合は、共有してください。)

1 つのインスタンスでインデックスを削除すると、他のインスタンスで同じテーブルが使用可能になりますか?

インデックスを削除すると、インデックスが利用できなくなるだけです。テーブルではありません。それはバイナリログに書き込まれ(そして伝播され)、始められます。

于 2011-06-08T00:50:49.370 に答える