すべてのプロダクト
Search
ドキュメントセンター

:スキーマの同期

最終更新日:Aug 15, 2024

データ管理 (DMS) は、スキーマ同期機能を提供します。 この機能を使用して、2つのデータベースのスキーマまたはデータベース内の特定のテーブルのスキーマを比較し、スキーマ同期用のSQL文を生成できます。 次に、ステートメントを実行して、スキーマをターゲットデータベースに同期できます。 この機能を使用して、運用環境のデータベースとテスト環境のデータベース、テスト環境のさまざまなデータベース、運用環境のさまざまなデータベースなど、さまざまな環境のデータベースのスキーマを比較および同期できます。

前提条件

  • ソースデータベースとターゲットデータベースの種類は次のとおりです。

    • MySQL: ApsaraDB RDS for MySQLPolarDB for MySQLApsaraDB MyBase for MySQLPolarDB-XAnalyticDB for MySQL V3.0、およびその他のソースのMySQLデータベース

    • SQL Server: ApsaraDB RDS for SQL ServerApsaraDB MyBase for SQL Server、および他のソースのSQL Serverデータベース

    • PostgreSQL: ApsaraDB RDS for PostgreSQLPolarDB for PostgreSQLApsaraDB MyBase for PostgreSQLAnalyticDB 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は、ソースデータベースのどのテーブルとも一致しないターゲットデータベースのテーブルを削除しません。

手順

  1. DMSコンソールV5.0 にログインします。

  2. 上部のナビゲーションバーで、データベース开発 > スキーマの変更 > スキーマ同期 を選択します。

    説明

    DMSコンソールをシンプルモードで使用する場合は、コンソールの左上隅にある2023-01-28_15-57-17.pngアイコンの上にポインターを移動し、[すべての機能] > [データベース開発] > [スキーマ変更] > [スキーマ同期] を選択します。

  3. [テーブル同期チケット] ページで、パラメーターを設定します。 下表にパラメーターを示します。

    パラメーター

    説明

    ソースデータベース

    1. スキーマ同期用のソースデータベース。 [ソースデータベース] フィールドにデータベース名のキーワードを入力すると、データベースを検索できます。

    2. オプション: データベースのスキーマバージョン番号を指定します。 デフォルトでは、最新のスキーマが使用されます。 スキーマバージョンの詳細については、「スキーマバージョンの管理」をご参照ください。

    宛先データベース

    1. スキーマ同期のターゲットデータベース。 データベースを検索するには、[宛先データベース] フィールドにデータベース名のキーワードを入力します。

    2. オプション: データベースのスキーマバージョン番号を指定します。 デフォルトでは、最新のスキーマが使用されます。 スキーマバージョンの詳細については、「スキーマバージョンの管理」をご参照ください。

    同期テーブル

    同期するテーブル。 有効な値:

    • 部分テーブル: このオプションを選択した場合、ソーステーブルとターゲットテーブルの名前を入力する必要があります。 宛先テーブルの名前を指定しない場合、DMSは宛先テーブル名がソーステーブル名と同じであると想定します。

    • [すべてのテーブル]: このオプションを選択すると、ソースデータベース内のすべてのテーブルが同期されます。

    エラーを無視するかどうか

    SQL文の実行時に発生するエラーをスキップするかどうかを指定します。 有効な値:

    • 無視しない: SQL文の実行中にエラーが発生した場合、DMSは現在および後続のSQL文の実行を停止します。

    • 無視: SQL文の実行中にエラーが発生した場合、DMSは現在のSQL文をスキップし、残りのすべての文が実行されるまで後続のSQL文を実行し続けます。

      警告

      エラーを無視することを選択した場合、一部のDDL実行がスキップされ、同期結果が期待値を満たさない場合があります。 作業は慎重に行ってください。

  4. 送信 をクリックします・

    DMSはスキーマの分析を開始します。

    説明

    スキーマ分析中にスキーマが変更された場合は、[スキーマ分析] ステップで [再分析] をクリックします。

  5. 承認のために提出クリックし、承認を待ちます。

  6. 申請が承認されたら、をクリックします。ターゲットデータベースへの送信と同期.

  7. 実行するSQL文を確認し、同期の確認 をクリックします。

    説明

    同期期間は、同期するテーブルの数やタスクキューのサイズなど、さまざまな要因の影響を受けます。 オフピーク時にスキーマを同期することを推奨します。

    [同期の確認] をクリックすると、DMSはスキーマを同期するためのSQL文の実行を開始します。 [詳細] をクリックすると、SQL文、実行期間、スケジューリングの詳細などの詳細情報を含む操作ログが表示されます。

  8. [同期済み] の場合 メッセージが表示されると、ソースデータベースのスキーマがターゲットデータベースに同期されます。