データ管理 (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 データベース
MySQL モードの ApsaraDB for OceanBase
PolarDB for PostgreSQL (Oracle 互換)
ターゲットデータベースに対して [実行機能を有効にする (閉じている場合、他のルールは無効)] というセキュリティルールが有効になっています。 詳細については、「テーブル同期」トピックの実行機能を有効にするセクションをご参照ください。
説明このルールが無効になっている場合、スキーマ同期機能は 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 文、実行時間、スケジューリングの詳細などの詳細情報を含む操作ログを表示できます。
[同期済み。] メッセージが表示されたら、ソースデータベースのスキーマはターゲットデータベースに同期されています。