データ管理 (DMS) の通常のデータ変更機能を使用して、INSERT、UPDATE、DELETE、TRUNCATE、CREATE TABLEなどのSQL文を直接実行して、データベース内のデータを変更できます。 これらのSQL文は、スケジュールされた時間に実行することもできます。 DMSは、事前チェックフェーズでSQL文の正確性を検証し、実行されるSQL文がデータベースのパフォーマンスに影響を与えるかどうか、およびチケットを送信したユーザーが承認フェーズでSQL文を実行できるかどうかを確認します。 これにより、SQL変更のリスクが効果的に最小限に抑えられます。 このトピックでは、通常のデータ変更チケットを送信する方法について説明します。
前提条件
使用するデータベースインスタンスは、DMSの安定した変更またはセキュリティコラボレーションモードで管理されます。 詳細については、「コントロールモード」をご参照ください。
使用状況ノート
承認のためにデータ変更チケットを提出した後、チケットが承認されたか拒否されたかに関係なく、チケットを閉じることができます。 これにより、チケットが承認された後にチケットのタスクが誤って実行されることを防ぎます。
テスト環境でのデータ変更のチケットを提出することを推奨します。 このようにして、システムは影響を受ける行数をチェックし、データ変更ごとにバックアップファイルを生成します。 これにより、データが期待どおりに変更されていない場合にデータを復元できます。
説明高い研究開発効率を確保するために、テスト環境でデータ変更チケットの承認が不要であることを指定できます。 詳細については、「SQL Correct」をご参照ください。
DMSで論理データベース、論理テーブル、およびルーティングアルゴリズムを設定した場合、シャードデータベースとテーブルに1つのチケットを送信できます。 この方法では、物理データベースまたはテーブルごとにチケットを提出する必要はありません。
ルーティングアルゴリズムを構成し、データベースとテーブルのシャードに使用されるSQLステートメントにルーティングフィールドが含まれている場合、ルーティングアルゴリズムはステートメントを対応する物理テーブルにルーティングして実行します。
ルーティングアルゴリズムを構成していない場合、SQL文にルーティングフィールドが含まれていない場合、またはルーティングフィールドのデータ型がルーティングアルゴリズムで指定されたデータ型と一致しない場合、SQL文は各データベースの各テーブルに対して1つずつ実行されます。 このプロセスは、より長い時間を要する。
手順
DMSコンソールV5.0 にログインします。
上部のナビゲーションバーで、 を選択します。
説明DMSコンソールをシンプルモードで使用する場合は、コンソールの左上隅にあるアイコンの上にポインターを移動し、
を選択します。[データ変更チケット] ウィザードの [適用] ステップで、データ変更チケットを送信するためのパラメーターを設定します。 表示されるパラメーターの一部を次の表に示します。
説明この例では、Security CollaborationモードのApsaraDB RDS for MySQLデータベースが使用されています。
パラメーター
必須
説明
データベース
必須
チケットを送信するデータベース。 変更権限を持つデータベースを選択する必要があります。
理由カテゴリ
必須
データ変更の理由。 これにより、後続の操作でチケットを見つけることができます。
ビジネスの背景
必須
データの目的または目的が変更されます。 承認プロセスを高速化するには、詳細な説明を入力します。
実行方法
必須
チケットの実行方法。 有効な値:
チケット提出者は承認時に実行します
承認時に自動的に実行
最後の承認者の実行
影響を受ける行
必須
データ変更の影響を受ける可能性のあるデータ行の推定数。
変更のSQLステートメント
必須
データ変更に使用されるSQL文。 テキストまたは添付ファイルを選択できます。
SQLテキスト
必須
このパラメーターは、[変更] パラメーターを [テキスト] に設定した場合にのみ表示されます。 [SQLテキスト] フィールドに実行可能SQL文を入力します。
説明複数のSQL文はセミコロン (;) で区切ります。
DMSは、チケットの送信時にSQL文の構文が有効かどうかを確認します。 構文が無効な場合、チケットを起票することはできません。
添付ファイル
必須
このパラメーターは、[変更] パラメーターを [添付] に設定した場合にのみ表示されます。 データ変更に使用されるSQL文を格納するファイルをアップロードします。
説明アップロードするファイルは、TXT、ZIP、またはSQLファイルです。 ファイルのサイズは15 MBを超えることはできません。
ロールバックのSQLステートメント
任意
ロールバックに使用されるSQL文。 テキストまたは添付ファイルを選択できます。
SQLテキスト
任意
このパラメーターは、ロールバック用SQLステートメントパラメーターをテキストに設定した場合にのみ表示されます。 ロールバック用のSQL文を入力します。 このパラメーターに指定するSQL文は、データ変更をロールバックするために使用されます。
添付ファイル
任意
このパラメーターは、ロールバック用SQLステートメントパラメーターを [添付] に設定した場合にのみ表示されます。 [ファイル] をクリックして、ロールバックに使用するSQL文を含むファイルをアップロードします。
説明アップロードするファイルは、TXT、ZIP、またはSQLファイルです。 ファイルのサイズは15 MBを超えることはできません。
利害関係者の変更
任意
データ変更に関与する利害関係者。 指定されたすべての利害関係者は、チケットの詳細を表示し、承認プロセスに参加できます。 DMS管理者とデータベース管理者 (DBA) 以外の無関係なユーザーは、チケットの詳細にアクセスできません。
添付ファイル
任意
データ変更に関する追加情報を提供するために、チケットの添付ファイルとして使用されるファイル。
送信 をクリックします。
チケットを送信すると、システムは自動的にチケットの事前チェックを実行します。 チケットが事前チェックに失敗した場合は、プロンプトに従ってSQL文を変更し、チケットを再度送信します。
チケットが事前チェックに合格したら、[承認の送信] をクリックします。 [プロンプト] メッセージで、[OK] をクリックします。
説明デフォルトでは、データ変更チケットはDBAによって承認されます。 既定の承認テンプレートを変更する方法の詳細については、「SQL Correct」トピックの既定の承認テンプレートの変更セクションをご参照ください。
申請が承認されたら、[変更の実行] をクリックします。 [タスク設定] ダイアログボックスで、次の表に示すタスク実行パラメーターを設定し、[実行の確認] をクリックします。
説明[適用] ステップで [実行方法] パラメーターを [承認時に自動的に実行] に設定した場合、このステップは自動的にスキップされます。
中断されたタスクが再開された後、スクリプトは中断された位置から実行できます。
パラメーター
説明
実行戦略
チケットのタスクをすぐに実行するか、スケジュールされた時間に実行するかを指定します。 有効な値:
すぐに実行: このオプションを選択すると、[実行の確認] をクリックした後、DMSはすぐにタスクを実行します。
スケジュール: このオプションを選択した場合は、時刻を指定する必要があります。 [実行の確認] をクリックした後、DMSはスケジュールされた時間にタスクを実行します。 たとえば、2024年5月22日の00:00:00にタスクを実行するように指定できます。
単一トランザクションとしての送信の有効化
すべてのステートメントを1つのトランザクションとして送信するかどうかを指定します。 デフォルトでは、このスイッチはオフになっています。 有効な値:
on: この変更に関与するすべてのSQL文は、トランザクションとして送信されます。 SQL文が失敗した場合、同じトランザクション内で実行されたすべてのDML文がロールバックされます。 DDLステートメントはロールバックできません。
off: 各SQL文はトランザクションとして送信されます。 SQL文が失敗した場合、トランザクションは停止されますが、実行されたSQL文はロールバックされません。
バックアップの有効化
データをバックアップするかどうかを指定します。 デフォルトでは、このスイッチはオフになっています。 有効な値:
説明データバックアップは、UPDATEおよびDELETEステートメントでのみサポートされます。
MongoDBまたはRedisデータベースのデータをバックアップすることはできません。
on: DMSは、
UPDATE
またはDELETE
ステートメントの実行時に影響を受けるデータをバックアップする特定のステートメントを生成します。データベースがMySQLまたはMariaDBデータベースの場合、DMSは
REPLACE INTO
ステートメントを生成します。説明サポートされているMySQLデータベースタイプには、Alibaba Cloud上にないApsaraDB RDS for MySQL、PolarDB for MySQL、PolarDB-X、MySQLデータベースが含まれます。
データベースがMySQLまたはMariaDBデータベースでない場合、DMSは
INSERT
ステートメントを生成します。
off: DMSはデータバックアップ用のステートメントを生成しません。
説明SQLタスクの実行は、SQL実行を制御するためにセキュリティルールで構成されたチェックポイントによって監視されます。 チェックポイントの例は、SQL実行前のデータベース・ロック・タイムアウト機構、SQL実行前のデータベース・ロード・チェック、およびSQL実行後のスリープ・ポリシを含む。 SQLの実行を制御するためにセキュリティルールに設定されているチェックポイントを確認するには、セキュリティルールの詳細ページに移動し、左側のウィンドウで [SQL実行制御] をクリックします。 デフォルトのチェックポイント設定を変更する方法の詳細については、「SQL実行時にコントロールを構成する」をご参照ください。
タスクが完了したら、チケットの [操作] 列の [詳細] をクリックして、チケットのステータス、タスクの実行回数、影響を受ける行数、実行されたステートメント、およびログを表示できます。
タスクが完了したら、データベースの [SQLConsole] タブに移動して、データが期待どおりに変更されているかどうかを確認できます。
オプションです。 タスク実行パラメーターを設定したときにデータ変更が期待どおりでなく、データバックアップが有効になっている場合は、次の手順を実行してソースデータを復元します。
チケット詳細パネルの [実行] セクションで、ダウンロードBackupで、アクションバックアップファイルをダウンロードする列。
バックアップファイルには、次の情報が含まれます。
データを変更するために実行された元のSQL文
元のSQL文のSELECT句
データのバックアップに使用されるSQL文
例:
/* [Database]: rds@rm-bp144d5ky4l4rli0417****.mysql.rds.aliyuncs.com:3306[rds mysql] */ /* [SQL]: UPDATE t_order SET product_id = 88 WHERE id = 10054 [BACKUP 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','Hangzhou');
バックアップファイルからデータバックアップ用のSQL文を抽出します。 ステートメントが有効であることを確認したら、通常のデータ変更チケットを起票し、実際の状況に基づいてデータベースデータを復元します。
説明データ変更に対して不適切な
UPDATE
ステートメントが実行され、データバックアップ用にINSERT
ステートメントが生成された場合、データを手動で復元する必要があります。データが期待どおりに変更されているかどうかを確認します。
チケット詳細パネルの [基本情報] セクションで、データベース名の上にポインターを移動し、[クエリ] をクリックします。
データベースの [SQLConsole] タブで、テーブルデータが期待どおりかどうかを確認します。