データ管理 (DMS) では、テーブルをロックせずにスキーマを変更できます。 これにより、テーブルロックによってビジネスがブロックされるのを防ぎ、プライマリ-セカンダリレプリケーション中にMySQLのオンラインDDL機能によって発生するレイテンシを削減します。 この機能は、新しいスキーマを使用する1つ以上の一時テーブルを作成し、フルデータと増分バイナリログデータを一時テーブルにレプリケートしてから、一時テーブルを永続テーブルとして保存します。
前提条件
データベースインスタンスは、DMSの安定した変更またはセキュリティコラボレーションモードで管理されます。 詳細については、「コントロールモード」をご参照ください。
データベースインスタンスのロックフリースキーマ変更機能が有効になっています。 詳細については、「ロックフリースキーマ変更機能の有効化」をご参照ください。
説明次の例では、この機能は、シミュレートされた開発環境のApsaraDB RDS for MySQLインスタンスに対して有効になっています。
手順
次の例では、big_table
テーブルのlong_text_a
列のデータ型がvarchar(1024)
からtext
に変更されています。
通常のユーザーとしてチケットを起票します。
DMSコンソールV5.0に通常のユーザーとして ログインします。
上部のナビゲーションバーで、 を選択します。
説明DMSコンソールをシンプルモードで使用している場合は、コンソールの左上隅にあるアイコンの上にポインターを移動し、[すべての機能] > [データベース開発] > [データ変更] > [ロックレス変更] を選択します。
次の表に記載されているパラメーターを設定し、送信をクリックします。
パラメーター
説明
データベース
必須。 データを変更するデータベース。 この例では、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を除く) 。
チケットの詳細ページで、チケットの詳細を確認します。
説明チケットの詳細は、[チケットの詳細] ページで確認できます。 DMSは、実行するSQL文を事前にチェックします。 事前チェック項目には、SQL文の構文、SQL文のタイプがセキュリティルールで設定したタイプと一致するかどうか、チケットを送信したユーザーの権限、スキャンする行の推定数が含まれます。
チケットの詳細が確認され、事前チェックが完了したら、[承認申請] をクリックします。 表示されるメッセージで、[OK] をクリックします。
重要チケットの詳細は、承認のためにチケットを提出する前にのみ変更できます。
DMS管理者としてチケットを承認します。
DMS管理者としてDMSコンソールV5.0 にログインします。
DMSコンソールの [ホーム] ページで、チケット保留中で、マイチケットセクションにアクセスします。
マイチケットページで、処理するチケットを見つけて、チケット番号をクリックします。チケット番号列を作成します。
チケットの詳細パネルで、切符のデータ変更情報を確認し、承認 をクリックします
表示されるダイアログボックスで、コメントを入力し、送信 をクリックします。
通常のユーザーとしてチケットを実行します。
最初に 通常のユーザーとしてDMSコンソールV5.0にログインします。
[チケットの詳細] パネルの [実行] セクションで、[変更の実行] をクリックします。 表示されるダイアログボックスで、次の表に示すパラメーターを設定し、[実行の確認] をクリックします。
パラメーター
説明
実行戦略
タスクを即時実行するか、スケジュールされた時間に実行するかを指定します。 有効な値:
即時実行: DMSは、タスクを送信した直後にタスクを実行します。
スケジュール: DMSは、指定したスケジュール時刻にタスクを実行します。
デフォルト値: [すぐに実行] 。
トランザクション制御
トランザクション制御を有効にするかどうかを指定します。 有効な値:
on: SQL文の実行に失敗した場合、同じトランザクション内で実行されたすべてのDML文がロールバックされます。 DDLステートメントはロールバックできません。
off: 一度に1つのSQL文が実行されます。 SQL文の実行に失敗した場合、トランザクションは停止されます。 同じトランザクションで実行された他のSQL文はロールバックされません。
デフォルト値:off
データバックアップ
データをバックアップするかどうかを指定します。 有効な値:
on: DMSは
INSERT
スクリプトを生成し、UPDATE
またはDELETE
ステートメントの実行時に影響を受けるデータをバックアップします。off: 前のデータのバックアップスクリプトは生成されません。
デフォルト値 : on。
説明[実行の確認] をクリックすると、DMSはタスクの実行を開始します。
タスクの進行状況を表示し、スキーマを確認する
DMS管理者として、[基本情報] セクションで変更するデータベースの名前にポインターを移動します。 表示されるメニューで、[クエリ] をクリックします。
SQL Consoleのページに自動的にリダイレクトされます。
[SQLコンソール] タブで、SQLエディターにSQLクエリステートメントを入力します。 次に、SQLエディターの上部にある [実行] をクリックします。
たとえば、次のSQL文を入力して、現在のデータベースのテーブルを照会できます。
SHOW TABLES;
説明DMSがテーブルをロックせずにテーブルのスキーマを変更すると、2つの一時テーブルが生成されます。
上部のナビゲーションバーで、 を選択します。
説明DMSコンソールをシンプルモードで使用する場合は、左上隅のアイコンの上にポインターを移動し、
を選択します。管理するタスクのタスク番号をクリックします。 [実行の詳細] ダイアログボックスが表示されます。
操作列で進捗状況をクリックします。
Lock-Free構造変更メッセージで、タスクの進行状況情報を表示します。
タスクが完了したら、スキーマを確認します。
big_table
テーブルのスキーマが変更され、一時テーブルが削除されます。