データ管理 (DMS) は、ロックフリーDDL機能を提供します。 この機能を使用して、テーブルをロックすることなくスキーマを変更できます。 これにより、スキーマの変更によって引き起こされるテーブルロックの影響をビジネスが受けないようにします。 これにより、ネイティブオンラインDDL操作を使用してスキーマが変更された場合のプライマリデータベースとセカンダリデータベース間の同期遅延も防止されます。 このトピックでは、ロックフリーDDL操作を実行する方法について説明します。
前提条件
データベースタイプは、ApsaraDB RDS for MySQL、PolarDB for MySQL、ApsaraDB MyBase for MySQL、または他のソースのMySQLデータベースです。 DMSのロックフリーDDL機能は、PolarDB-Xデータベース、PolarDB-Xデータベース、ApsaraDB RDS for PostgreSQLなど、MySQL 1.0ではない2.0をサポートしていません。
説明他のソースからのデータベースは、他のクラウドサービスプロバイダーからのデータベースまたは自己管理データベースを参照します。
データベースエンジンは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操作を実行するテーブルに、主キーまたは一意キーフィールドが含まれていることを確認します。 ロックフリーのスキーマ変更を実行すると、プライマリキーまたは一意のキーフィールドを使用して、テーブルからデータのすべてまたは一部をコピーし、増分データを同期します。
説明テーブルにプライマリキーまたは一意キーフィールドのみが含まれている場合は、スキーマの変更中にプライマリキーまたは一意キーフィールドが更新されないようにしてください。 それ以外の場合、スキーマ変更タスクは失敗します。
テーブル名の長さは最大56文字です。
手順
この例では、Stable Changeモードで管理されているデータベースインスタンスを使用します。 Security Collaborationモードで管理されているデータベースインスタンスに対してロックフリーDDL操作を実行する場合は、次の表に示すパラメーター以外のパラメーター (Reason CategoryやExecution Methodパラメーターなど) を設定する必要があります。 詳細については、「ロックフリーDML操作の実行」トピックの「手順」セクションをご参照ください。
DMSコンソールV5.0 にログインします。
上部のナビゲーションバーで、 を選択します。
説明DMSコンソールをシンプルモードで使用する場合は、コンソールの左上隅にあるアイコンの上にポインターを移動し、
を選択します。表示されるページで、パラメーターを設定します。
パラメーター
説明
データベース
ドロップダウンリストから、スキーマ変更を実行するデータベースを選択します。 キーワードを入力してデータベースを検索することもできます。 1つ以上のデータベースを指定できます。
権限を持つ: 変更権限を持つデータベースのみを検索または選択できます。
すべて: メタデータアクセス制御が有効になっているデータベースを除くすべてのデータベースを検索または選択できます。
説明データベースに対する変更権限がない場合は、上部のナビゲーションバーで
を選択します。 [権限チケット] タブで、右上隅の を選択します。 [アクセス適用チケット] ページで、必要な権限を申請します。
変更のSQLステートメント
フィールドに
ALTER TABLE
やOPTIMIZE
などのDDLステートメントを入力します。説明DMLステートメントを入力して、ロックフリーのDML操作を実行することもできます。 詳細については、「ロックフリーDML操作の実行」をご参照ください。
送信 をクリックします。
DMSはSQL文を事前にチェックします。 事前チェックが失敗した場合は、事前チェックステップで [SQL文の変更] をクリックしてSQL文を変更し、再試行します。
チケットが承認されたら、変更の実行で、実行ステップを実行します。
タスクの次の表に示すパラメーターを設定します。
パラメーター
説明
実行戦略
即時実行: これはデフォルト値です。 [実行の確認] をクリックすると、タスクがすぐに実行されます。
スケジュール: このオプションを選択した場合、タスクの開始時間を指定する必要があります。 [実行の確認] をクリックすると、指定した時点でタスクが実行されます。
終了時刻の指定
on: タスクの終了時刻を指定します。 タスクが完了したかどうかに関係なく、指定された終了時刻にタスクを停止します。 これにより、ピーク時にタスクがビジネスに影響を与えるのを防ぎます。
off: これはデフォルト値です。
実行の確認 をクリックします。
説明中断したタスクを再起動できます。
[実行] ステップで、タスクのステータス、設定、および詳細を表示できます。 タスクのスケジューリングログを表示することもできます。
または、上部のナビゲーションバーで ロックフリースキーマ変更タスクの進行状況の表示」をご参照ください。
を選択します。 [タスク] タブでタスクを見つけ、タスクの進行状況を表示します。 詳細については、「
指定されたデータベースインスタンスに対してロックフリースキーマ変更機能を有効にすると、DMSは、特定の種類のチケット (このトピックで説明するチケットの種類を含む) を送信するとき、または特定の種類のタスクを実行するときに、この機能を優先的に適用します。 詳細については、以下のトピックをご参照ください。