2010-12-10 6 views

答えて

14

私はそう信じています。レプリケーションが動作した後、スレーブにインデックスをドロップし、必要なインデックスを作成することができます。 MySQLはテーブルを挿入したり更新したり、テーブルから選択するために必要なSQLが変更される必要がない限り、少なくとも(デフォルトでは)データをレプリケートしないので、通知する必要はありません。

ここに明らかに欠点があります。マスターにないユニークなキーを作成すると、スレーブに挿入できないマスターにデータが挿入される可能性があります。インデックスを使用するアップデートが行われた場合、それはマスター上で速く実行されるかもしれませんが、スレーブ上でテーブルスキャンを引き起こします(インデックスが手に入りません)。

スレーブに渡されるマスタ上で(インデックスを変更するなど)DDLの変更が発生した場合でも、そのスレーブには新しいインデックスが作成されます。

+0

どのようにスレーブテーブルを変更しますか? – jeffry

2

確かに、フルテキストインデックスを追加できるように、InnoDBテーブルをスレーブ上のMyISAMテーブルに複製することも一般的に考えられます。

14

私はいつもそれをする。私はに実行した問題:

  • SELECTSFORCE/USE/IGNORE INDEXを経由してインデックスを参照するには、
  • マスターにALTERたstatments内のインデックスを参照すると、レプリケーション
  • を破ることができるしてエラーになりますマスターにスレーブを促進する別のステップを追加します。非常時の場合
  • UNIQUEインデックスを使用している場合、INSERT... ON DUPLICATE KEYINSERT IGNOREまたはREPLACEのステートメントは極端なデータドリフティング/ dを引き起こしますibergence
  • 性能の差(良いか悪いか)
+0

どのようにスレーブテーブルを変更しますか? – jeffry

関連する問題