ホームページ  >  記事  >  データベース  >  テーブルをロックせずに巨大な MySQL 本番テーブルにインデックスを作成するにはどうすればよいですか?

テーブルをロックせずに巨大な MySQL 本番テーブルにインデックスを作成するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-31 00:25:02675ブラウズ

How to Create an Index on a Huge MySQL Production Table Without Locking the Table?

テーブル ロックを使用せずに巨大な MySQL 本番テーブルにインデックスを作成する

問題:

インデックスを作成する必要があります

従来の知識 (2015):

5.6 より前の MySQL バージョンでは、進行中の操作を中断することなく、本番環境の大規模な MySQL テーブルでインデックスを作成します。 MyISAM または InnoDB テーブルは書き込み操作をブロックします。

MySQL 5.6 (2017) のオンライン インデックス更新:

MySQL 5.6 以降はオンライン インデックス更新をサポートしており、追加または読み取りまたは書き込みをブロックせずにインデックスを削除します。

ダウンタイムなしでスキーマを更新:

MySQL 5.6 以降を使用できない場合は、次の方法を使用してスキーマを更新できます。ダウンタイムなし:

  1. 循環マスター: 新しいマスター サーバーを起動し、既存のマスターからの書き込みをレプリケートします。
  2. 新しいマスターでスキーマ更新を実行します。 : 新しいマスターでスキーマを変更します。
  3. クライアントの交換: すべてのクライアントを古いマスターから新しいマスターにアトミックに移行します。
  4. 古いマスターの更新: 古いマスターで同じプロセスを繰り返し、セカンダリ マスターとして最新の状態にします。

Percona の pt-online-schema-change ツール:

このツールは、操作をブロックせずにテーブル スキーマを変更するための代替方法を提供します。必要な構造を持つ新しいテーブルを作成し、スキーマを変更し、元のテーブルからデータを徐々にコピーしてから置き換えます。

Amazon RDS:

Amazon RDSリードレプリカを作成し、レプリカでスキーマを変更し、レプリカを新しいマスターに昇格できるため、プロセスが簡素化されます。このアプローチにより、ダウンタイムが最小限に抑えられ、カットオーバー プロセスが簡素化されます。

以上がテーブルをロックせずに巨大な MySQL 本番テーブルにインデックスを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。