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

Data Management:ロックフリーのスキーマ変更

最終更新日:Aug 13, 2024

データ管理 (DMS) では、テーブルをロックせずにスキーマを変更できます。 これにより、テーブルロックによってビジネスがブロックされるのを防ぎ、プライマリ-セカンダリレプリケーション中にMySQLのオンラインDDL機能によって発生するレイテンシを削減します。 この機能は、新しいスキーマを使用する1つ以上の一時テーブルを作成し、フルデータと増分バイナリログデータを一時テーブルにレプリケートしてから、一時テーブルを永続テーブルとして保存します。

前提条件

  • データベースインスタンスは、DMSの安定した変更またはセキュリティコラボレーションモードで管理されます。 詳細については、「コントロールモード」をご参照ください。

  • データベースインスタンスのロックフリースキーマ変更機能が有効になっています。 詳細については、「ロックフリースキーマ変更機能の有効化」をご参照ください。

    説明

    次の例では、この機能は、シミュレートされた開発環境のApsaraDB RDS for MySQLインスタンスに対して有効になっています。

手順

次の例では、big_tableテーブルのlong_text_a列のデータ型がvarchar(1024) からtextに変更されています。

  1. 通常のユーザーとしてチケットを起票します。

    1. DMSコンソールV5.0に通常のユーザーとして ログインします。

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

      説明

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

    3. 次の表に記載されているパラメーターを設定し、送信をクリックします。

      パラメーター

      説明

      データベース

      必須。 データを変更するデータベース。 この例では、Secure Collaborationモードのpoc_devデータベースが選択されています。

      理由カテゴリ

      必須。 データ変更の理由。 これにより、後続の操作でチケットを見つけることができます。

      ビジネスの背景

      必須。 データ変更の目的または目的。 これにより、不要な通信が削減される。

      実行方法

      必須。 チケットを実行のために送信する方法。 [Last Auditor Execute] を選択します。

      影響を受ける行

      必須。 データ削除操作の影響を受けるデータ行の推定数。 影響を受ける行の実際の数を取得するには、SQL文でCOUNT関数を使用し、SQLConsoleタブでSQL文を実行します。

      変更のSQLステートメント

      必須。 データを変更するために実行するSQL文。 この例では、次のALTERステートメントが実行されます。

      ALTER TABLE `big_table`
        MODIFY COLUMN `long_text_a` text NULL AFTER `name`;
      説明

      このステートメントにより、long_text_a列のデータ型がvarchar(1024) からtextに変更されます。

      ロールバックのSQLステートメント

      オプションです。 データ変更をロールバックするために実行できるSQL文。

      利害関係者の変更

      オプションです。 データ変更に関与する利害関係者。 指定されたすべての利害関係者は、チケットの詳細を表示し、承認プロセスを支援できます。 指定されていないユーザーは、チケットの詳細を表示できません (DMS管理者とDBAを除く) 。

    4. チケットの詳細ページで、チケットの詳細を確認します。

      説明

      チケットの詳細は、[チケットの詳細] ページで確認できます。 DMSは、実行するSQL文を事前にチェックします。 事前チェック項目には、SQL文の構文、SQL文のタイプがセキュリティルールで設定したタイプと一致するかどうか、チケットを送信したユーザーの権限、スキャンする行の推定数が含まれます。

    5. チケットの詳細が確認され、事前チェックが完了したら、[承認申請] をクリックします。 表示されるメッセージで、[OK] をクリックします。

      重要

      チケットの詳細は、承認のためにチケットを提出する前にのみ変更できます。

  2. DMS管理者としてチケットを承認します。

    1. DMS管理者としてDMSコンソールV5.0 にログインします。

    2. DMSコンソールの [ホーム] ページで、チケット保留中で、マイチケットセクションにアクセスします。

    3. マイチケットページで、処理するチケットを見つけて、チケット番号をクリックします。チケット番号列を作成します。

    4. チケットの詳細パネルで、切符のデータ変更情報を確認し、承認 をクリックします

    5. 表示されるダイアログボックスで、コメントを入力し、送信 をクリックします。

  3. 通常のユーザーとしてチケットを実行します。

    1. 最初に 通常のユーザーとしてDMSコンソールV5.0にログインします。

    2. [チケットの詳細] パネルの [実行] セクションで、[変更の実行] をクリックします。 表示されるダイアログボックスで、次の表に示すパラメーターを設定し、[実行の確認] をクリックします。

      パラメーター

      説明

      実行戦略

      タスクを即時実行するか、スケジュールされた時間に実行するかを指定します。 有効な値:

      • 即時実行: DMSは、タスクを送信した直後にタスクを実行します。

      • スケジュール: DMSは、指定したスケジュール時刻にタスクを実行します。

      デフォルト値: [すぐに実行]

      トランザクション制御

      トランザクション制御を有効にするかどうかを指定します。 有効な値:

      • on: SQL文の実行に失敗した場合、同じトランザクション内で実行されたすべてのDML文がロールバックされます。 DDLステートメントはロールバックできません。

      • off: 一度に1つのSQL文が実行されます。 SQL文の実行に失敗した場合、トランザクションは停止されます。 同じトランザクションで実行された他のSQL文はロールバックされません。

      デフォルト値:off

      データバックアップ

      データをバックアップするかどうかを指定します。 有効な値:

      • on: DMSはINSERTスクリプトを生成し、UPDATEまたはDELETEステートメントの実行時に影響を受けるデータをバックアップします。

      • off: 前のデータのバックアップスクリプトは生成されません。

      デフォルト値 : on。

      説明

      [実行の確認] をクリックすると、DMSはタスクの実行を開始します。

タスクの進行状況を表示し、スキーマを確認する

  1. DMS管理者として、[基本情報] セクションで変更するデータベースの名前にポインターを移動します。 表示されるメニューで、[クエリ] をクリックします。

    SQL Consoleのページに自動的にリダイレクトされます。

  2. [SQLコンソール] タブで、SQLエディターにSQLクエリステートメントを入力します。 次に、SQLエディターの上部にある [実行] をクリックします。

    たとえば、次のSQL文を入力して、現在のデータベースのテーブルを照会できます。

    SHOW TABLES;
    説明

    DMSがテーブルをロックせずにテーブルのスキーマを変更すると、2つの一時テーブルが生成されます。

  3. 上部のナビゲーションバーで、O&M > タスク を選択します。

    説明

    DMSコンソールをシンプルモードで使用する場合は、左上隅の2023-01-28_15-57-17.pngアイコンの上にポインターを移動し、[すべての機能] > [O&M] > [タスク] を選択します。

  4. 管理するタスクのタスク番号をクリックします。 [実行の詳細] ダイアログボックスが表示されます。

  5. 操作列で進捗状況をクリックします。

  6. Lock-Free構造変更メッセージで、タスクの進行状況情報を表示します。

  7. タスクが完了したら、スキーマを確認します。

    big_tableテーブルのスキーマが変更され、一時テーブルが削除されます。