データ管理 (DMS) は、セキュリティルールのSQLレビュー最適化機能を提供します。 データ変更のためにSQL文を送信した後、または [SQLConsole] タブで、DMSはセキュリティルールの仕様に基づいて送信されたSQL文をレビューします。 たとえば、テーブルに備考が含まれているか、テーブルに特定の列が必要です。 次いで、DMSは、ロックフリーデータ変更推奨などの対応する最適化提案を提供する。 この機能は、データベース管理者 (DBA) がSQLステートメントを確認し、開発品質を向上させるのに役立ちます。 このトピックでは、セキュリティルールを設定してSQL文を確認し、データ変更を実行する方法について説明します。
背景情報
DMSは、セキュリティルールでデフォルトのSQL仕様を提供します。 たとえば、テーブルに備考が含まれている必要があります
、INSERT文のNOT NULL列にNULL値を挿入できません
、INSERT文のフィールド名を複製できません
。
SQL仕様とSQL最適化の提案の詳細については、「SQLレビュー最適化」をご参照ください。
準備
次のSQL文を実行して、migration_job
という名前のテーブルを作成します。
CREATE TABLE `migration_job` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key',
`gmt_create` datetime NOT NULL COMMENT 'Creation time',
`ref_id` bigint(20) unsigned NOT NULL COMMENT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Test';
データベースインスタンスがSecurity Collaborationモードで管理されている場合、カスタムセキュリティルールセットを作成し、インスタンスをセキュリティルールセットに関連付けることができます。 詳細については、「セキュリティルールの管理」トピックのセキュリティルールの作成およびセキュリティルールの適用セクションをご参照ください。
手順1: セキュリティルールの設定
この手順では、Security Collaborationセキュリティルールセットを構成する方法を示します。 [Flexible Management] または [Stable Change] セキュリティルールセットを設定する場合は、設定するセキュリティルールセットを見つけて、[操作] 列の [SQL監査最適化の推奨事項] をクリックします。
DMSコンソールV5.0 にログインします。
上部のナビゲーションバーで、 を選択します。
説明DMSコンソールをシンプルモードで使用する場合は、左上隅のアイコンの上にポインターを移動し、
を選択します。設定するセキュリティルールセットを見つけて、[操作] 列の [編集] をクリックします。
[詳細] ページの左側のペインで、Sql監査最適化の推奨事項 タブをクリックします。
テーブルにプライマリキーが必要ですという名前のルールを見つけ、[操作] 列の [編集] をクリックします。
説明[タグ] 、[行動アクション] 、および [ステータス] の横にあるアイコンをクリックして、ルールをフィルタリングできます。 Tagパラメーターは、DDLステートメントとDMLステートメントを含む、ルールが有効なスコープを指定します。
[ルールコンテンツの設定] ダイアログボックスで、必要なパラメーターを設定します。 この例では、Behavioral actionパラメーターは [Must Improve] に設定されています。
説明DMSがSQLレビュー用に提供するデフォルトのセキュリティルールには、[Must Improve] の値は含まれていません。 動作アクションの詳細については、「SQLレビュー最適化」トピックの動作アクションセクションをご参照ください。
OK をクリックします。
データ開発、データ変更、SQLレビューなどの機能を使用する場合、SQLレビュー最適化機能は、設定されたセキュリティルールに基づいてSQL文を検証します。
ステップ2: データ変更の実行
DMSコンソールV5.0 にログインします。
上部のナビゲーションバーで、 を選択します。
説明DMSコンソールをシンプルモードで使用する場合は、コンソールの左上隅にあるアイコンの上にポインターを移動し、
を選択します。On theデータ変更チケット申请ページで、必要なパラメーターを設定し、送信.
説明通常データの変更機能の詳細については、「通常データの変更」をご参照ください。
設定したセキュリティルールセットに関連付けられているデータベースインスタンスを選択します。
次のSQL文を実行して、データ変更を実行します。
CREATE TABLE test1 ( id bigint COMMENT 'id', name varchar(60) COMMENT 'name' ) DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_bin ENGINE = INNODB; INSERT INTO migration_job(id, ref_id, gmt_create, gmt_create) VALUES(1, null, now(), now());
チケットを送信すると、DMSはステップ1で設定したセキュリティルールセットに基づいて、送信されたSQL文を確認します。
SQLレビュー最適化機能は、送信されたSQLステートメントをレビューし、提案を返します。 この例では、次の提案が返されます。1つのアイテムを改善する必要があり、2つの潜在的な問題が存在し、1つのアイテムを改善できます。
[詳細の表示] をクリックします。 詳細を表示するには、SQL Review列の項目にポインターを移動します。
[変更のSQLステートメント] をクリックします。 提案に基づいてSQL文を最適化し、[変更の確認] をクリックします。
次の操作を実行して、SQL文を変更できます。
CREATE TABLE
文で、test1
テーブルの主キーと注釈を追加します。INSERT
文で、gmt_create
という名前の重複フィールドを削除し、ref_id
フィールドの値を挿入します。
変更後、次のSQL文が取得されます。
CREATE TABLE test1 ( id bigint PRIMARY KEY COMMENT 'id', name varchar(60) COMMENT 'name' ) DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_bin ENGINE = INNODB COMMENT = 'Remarks'; INSERT INTO migration_job(id, ref_id, gmt_create) VALUES(1, 2, now());
DMSはSQL文を再度レビューします。
SQL文はレビューに合格します。
承認のために提出をクリックし、承認を待ちます。
承認後、データ変更タスクが生成されます。
申請が承認されたら、[変更の実行] をクリックします。 [タスク設定] ダイアログボックスで、次の表に示すタスク実行パラメーターを設定し、[実行の確認] をクリックします。
説明[適用] ステップで [実行方法] パラメーターを [承認時に自動的に実行] に設定した場合、このステップは自動的にスキップされます。
中断されたタスクが再開された後、スクリプトは中断された位置から実行できます。
パラメーター
説明
実行戦略
チケットのタスクをすぐに実行するか、スケジュールされた時間に実行するかを指定します。 有効な値:
すぐに実行: このオプションを選択すると、[実行の確認] をクリックした後、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] タブに移動して、データが期待どおりに変更されているかどうかを確認できます。
次のステップ
データ変更タスクが完了したら、[詳細] をクリックして、詳細情報を含む実行ログを表示できます。 実行されたSQL文、実行期間、スケジューリングの詳細など。