PolarDB for MySQL は、Online Copy DDL 機能を導入しました。この機能は、MODIFY COLUMN や標準テーブルとパーティションテーブル間の変換など、実行期間全体にわたってメタデータロック (MDL) を保持する従来の Copy DDL 操作によって引き起こされるビジネスの中断を軽減します。
背景情報
標準の Copy DDL 実行中、MySQL は MDL-SNW (Shared No Write) ロックを保持します。これにより、テーブルに対するすべての書き込み操作 (INSERT/UPDATE/DELETE) が継続的にブロックされ、接続の滞留を引き起こし、深刻な場合にはシステム障害につながる可能性があります。Online Copy DDL は、データコピーフェーズ中のロックメカニズムを最適化します。データ整合性を確保しながら、同時読み取り/書き込み操作を可能にし、DDL実行中のビジネス可用性を大幅に向上させます。
適用範囲
PolarDB バージョン 8.0.2 およびリビジョン 8.0.2.2.33.1 以降。クラスターバージョンは、バージョン番号のクエリによって確認します。
Online Copy DDL 機能は現在、段階的リリース中です。この機能を使用するには、クォータセンターにアクセスします。クォータ ID polarm_82_online_copy_ddl を使用してクォータ名を見つけます。対応する [操作] 列で、[リクエスト] をクリックして機能を有効にします。リクエスト時には、有効にするクラスター ID (例: pc-xxx) を指定してください。
制限事項
サポートされる操作:
標準テーブルとパーティションテーブル間の変換。
MODIFY COLUMN文。カラム位置の同時変更はサポートされていません。
サポートされていない操作またはオブジェクト:
JSON型カラムを含むテーブル。
空間インデックス (SPATIAL INDEX) を含むテーブル。
グローバルセカンダリインデックス (GSI) を含むテーブル。
ハイブリッドパーティションテーブル。
テーブルに対して
LOCK TABLESを実行したセッション。ALGORITHM=COPYとLOCK=SHAREDまたはLOCK=EXCLUSIVEを明示的に指定する DDL 文。
DDL 操作を実行する前に、EXPLAIN DDL 機能を使用して、現在の DDL 操作が Online Copy DDL をサポートしているかどうかを判断してください。
使用方法
まず、loose_polar_support_online_copy_ddl_algorithm パラメーターを設定して、Online Copy DDL 機能を有効にします。MODIFY COLUMN 文の場合は、loose_polar_support_online_copy_ddl_algorithm_for_modify パラメーターも有効にしてください。詳細な手順については、「クラスターパラメーターとノードパラメーターの設定」をご参照ください。パラメーターの説明は次のとおりです。
パラメーター | レベル | 説明 |
| グローバル | Online Copy DDL のメインスイッチ。有効値:
|
| グローバル |
|
方法1: アルゴリズムを明示的に指定する (推奨)
ALGORITHM=COPY, LOCK=NONE を指定して、Online Copy DDL の使用を強制します。
CREATE TABLE t(a int);
ALTER TABLE t MODIFY COLUMN a BIGINT DEFAULT NULL, ALGORITHM=COPY, LOCK=NONE;上記の文を使用し、ERROR 1846 (0A000): LOCK=NONE is not supported. Reason: COPY algorithm requires a lock. Try LOCK=SHARED. というエラーが返された場合、現在のカラム型変更操作は Online Copy DDL アルゴリズムをサポートしていません。loose_polar_support_online_copy_ddl_algorithm パラメーターが有効になっていることを確認し、制限事項を注意深く確認してください。
方法2: 最適なアルゴリズムを自動的に選択する (デフォルトの動作)
アルゴリズムを指定しない場合、または DEFAULT を使用する場合、システムは最適な実行方法を自動的に選択します。
-- Method 1: Explicit DEFAULT
ALTER TABLE t MODIFY COLUMN a BIGINT DEFAULT NULL, ALGORITHM=DEFAULT, LOCK=DEFAULT;
-- Method 2: Omit completely (equivalent)
ALTER TABLE t MODIFY COLUMN a BIGINT DEFAULT NULL;システムは最初に Online Copy DDL を試行します。条件が満たされない場合、テーブルをロックする従来の Copy DDL に自動的にフォールバックします。これにより、DDL が正常に完了することが保証されます。