InnoDB を使用した MySQL MASTER MASTER シナリオ
1 つのインスタンスでインデックスを削除すると、他のインスタンスで同じテーブルを使用できますか?
活動の順番は?次のシーケンスを想定しています。
- 最初のインスタンスで INDEX を削除
- バイナリログに追加
- 2番目のインスタンスでDROP INDEX
誰でも確認できますか?
InnoDB を使用した MySQL MASTER MASTER シナリオ
1 つのインスタンスでインデックスを削除すると、他のインスタンスで同じテーブルを使用できますか?
活動の順番は?次のシーケンスを想定しています。
誰でも確認できますか?
私は次のことが起こると信じています。
DROP INDEX
(実際に実行ALTER TABLE ... DROP INDEX
される)はマスターで実行されますこれは、最初の (マスター) マシンで が正常に完了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 がテーブルの名前を別のデータベースに変更している場合、これは元のテーブルのデータベース ディレクトリとは異なる場合があります。
InnoDB を使用した MySQL MASTER MASTER シナリオ
私の知る限り、そのようなことは不可能です。NDB を使用するか、自動インクリメント フィールドが 1/2/3/more ずつインクリメントするように構成されたマルチマスター/スレーブ環境にいる必要があります。なので後者を想定。(注: InnoDB ベースのソリューションを知っている場合は、共有してください。)
1 つのインスタンスでインデックスを削除すると、他のインスタンスで同じテーブルが使用可能になりますか?
インデックスを削除すると、インデックスが利用できなくなるだけです。テーブルではありません。それはバイナリログに書き込まれ(そして伝播され)、始められます。