Data Management Service (DMS) の通常データ変更機能は、INSERT、UPDATE、DELETE、TRUNCATE などの SQL ステートメントを即時またはスケジュール実行して、データベースのデータを変更することをサポートします。このトピックでは、通常データ変更チケットの申請方法について説明します。
概要
通常データ変更チケットの設定と申請
ターゲットのデータベースまたはインスタンスを選択し、テキスト入力またはファイルアップロードで SQL ステートメントを提供します。
事前チェック
事前チェック中に、DMS は SQL ステートメントが有効であること、および必要な実行権限があることを確認します。
チケットの承認
承認中に、DMS は SQL ステートメントがデータベースパフォーマンスに影響を与えるかどうかを確認し、申請者がそれらを実行する権限があることを確認します。
データ変更の実行
SQL ステートメントを実行します。エラーが発生した場合やロールバックが必要な場合、DMS を使用して迅速にロールバックチケットを作成し、元のデータを復元できます。
前提条件
インスタンスは、安定変更またはセキュリティコラボレーションのいずれかのコントロールモードである必要があります。詳細については、「コントロールモード」をご参照ください。
注意事項
承認ステータスに関わらず、いつでもチケットをクローズして、承認後にタスクが誤って実行されるのを防ぐことができます。
テスト環境であっても、チケットを使用してデータ変更を管理することを推奨します。チケットのワークフローは、データバックアップや影響を受ける行数のチェックなどの保護機能を提供し、操作が失敗したり予期しない結果になった場合に迅速な回復を可能にします。
説明承認プロセスによって開発が遅れる懸念がある場合は、承認不要のワークフローを設定できます。詳細については、「SQL 変更」をご参照ください。
論理データベース、論理テーブル、およびルーティングアルゴリズムを設定している場合、1 つのチケットでシャーディングされたデータベースとテーブル全体に変更を適用でき、物理的なデータベースやテーブルごとに個別のチケットを申請する必要がなくなります。
ルーティングアルゴリズムが設定されており、更新条件にルーティングキーが含まれている場合、ステートメントは自動的に正しい物理データベースとテーブルにルーティングされて実行されます。
ルーティングアルゴリズムが設定されていない、変更条件にルーティングキーがない、またはルーティングキーのデータ型がスキーマ定義と一致しないシナリオでは、SQL ステートメントはすべてのシャードで実行されるため、時間がかかる場合があります。
DMS は、
UPDATEまたはDELETEステートメントを実行する前にのみ、バックアップスクリプトの添付ファイルを生成します。
操作手順
ステップ 1:チケットの設定と申請
DMS 5.0 にログインします。
DMS コンソールの左上隅にある
アイコンにポインターを合わせ、 を選択します。説明DMS コンソールを通常モードで使用する場合は、トップナビゲーションバーで を選択します。
[データ変更チケット申請] ページで、チケットのパラメーターを設定します。次の表に、一部のパラメーターを示します。
説明次の例では、セキュリティコラボレーションモードのインスタンスを使用しています。パラメーターは、安定変更モードのインスタンスとは異なる場合があります。
データソースインスタンスの変更機能は、段階的に展開されています。
パラメーター
必須
説明
変更対象
はい
対象は [データベース] または [データソースインスタンス] です。
説明現在、データソースインスタンスの変更は、ApsaraDB RDS for MySQL、PolarDB for MySQL、AnalyticDB for MySQL の MySQL インスタンスタイプのみサポートしています。
データベースまたはデータソースインスタンス
はい
変更権限のあるデータベースまたはインスタンスを検索して選択します。
説明現在、データソースインスタンスの変更では、単一のインスタンスのみ選択できます。
理由カテゴリ
はい
データ変更の理由を選択します。これは追跡と監査に役立ちます。
説明管理者は、 で理由カテゴリのリストを設定できます。詳細については、「設定管理」をご参照ください。
ビジネス背景
はい
変更のビジネス上の理由を説明します。これにより、承認者にコンテキストが提供され、やり取りが削減されます。
実行方法
はい
チケットの実行方法を選択します:
承認後にチケット申請者が実行
承認後に自動実行
最終承認者が実行
説明管理者は、 で実行方法のリストを変更できます。詳細については、「設定管理」をご参照ください。
影響を受ける行数
はい
この変更によって影響を受けるデータ行の数を見積もります。
SQL の変更
はい
[テキスト] または [添付ファイル] を選択できます。
SQL テキスト
はい
このパラメーターは、[変更 SQL] で [テキスト] を選択した場合にのみ表示されます。[SQL テキスト] ボックスに実行可能な SQL ステートメントを入力します。
説明複数の SQL ステートメントを区切るには、セミコロン (;) を使用します。
変更対象がインスタンスの場合、SQL 内のすべてのテーブル名の前に
${dbName}.${tableName}の形式でデータベース名をプレフィックスとして付ける必要があります。チケットを申請すると、システムは自動的に SQL 構文を検証します。構文が正しくない場合、チケットは申請できません。
添付ファイル
はい
このパラメーターは、[変更 SQL] で [添付ファイル] を選択した場合にのみ表示されます。データ変更用の SQL ファイルをアップロードします。
説明.txt、.zip、.sql ファイルのみがサポートされています。ファイルサイズは 15 MB を超えることはできません。
ロールバック SQL
いいえ
[テキスト] または [添付ファイル] を選択できます。
説明事前にロールバック SQL ステートメントまたはファイルを提供した場合にのみ、DMS はロールバックチケット作成時にロールバック情報を自動的に入力します。それ以外の場合は、この情報を手動で入力する必要があります。
SQL テキスト
いいえ
このパラメーターは、[ロールバック SQL] で [テキスト] を選択した場合にのみ表示されます。変更 SQL の逆スクリプトであるロールバック SQL を入力します。
添付ファイル
いいえ
このパラメーターは、[ロールバック SQL] で [添付ファイル] を選択した場合にのみ表示されます。[ファイルのアップロード] をクリックして、ロールバック SQL ファイルをアップロードします。
説明.txt、.zip、.sql ファイルのみがサポートされています。ファイルサイズは 15 MB を超えることはできません。
ステークホルダーの変更
いいえ
指定された関係者、管理者、および DBA のみがチケットを表示し、タスクで共同作業できます。
チケット添付ファイル
いいえ
設計ドキュメントなどの添付ファイルをアップロードして、チケットに関する詳細なコンテキストを提供します。
[申請を送信] をクリックします。
ステップ 2:SQL の事前チェック
チケットを申請すると、システムは事前チェックを実行します。失敗した場合は、プロンプトに従って SQL を修正し、再度申請してください。

