問題ステートメント:
大規模な MySQL プロダクション テーブルにインデックスを作成するテーブルがデータベースのロックアウトを引き起こす可能性があります。これにより、インデックス作成プロセス中にデータベースへの中断のないアクセスを確保することが困難になります。
解決策:
MySQL 5.6 以降、データベースは操作中の増分インデックス更新をサポートします。これは、インデックスの作成または削除を読み取りと書き込みと同時に実行できることを意味し、ブロックのリスクを軽減し、データの整合性を確保します。
MySQL 5.5 以前のバージョンでは、UPDATE 操作アクティブなインデックス更新のあるテーブルではブロックが発生します。これはパフォーマンスに大きな影響を与え、停止を引き起こす可能性があります。
これらの障害を回避するには、次のアプローチを検討してください。
1.循環マスター サーバー:
2. Percona の pt-online-schema-change:
3. RDS リードレプリカ プロモーション:
Amazon の RDS を使用している場合は、読み取り専用レプリカを作成し、そのレプリカに対してインデックス更新を実行できます。完了したら、レプリカを新しいマスターに昇格させます。このアプローチでは、フェイルオーバーとデータ移行を自動化することでプロセスが簡素化されます。
注: このアプローチでは、更新されたデータベース インスタンスに再接続するためにアプリケーションを再起動する必要があります。
以上が操作を中断せずに巨大な MySQL 本番テーブルにインデックスを作成するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。