すべてのプロダクト
Search
ドキュメントセンター

:ロックフリーDDL操作の実行

最終更新日:Aug 16, 2024

データ管理 (DMS) は、ロックフリーDDL機能を提供します。 この機能を使用して、テーブルをロックすることなくスキーマを変更できます。 これにより、スキーマの変更によって引き起こされるテーブルロックの影響をビジネスが受けないようにします。 これにより、ネイティブオンラインDDL操作を使用してスキーマが変更された場合のプライマリデータベースとセカンダリデータベース間の同期遅延も防止されます。 このトピックでは、ロックフリーDDL操作を実行する方法について説明します。

前提条件

  • データベースタイプは、ApsaraDB RDS for MySQLPolarDB for MySQLApsaraDB 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 CategoryExecution Methodパラメーターなど) を設定する必要があります。 詳細については、「ロックフリーDML操作の実行」トピックの「手順」セクションをご参照ください。

  1. DMSコンソールV5.0 にログインします。

  2. 上部のナビゲーションバーで、データベース开発 > データ変更 > ロックフリーの変更を選択します。

    説明

    DMSコンソールをシンプルモードで使用する場合は、コンソールの左上隅にある2023-01-28_15-57-17.pngアイコンの上にポインターを移動し、[すべての機能] > [データベース開発] > [データ変更] > [ロックフリー変更] を選択します。

  3. 表示されるページで、パラメーターを設定します。

    パラメーター

    説明

    データベース

    ドロップダウンリストから、スキーマ変更を実行するデータベースを選択します。 キーワードを入力してデータベースを検索することもできます。 1つ以上のデータベースを指定できます。

    • 権限を持つ: 変更権限を持つデータベースのみを検索または選択できます。

    • すべて: メタデータアクセス制御が有効になっているデータベースを除くすべてのデータベースを検索または選択できます。

      説明

      データベースに対する変更権限がない場合は、上部のナビゲーションバーで [セキュリティと仕様] > [権限センター] > [権限チケット] を選択します。 [権限チケット] タブで、右上隅の [アクセス適用] > [データベース権限] を選択します。 [アクセス適用チケット] ページで、必要な権限を申請します。

    変更のSQLステートメント

    フィールドにALTER TABLEOPTIMIZEなどのDDLステートメントを入力します。

    説明

    DMLステートメントを入力して、ロックフリーのDML操作を実行することもできます。 詳細については、「ロックフリーDML操作の実行」をご参照ください。

  4. 送信 をクリックします。

    DMSはSQL文を事前にチェックします。 事前チェックが失敗した場合は、事前チェックステップで [SQL文の変更] をクリックしてSQL文を変更し、再試行します。

  5. チケットが承認されたら、変更の実行で、実行ステップを実行します。

  6. タスクの次の表に示すパラメーターを設定します。

    パラメーター

    説明

    実行戦略

    • 即時実行: これはデフォルト値です。 [実行の確認] をクリックすると、タスクがすぐに実行されます。

    • スケジュール: このオプションを選択した場合、タスクの開始時間を指定する必要があります。 [実行の確認] をクリックすると、指定した時点でタスクが実行されます。

    終了時刻の指定

    • on: タスクの終了時刻を指定します。 タスクが完了したかどうかに関係なく、指定された終了時刻にタスクを停止します。 これにより、ピーク時にタスクがビジネスに影響を与えるのを防ぎます。

    • off: これはデフォルト値です。

  7. 実行の確認 をクリックします。

    説明

    中断したタスクを再起動できます。

    • [実行] ステップで、タスクのステータス、設定、および詳細を表示できます。 タスクのスケジューリングログを表示することもできます。

    • または、上部のナビゲーションバーで [O&M] > [タスク] を選択します。 [タスク] タブでタスクを見つけ、タスクの進行状況を表示します。 詳細については、「ロックフリースキーマ変更タスクの進行状況の表示」をご参照ください。

指定されたデータベースインスタンスに対してロックフリースキーマ変更機能を有効にすると、DMSは、特定の種類のチケット (このトピックで説明するチケットの種類を含む) を送信するとき、または特定の種類のタスクを実行するときに、この機能を優先的に適用します。 詳細については、以下のトピックをご参照ください。