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

:同期用のシャドウテーブルの作成

最終更新日:Aug 15, 2024

Data Management (DMS) は、データベース内のソーステーブルのスキーマに基づいてデータベース内にシャドウテーブルを自動的に作成するシャドウテーブル同期機能を提供します。 DMSは、ソーステーブルの名前にプレフィックスまたはサフィックスを付けることによって、シャドウテーブルの名前を生成します。 定期的な同期がサポートされています。 この機能は、エンドツーエンドのストレステストなどのさまざまなシナリオで使用できます。

前提条件

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

    • 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という名前のセキュリティルールが有効になっています。 詳細については、「実行機能の有効化」をご参照ください。

    説明

    このルールを無効にすると、スキーマ同期機能は異なるテーブルのスキーマを比較できますが、SQL文を実行してスキーマを同期することはできません。

手順

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

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

    説明

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

  3. [テーブル同期チケット] ページで、次の表に示すパラメーターを設定します。 いくつかのパラメータは次のとおりです。

    パラメーター

    説明

    ソースデータベース

    シャドウテーブルを作成するソースデータベース。

    説明

    クエリがあり、ソースデータベースに対するアクセス許可を変更する必要があります。 詳細については、「所有権限の表示」をご参照ください。

    プレフィックス /サフィックス

    シャドウテーブル名の生成に使用されるプレフィックスまたはサフィックス。 名前は、プレフィックス + ソーステーブル名またはソーステーブル名 + サフィックス形式です。 必要に応じて、カスタムプレフィックスまたはサフィックスを使用できます。 デフォルトでは、Prefix + Sourceテーブル名形式が使用されます。

    デフォルトのシャドウテーブル名: __test_Sourceテーブル名

    同期テーブル

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

    • 部分テーブル: DMSは、選択したテーブルのソースデータベースにシャドウテーブルを作成します。

    • すべてのテーブル: DMSは、データベース内のすべてのテーブルに対して、ソースデータベース内にシャドウテーブルを作成します。

    同期ポリシー

    シャドウテーブルの同期に使用されるポリシー。 有効な値:

    • 今すぐ同期: チケットを送信すると、DMSはすぐに同期を実行します。 この場合、同期は1回だけ行われる。

    • スケジュールされた同期: DMSは、指定された時間に定期的に同期を実行します。 crontab式を使用して、要件に基づいて同期をスケジュールできます。 詳細については、このトピックのCrontab式セクションを参照してください。

      同期の最小間隔は1時間です。 デフォルトでは、シャドウテーブルの同期は毎日02:00に開始されます。

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

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

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

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

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

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

    説明

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

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

  6. ターゲットデータベースへの送信と同期をクリックします。

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

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

Crontab式

同期タスクを実行する間隔は、秒、分、時間、日、週、月の組み合わせを使用して指定できます。 crontab式は、6つのフィールドで構成される文字列です。 6つのフィールドはスペースで区切られています。 次の表に、これらのフィールドの有効な値を示します。

項目

有効値

サポートされている特殊文字

説明

0から59

ハイフン (-) 、アスタリスク (*) 、およびスラッシュ (/)

非該当

0から59

ハイフン (-) 、アスタリスク (*) 、およびスラッシュ (/)

非該当

時間

0から23

ハイフン (-) 、アスタリスク (*) 、およびスラッシュ (/)

非該当

1から31

ハイフン (-) 、アスタリスク (*) 、疑問符 (?) 、スラッシュ (/) 、L、W、およびC

非該当

1から12

JAN ‒DEC、ハイフン (-) 、アスタリスク (*) 、およびスラッシュ (/)

非該当

1から7

SUN ‒SAT、ハイフン (-) 、アスタリスク (*) 、疑問符 (?) 、スラッシュ (/) 、L、C、および数字記号 (#)

値1は日曜日を示し、値2は月曜日を示す。 すなわち、日曜日から土曜日までの7つの曜日は、1から7までの値で示される。

説明

値を指定できるのは、DaysフィールドとWeeksフィールドの1つだけです。 それ以外の場合、2つのフィールドの値は互いに影響します。 Daysフィールドに値を指定した場合は、Weeksフィールドを疑問符 (?) に設定します。 同様に、Weeksフィールドに値を指定した場合は、Daysフィールドを疑問符 (?) に設定します。

次の表に、特殊文字を示します。

キャラクター

説明

*

フィールドのすべての値を表します。

Minutesフィールドをアスタリスク (*) に設定すると、タスクは1分ごとに実行されます。

?

フィールドの任意の値を表します。 この2つのフィールドの値は互いに影響するため、この文字はDaysまたはWeeksフィールドでのみ使用できます。

毎月20日にタスクを実行するようにスケジュールする場合は、次のcrontab式を使用できます。13 13 15 20 * ?

説明

この場合、Daysフィールドには20が指定されているため、Weeksフィールドにはアスタリスク (*) ではなく、疑問符 (?) のみを指定できます。

-

値の範囲を表します。

[Minutes] フィールドに5〜20を指定した場合、タスクは指定した時間の5分から20分まで毎分実行されます。

/

この文字で区切られた開始時間と間隔を表します。 タスクは開始時間に実行され、その後指定された間隔で実行されます。

[Minutes] フィールドに5/20を指定した場合、指定した時間の5分から20分間隔でタスクが実行されます。 この場合、タスクは指定された時間の25分に2回目に実行されます。

,

異なる値のリストを表します。

[Minutes] フィールドに5,20を指定した場合、指定した時間の5分と20分にタスクが実行されます。

L

最後の日または週を表します。 この文字は、[日] または [週] フィールドでのみ使用できます。

Weeksフィールドに5Lを指定した場合、タスクは指定された月の最後の木曜日に実行されます。

W

月曜日から金曜日までの営業日を表します。 この文字は、[日] フィールドでのみ使用できます。 タスクは、指定された日付の最も近い営業日に実行されます。

[日] フィールドに5Wを指定した場合、次のいずれかの状況が発生します。

  • 指定された月の5日目は営業日です。 この場合、タスクは今月の5日目に実行されます。

  • 指定された月の5日目は土曜日です。 この場合、タスクは今月の4日目、つまり金曜日と最も近い営業日に実行されます。

  • 指定された月の5日目は日曜日です。 この場合、タスクは今月の6日目、つまり月曜日と最も近い営業日に実行されます。

LW

月の最終営業日を表します。

非該当

#

月の曜日のN番目の発生を表します。 この文字はWeeksフィールドでのみ使用できます。

Weeksフィールドに4#2を指定した場合、タスクは指定された月の2週目の水曜日に実行されます。

  • 数字4は水曜日を示します。

  • 数字2は、指定された月の2週目を示します。

サンプルcrontab式:

  • 毎週土曜日と日曜日の23:00にタスクを実行するようにスケジュールするには、次のcrontab式を使用します。0 0 23? * 7、1

  • 毎月5日目、15日目、25日目の09:30にタスクを実行するようにスケジュールするには、次のcrontab式を使用します。0 30 9 5,15、25 * ?

  • タスクを2日ごとに00:00に実行するようにスケジュールするには、次のcrontab式を使用します。0 0 0 */2 * ?