データ管理 (DMS) は、スキーマ同期機能を提供します。 この機能を使用して、2つのデータベースのスキーマまたはデータベース内の特定のテーブルのスキーマを比較し、スキーマ同期用のSQL文を生成できます。 次に、ステートメントを実行して、スキーマをターゲットデータベースに同期できます。 この機能を使用して、運用環境のデータベースとテスト環境のデータベース、テスト環境のさまざまなデータベース、運用環境のさまざまなデータベースなど、さまざまな環境のデータベースのスキーマを比較および同期できます。
前提条件
ソースデータベースとターゲットデータベースの種類は次のとおりです。
MySQL: ApsaraDB RDS for MySQL、PolarDB for MySQL、ApsaraDB MyBase for MySQL、PolarDB-X、AnalyticDB for MySQL V3.0、およびその他のソースのMySQLデータベース
SQL Server: ApsaraDB RDS for SQL Server、ApsaraDB MyBase for SQL Server、および他のソースのSQL Serverデータベース
PostgreSQL: ApsaraDB RDS for PostgreSQL、PolarDB for PostgreSQL、ApsaraDB MyBase for PostgreSQL、AnalyticDB for PostgreSQL、および他のソースのPostgreSQLデータベース
MariaDB: ApsaraDB RDS for MariaDBおよび他のソースのMariaDBデータベース
ApsaraDB for OceanBaseのMySQLモード
PolarDB for PostgreSQL (Oracleと互換)
ターゲットデータベースに対して、Enable execution capability (閉じた場合、他のルールは無効) という名前のセキュリティルールが有効になっています。 詳細については、「テーブル同期」トピックの実行機能の有効化セクションをご参照ください。
説明このルールを無効にすると、スキーマ同期機能は2つの異なるデータベースのスキーマのみを比較できますが、SQL文を実行してスキーマを同期することはできません。
ソースデータベースに対するクエリ権限がアカウントに付与されます。 詳細については、「所有権限の表示」をご参照ください。
ターゲットデータベースのテーブルを変更する権限がアカウントに付与されます。 詳細については、「所有権限の表示」をご参照ください。
使用上の注意
スキーマ同期機能を使用して、ソースデータベースのスキーマをターゲットデータベースに同期できますが、データは同期プロセス中に同期されません。 次の2つのシナリオに注意してください。
ターゲットデータベースには、ソースデータベースで同期するテーブルと同じ名前のテーブルは含まれていません。 この場合、DMSはターゲットデータベースにこれらのテーブルを作成します。
ターゲットデータベースには、ソースデータベースで同期されるテーブルと同じ名前のテーブルが含まれています。 この場合、DMSは、スキーマの一貫性を確保するために、ターゲットデータベースのテーブルにフィールドを作成または削除します。 フィールドが削除されると、フィールドのデータも削除されます。 作業は慎重に行ってください。
同期プロセス中、DMSは、ソースデータベースのどのテーブルとも一致しないターゲットデータベースのテーブルを削除しません。
手順
DMSコンソールV5.0 にログインします。
上部のナビゲーションバーで、 を選択します。
説明DMSコンソールをシンプルモードで使用する場合は、コンソールの左上隅にあるアイコンの上にポインターを移動し、
を選択します。[テーブル同期チケット] ページで、パラメーターを設定します。 下表にパラメーターを示します。
パラメーター
説明
ソースデータベース
スキーマ同期用のソースデータベース。 [ソースデータベース] フィールドにデータベース名のキーワードを入力すると、データベースを検索できます。
オプション: データベースのスキーマバージョン番号を指定します。 デフォルトでは、最新のスキーマが使用されます。 スキーマバージョンの詳細については、「スキーマバージョンの管理」をご参照ください。
宛先データベース
スキーマ同期のターゲットデータベース。 データベースを検索するには、[宛先データベース] フィールドにデータベース名のキーワードを入力します。
オプション: データベースのスキーマバージョン番号を指定します。 デフォルトでは、最新のスキーマが使用されます。 スキーマバージョンの詳細については、「スキーマバージョンの管理」をご参照ください。
同期テーブル
同期するテーブル。 有効な値:
部分テーブル: このオプションを選択した場合、ソーステーブルとターゲットテーブルの名前を入力する必要があります。 宛先テーブルの名前を指定しない場合、DMSは宛先テーブル名がソーステーブル名と同じであると想定します。
[すべてのテーブル]: このオプションを選択すると、ソースデータベース内のすべてのテーブルが同期されます。
エラーを無視するかどうか
SQL文の実行時に発生するエラーをスキップするかどうかを指定します。 有効な値:
無視しない: SQL文の実行中にエラーが発生した場合、DMSは現在および後続のSQL文の実行を停止します。
無視: SQL文の実行中にエラーが発生した場合、DMSは現在のSQL文をスキップし、残りのすべての文が実行されるまで後続のSQL文を実行し続けます。
警告エラーを無視することを選択した場合、一部のDDL実行がスキップされ、同期結果が期待値を満たさない場合があります。 作業は慎重に行ってください。
送信 をクリックします・
DMSはスキーマの分析を開始します。
説明スキーマ分析中にスキーマが変更された場合は、[スキーマ分析] ステップで [再分析] をクリックします。
承認のために提出をクリックし、承認を待ちます。
申請が承認されたら、をクリックします。ターゲットデータベースへの送信と同期.
実行するSQL文を確認し、同期の確認 をクリックします。
説明同期期間は、同期するテーブルの数やタスクキューのサイズなど、さまざまな要因の影響を受けます。 オフピーク時にスキーマを同期することを推奨します。
[同期の確認] をクリックすると、DMSはスキーマを同期するためのSQL文の実行を開始します。 [詳細] をクリックすると、SQL文、実行期間、スケジューリングの詳細などの詳細情報を含む操作ログが表示されます。
[同期済み] の場合 メッセージが表示されると、ソースデータベースのスキーマがターゲットデータベースに同期されます。