ステップ 3:チケットの承認
事前チェックに合格したら、[承認申請] をクリックし、[プロンプト] ダイアログボックスで [OK] をクリックします。
デフォルトでは、データ変更承認テンプレートの承認者は DBA です。デフォルトの承認テンプレートを変更するには、「デフォルトの承認テンプレートの変更」をご参照ください。

ステップ 4:変更の実行
データ変更は、オフピーク時間帯に実行することを推奨します。
チケットが承認されたら、[変更を実行] をクリックします。[タスク設定] ダイアログボックスで、タスク実行パラメーターを設定し、[実行を確認] をクリックします。
説明チケット作成時に [実行方法] として [承認後に自動実行] を選択した場合、システムはこのステップをスキップします。
一時停止したタスクを再開した場合、スクリプトは一時停止した時点から実行を再開します。
パラメーター
説明
実行戦略
実行戦略を選択します:
即時実行:[実行確定]をクリックすると、タスクはすぐに実行されます。
[スケジュール]:タスクの開始時刻を指定します。たとえば、2024年5月22日 00:00:00 にタスクを実行するようにスケジュールできます。
説明スケジュールされたタスクの実際の実行時間には、±1 分の誤差が生じる場合があります。
終了時刻を指定
タスクの終了時刻を指定します。指定した終了時刻までにタスクが完了しない場合、システムは残りの SQL タスクの実行を停止します。これにより、タスクがピーク時間帯に実行され、ビジネス運用に影響を与えるのを防ぎます。
説明タスクの実際の終了時間には、±1 分の誤差が生じる場合があります。
単一トランザクションを有効化
すべての SQL ステートメントを 1 つのトランザクション内で実行するかどうかを設定します。このオプションは、デフォルトで無効になっています。
有効にした場合、操作全体がアトミックになります。いずれかの文が失敗すると、そのチケット内でそれ以前に実行されたすべての文がロールバックされます。DDL ステートメントはトランザクションに対応していないため、この動作は DML ステートメントにのみ適用されます。
無効:SQL ステートメントは 1 つずつコミットされます。文の実行が失敗した場合、タスクは停止しますが、すでに完了した文はロールバックされません。
バックアップを有効化
バックアップを有効にするかどうかを指定します。これはデフォルトで有効になっています。有効にすると、後でバックアップファイルを使用してデータを迅速に復元できます。
説明データバックアップは、UPDATE および DELETE ステートメントを実行する場合にのみサポートされます。
MongoDB および Redis ではデータバックアップはサポートされていません。
有効:
UPDATEまたはDELETEステートメントを実行する前に、システムは対応するバックアップスクリプトの添付ファイルを自動的に生成します。データベースタイプが MySQL または MariaDB の場合、
REPLACE INTOバックアップステートメントが生成されます。説明MySQL には、ApsaraDB RDS for MySQL、PolarDB for MySQL、PolarDB-X、およびその他の自己管理型 MySQL データベースが含まれます。
データベースタイプが MySQL または MariaDB 以外のエンジンの場合、
INSERTバックアップステートメントが生成されます。
無効:バックアップの添付ファイルは生成されません。
プライマリ/セカンダリノードチェックを有効化
プライマリ/セカンダリノードチェックを有効にして、データ同期、高可用性、および迅速な障害復旧を保証します。
カナリアリリースタイプ
SQL ステートメントの実行戦略です。
[カナリアリリースなし]:DMS はタスク内のすべての SQL ステートメントを自動的に実行します。
[最初の SQL ステートメント実行後に一時停止]:DMS は最初の SQL ステートメントが正常に実行された後、タスクを一時停止します。[再試行] をクリックすると、残りのすべてのステートメントが一度に実行されます。
[各 SQL ステートメント実行後に一時停止]:各 SQL ステートメントが実行された後、タスクは一時停止します。次のステートメントを実行するには、手動で [再試行] をクリックする必要があります。
説明SQL タスクの実行は、[セキュリティルール] の [SQL 実行制御] モジュールによって監視されます。これには、データベースロックのタイムアウト、データベースの負荷、および実行後のスリープポリシーのチェックが含まれます。デフォルトの検出設定を変更するには、「SQL 実行制御の設定」をご参照ください。
タスクが正常に実行された後、[操作] 列の [詳細] をクリックして、実行ステータス、実行回数、影響を受ける行数、実行済みスクリプト、ログなどの情報を表示します。
タスクが正常に実行された後、ターゲットデータベースの SQL ウィンドウに移動して、データ変更が期待どおりであることを確認できます。
(任意):迅速にロールバックチケットを作成して元のデータを復元します。
データ変更が正しくない場合は、ロールバックチケットを作成するか、手動で通常データ変更チケットを申請することで、元のデータを復元できます。以下に、ロールバックチケットの作成手順を説明します:
チケット詳細ページの [実行] セクションで、対象タスクの [ロールバックチケットを生成] をクリックします。
ロールバックの [ソース] を選択し、[OK] をクリックします。以下の 3 つのロールバックソースがサポートされています:
ロールバックテキスト:チケット作成時に提供したロールバック SQL。
ロールバック添付ファイル:チケット設定時にアップロードしたロールバック添付ファイル。
バックアップファイル:チケットの実行中に生成されたバックアップ添付ファイル。
説明バックアップファイルを使用してデータを復元するには、変更を実行する前にバックアップを有効にする必要があります。
(任意) 必要に応じて、ロールバックテキスト、添付ファイル、またはバックアップファイルを変更します。
ロールバックテキスト:[SQL テキスト] ボックスで直接テキストを編集できます。
ロールバック添付ファイルまたはバックアップファイル:まず、ファイルをコンピューターにダウンロードして変更し、再度ロールバックチケットにアップロードします。
ロールバック情報が正しいことを確認した後、[申請を送信] をクリックします。その後のワークフローは、通常データ変更チケットと同じです。
バックアップファイルをダウンロードします。
バックアップファイルをダウンロードしてローカルに保存したり、変更して DMS に再アップロードしたりできます。
[操作] 列で、[バックアップをダウンロード] をクリックします。バックアップファイルには、主に次の部分が含まれています:
変更の元の SQL ステートメント。
データ変更のクエリ SQL ステートメント。
データ変更のバックアップ SQL。
例:
/* [データベース]: rds@rm-bp144d5ky4l4rli0417****.mysql.rds.aliyuncs.com:3306【rds mysql】 */ /* [SQL]: UPDATE t_order SET product_id = 88 WHERE id = 10054 [バックアップ SQL]: SELECT * FROM t_order WHERE id = 10054 */ REPLACE INTO `t_order`(`id`,`product_id`,`gmt_create`,`gmt_modified`,`customer_id`,`price`,`status`,`province`) VALUES (10054,81,'2021-12-14 09:44:44','2021-12-14 09:44:44',71,63.45,'Success','杭州');バックアップファイルからバックアップステートメントを抽出します。ステートメントが正しいことを確認した後、再度通常データ変更チケットを申請し、必要に応じてデータを復元します。
説明不正な
UPDATEがINSERTバックアップステートメントを生成した場合、正しい回復方法を決定する責任はユーザーにあります。
(任意) 変更が期待どおりであることを確認します。
チケット詳細ページの [基本情報] セクションで、データベース名にカーソルを合わせ、[クエリ] をクリックします。

SQL コンソールにリダイレクトされます。テーブルデータが期待どおりか確認します。