データ管理 (DMS) は、ロックフリーの DDL 機能を提供します。この機能を使用すると、テーブルをロックせずにスキーマを変更できます。これにより、スキーマの変更によって発生するテーブルのロックによるビジネスへの影響を防ぎます。また、ネイティブのオンライン DDL 操作を使用してスキーマを変更する場合に、プライマリ データベースとセカンダリ データベース間の同期遅延を防ぎます。このトピックでは、ロックフリーの DDL 操作を実行する方法について説明します。
前提条件
データベースの種類は、ApsaraDB RDS for MySQL、PolarDB for MySQL、ApsaraDB MyBase for MySQL、またはその他のソースの MySQL データベースです。
説明その他のソースのデータベースとは、他のクラウド サービス プロバイダーまたは自己管理データベースのデータベースを指します。
データベースエンジンは InnoDB、RocksDB、または X-Engine です。
データベースでバイナリロギング機能が有効になっています。
説明デフォルトでは、PolarDB for MySQL クラスタではバイナリロギング機能は無効になっています。
データベースインスタンスは、DMS で安定的な変更モードまたはセキュリティコラボレーションモードで管理されています。詳細については、「インスタンスの制御モードを表示する」をご参照ください。
データベースインスタンスで ロックフリーのスキーマ変更機能 が有効になっています。
使用上の注意
読み取りおよび書き込み権限を持つデータベースアカウント、または特権データベースアカウントを使用する必要があります。使用するデータベースアカウントに必要な権限がない場合は、次のいずれかの操作を実行できます。
データベースアカウントに権限を付与します。詳細については、「MySQL データベースのユーザー権限を管理する」をご参照ください。
説明データベースアカウントに ALL PRIVILEGES 権限、または以下の読み取りおよび書き込み権限を付与します。
ALTER、CREATE、DELETE、DROP、INDEX、INSERT、LOCK TABLES、SELECT、TRIGGER、UPDATE、REPLICATION CLIENT、および REPLICATION SLAVE 権限。
データベースアカウントを変更します。詳細については、「データベースインスタンスの変更」をご参照ください。
ロックフリー DDL 操作を実行するデータベースに十分なディスク容量があることを確認してください。これは、DMS が一時テーブルを作成し、元のテーブルのデータを一時テーブルにコピーする必要があるためです。データベースインスタンスの使用可能なディスク容量が、ロックフリー DDL 操作を実行するテーブルのサイズの 2 倍以上であることを確認する必要があります。データベースインスタンスのディスク容量が不足している場合、インスタンスはロックされます。詳細については、「データベースインスタンスのパフォーマンス詳細を表示する」をご参照ください。
ロックフリー DDL 操作を実行するテーブルに、プライマリキーまたは一意キーのフィールドが含まれていることを確認してください。ロックフリー スキーマ変更を実行すると、プライマリキーまたは一意キーフィールドを使用して、テーブルからデータの全部または一部がコピーされ、増分データが同期されます。
説明テーブルにプライマリキーフィールドまたは一意キーフィールドのみが含まれている場合は、スキーマ変更中にプライマリキーフィールドまたは一意キーフィールドが更新されないようにしてください。そうでない場合、スキーマ変更タスクは失敗します。
WordPress の設定中に問題が発生した場合は、「トラブルシューティング ガイド」をご参照ください。
DMS のロックフリースキーマ変更機能は、PolarDB-X 1.0、PolarDB-X 2.0、ApsaraDB RDS for PostgreSQL などの MySQL 以外のデータベースをサポートしていません。
手順
この例では、セキュリティコラボレーションモードで管理されているデータベースインスタンスを使用します。
- DMS コンソール V5.0 にログインします。
上部のナビゲーションバーで、 を選択します。
説明DMS コンソールをシンプルモードで使用している場合は、コンソールの左上隅にある
アイコンにポインターを移動し、 を選択します。
表示されるページで、次のパラメーターを構成します。
パラメーターの詳細については、「手順」をご参照ください。
パラメーター
説明
データベース
ドロップダウンリストから、スキーマ変更を実行するデータベースを選択します。キーワードを入力してデータベースを検索することもできます。1 つ以上のデータベースを指定できます。
権限あり: 変更権限を持つデータベースのみを検索または選択できます。
すべて: メタデータアクセス制御が有効になっているデータベースを除くすべてのデータベースを検索または選択できます。
説明データベースに対する変更権限がない場合は、上部のナビゲーションバーで
を選択します。[権限チケット] タブで、右上隅にある を選択します。[アクセス申請チケット] ページで、必要な権限を申請します。
実行方法
チケットの実行方法。有効な値:
チケット申請者が承認時に実行
承認時に自動的に実行
最後の承認者が実行
説明DMS 管理者の場合は、構成管理構成管理 ページで実行方法を変更できます。詳細については、「」をご参照ください。
モジュールの影響を受ける行
データ変更の影響を受ける可能性のあるデータ行の推定数。
変更用の SQL 文
フィールドに
ALTER TABLE
やOPTIMIZE
などの DDL 文を入力します。説明DML 文を入力して、ロックフリー DML 操作を実行することもできます。詳細については、「ロックフリー DML 操作を実行する」をご参照ください。
[送信] をクリックします。
DMS は SQL 文の事前チェックを実行します。事前チェックが失敗した場合は、[事前チェック] ステップの [変更用の SQL 文] をクリックして SQL 文を変更し、再試行してください。
チケットが承認されたら、[変更の実行][実行] ステップの をクリックします。
タスクについて、次の表に示すパラメーターを構成します。
パラメーター
説明
実行戦略
すぐに実行: これはデフォルト値です。[実行の確認] をクリックすると、タスクはすぐに実行されます。
スケジュール: このオプションを選択した場合は、タスクの開始時刻を指定する必要があります。[実行の確認] をクリックすると、タスクは指定された時刻に実行されます。
説明実際の実行時刻は、指定された実行時刻から ± 1 分のずれが生じる場合があります。
終了時刻の指定
タスクの終了時刻を指定します。タスクが完了しているかどうかに関係なく、システムは指定された終了時刻にタスクを停止します。これにより、ピーク時にタスクがビジネスに影響を与えるのを防ぎます。
説明実際のタスク終了時刻は、指定された終了時刻から ± 1 分のずれが生じる場合があります。
プライマリ/セカンダリノードチェック
この機能を有効にすると、プライマリインスタンスとセカンダリインスタンス間のデータ同期を継続的に維持し、高可用性と迅速なエラー回復を実現できます。
カナリアリリース種別
SQL 文を実行するためのポリシー。有効な値:
カナリアリリースなし: DMS はタスク内のすべての SQL 文を自動的に実行します。
最初の SQL 文の実行後に一時停止: 最初の SQL 文が正常に実行されると、DMS は SQL の実行を自動的に一時停止します。続行する必要がある場合は、[再試行] をクリックします。その後、DMS は一時停止することなく、残りの SQL 文をすぐに実行します。
SQL 文の実行後に一時停止: DMS は各 SQL 文の実行後に一時停止します。次の SQL 文を実行するには、[再試行] を手動でクリックする必要があります。
[実行の確認] をクリックします。
説明DMS がタスクを実行しているときに、いつでもタスクを一時停止できます。一時停止されたタスクは、再開時に最初から再起動されます。
[実行] ステップで、タスクのステータス、設定、詳細を表示できます。タスクのスケジューリングログを表示することもできます。
または、上部のナビゲーションバーで ロックフリースキーマ変更タスクの進捗状況を表示します。
を選択することもできます。[タスク] タブで、タスクを見つけて、
指定したデータベースインスタンスに対してロックフリースキーマ変更機能を有効にすると、特定の種類のチケット (このトピックで説明されているチケットの種類を含む) を送信したり、特定の種類のタスクを実行したりするときに、DMS はこの機能を優先的に適用します。詳細については、以下のトピックをご参照ください。