Alibaba Cloud Data Transmission Service (DTS) は、リアルタイムのデータストリーミングを提供し、リレーショナルデータベース (RDBMS)、非リレーショナルデータベース (NoSQL)、オンライン分析処理 (OLAP) システムなどのデータソース間のデータ交換をサポートします。DTS を使用して、MySQL または PostgreSQL データベースから ApsaraDB for SelectDB インスタンスにデータを移行または同期します。
サポートされるデータソースと転送モード
DTS は MySQL および PostgreSQL のソースデータベースをサポートしています。サポートされる MySQL ソースは、自己管理 MySQL、ApsaraDB RDS for MySQL、または PolarDB for MySQL データベースです。サポートされる PostgreSQL ソースは、自己管理 PostgreSQL、ApsaraDB RDS for PostgreSQL、または PolarDB for PostgreSQL データベースです。ApsaraDB for SelectDB では、大量のデータに対してサブ秒の応答時間でクエリを実行し、数万の同時ポイントクエリを処理し、高スループットの複雑な分析を実行できます。
このトピックでは、ApsaraDB RDS for MySQL を例として、スキーマ、完全データ、増分データを ApsaraDB for SelectDB インスタンスに同期する方法について説明します。別のソースデータベースエンジンまたは別の転送モードに一致するトピックについては、関連ドキュメントをご参照ください。
DTS のデータ同期には、通常、既存データの移行と増分データのリアルタイム同期が含まれます。次の表は、データ移行とデータ同期を比較したものです。
比較項目 | データ移行 | データ同期 |
シナリオ | 主にクラウドへの移行に使用されます。たとえば、オンプレミスデータベース、ECS インスタンス上の自己管理データベース、またはサードパーティのクラウドデータベースを Alibaba Cloud データベースに移行する場合などです。 | 主に 2 つのデータソース間のリアルタイムデータ同期に使用されます。アクティブ地理的冗長性、ディザスタリカバリ、越境データ同期、クエリとレポートのオフロード、クラウド BI、リアルタイムデータウェアハウスなどのシナリオに適しています。 |
目的 | 通常、既存の履歴データを移行するために使用されます。 | 通常、既存のデータを移行し、増分データをリアルタイムで同期するために使用されます。 |
課金方法 | 従量課金のみがサポートされています。 | 従量課金とサブスクリプションの両方がサポートされています。 |
課金ルール | 増分データ移行の実行中のみ課金され、一時停止中の期間は除外されます。スキーマ移行と完全なデータ移行は無料です。 | 従量課金の場合、増分データ同期の実行中にのみ課金され、一時停止中の期間も含まれます。スキーマ同期と完全なデータ同期は無料です。サブスクリプションの場合、購入時に選択した構成と数量に基づいて一度に料金が請求されます。 |
詳細については、「DTS のデータ同期とデータ移行の違い」および「DTS のよくある質問」をご参照ください。
制限事項
ApsaraDB RDS for MySQL から ApsaraDB for SelectDB にデータを同期する前に、次の制限事項を考慮してください。
ソーステーブルのキー — 同期するテーブルには、プライマリキーまたは一意性制約が必要で、フィールドは一意である必要があります。
宛先データモデル — ApsaraDB for SelectDB インスタンスの
uniqueデータモデルを使用するテーブルにのみデータを同期できます。データベースの負荷 — データを同期する前に、ソースデータベースとターゲットデータベースのパフォーマンスを評価してください。オフピーク時にデータを同期してください。そうしないと、完全なデータ初期化によって両方のデータベースの読み取りおよび書き込みリソースが消費され、データベースの負荷が増加する可能性があります。
オンライン DDL 操作 — データ同期中に、pt-online-schema-change などのツールを使用してソースデータベースの同期オブジェクトに対してオンライン DDL 操作を実行しないでください。実行すると、同期が失敗します。
他のソースからの書き込み — 同期中に DTS 以外のソースからターゲットデータベースにデータが書き込まれると、ソースデータベースとターゲットデータベースのデータに不整合が生じる可能性があります。
次の制限事項は、特定のソースデータベースタイプに適用されます。
-
自己管理 MySQL ソースデータベースの場合:
-
同期中にソースデータベースでプライマリ/セカンダリ スイッチオーバーが発生すると、タスクは失敗します。
-
DTS は、最後に同期されたレコードのタイムスタンプと現在時刻を比較して遅延を計算します。ソースデータベースで DML 操作が長時間実行されない場合、遅延レポートが不正確になることがあります。遅延が大きすぎるように見える場合は、ソースデータベースで DML 操作を実行して遅延を更新してください。
説明完全なデータベースを同期対象として選択した場合は、ハートビートテーブルを作成してください。このテーブルを毎秒更新または書き込みます。
-
DTS は、バイナリログのオフセットを進めるために、ソースデータベースで定期的に CREATE DATABASE IF NOT EXISTS `test` コマンドを実行します。
-
ソースデータベースが Amazon Aurora MySQL または別のクラスター化された MySQL インスタンスである場合、タスク構成で使用されるドメイン名または IP アドレス、およびその DNS 解決が常に読み取り/書き込み (RW) ノードを指すようにしてください。そうしないと、同期が失敗する可能性があります。
-
-
ApsaraDB RDS for MySQL ソースデータベースの場合:
-
ApsaraDB RDS for MySQL 5.6 の読み取り専用インスタンスなど、トランザクションログを記録しない読み取り専用インスタンスは、ソースデータベースとして使用できません。
-
DTS は、バイナリログのオフセットを進めるために、ソースデータベースで定期的に CREATE DATABASE IF NOT EXISTS `test` コマンドを実行します。
-
自己管理 MySQL ソースデータベースの場合:
同期中にソースデータベースでプライマリ/セカンダリ スイッチオーバーが発生すると、タスクは失敗します。
DTS は、最後に同期されたレコードのタイムスタンプと現在時刻を比較して遅延を計算します。ソースデータベースで DML 操作が長時間実行されない場合、遅延レポートが不正確になることがあります。遅延が大きすぎるように見える場合は、ソースデータベースで DML 操作を実行して遅延を更新してください。
DTS は、バイナリログのオフセットを進めるために、ソースデータベースで定期的に CREATE DATABASE IF NOT EXISTS `test` コマンドを実行します。
ソースデータベースが Amazon Aurora MySQL または別のクラスター化された MySQL インスタンスである場合、タスク構成で使用されるドメイン名または IP アドレス、およびその DNS 解決が常に読み取り/書き込み (RW) ノードを指すようにしてください。そうしないと、同期が失敗する可能性があります。
完全なデータベースを同期対象として選択した場合は、ハートビートテーブルを作成してください。このテーブルを毎秒更新または書き込みます。
ApsaraDB RDS for MySQL ソースデータベースの場合:
ApsaraDB RDS for MySQL 5.6 の読み取り専用インスタンスなど、トランザクションログを記録しない読み取り専用インスタンスは、ソースデータベースとして使用できません。
DTS は、バイナリログのオフセットを進めるために、ソースデータベースで定期的に CREATE DATABASE IF NOT EXISTS `test` コマンドを実行します。
前提条件
権限
データベース | 必要な権限 |
ソース ApsaraDB RDS for MySQL | 同期するオブジェクトに対する読み取りおよび書き込み権限。 |
宛先 ApsaraDB for SelectDB | クラスターアクセス権限 (` |
使用するソースデータベースアカウントが ApsaraDB RDS for MySQL コンソールで作成および承認されていない場合は、そのアカウントに `REPLICATION CLIENT`、`REPLICATION SLAVE`、`SHOW VIEW`、および `SELECT` 権限があることを確認してください。
ソースデータベースアカウントの権限を表示するには、「MySQL permissions」をご参照ください。
ソースデータベースアカウントの権限を変更するには、「アカウント権限の変更」をご参照ください。
ソースデータベースでのバイナリロギング
ApsaraDB RDS for MySQL では、バイナリロギングはデフォルトで有効になっています。同期タスクを設定する前に、次の設定を確認してください。
行イメージ形式 — `
binlog_row_image` が `full` に設定されていることを確認してください。そうでない場合、事前チェック中にエラーが報告され、データ同期タスクを開始できません。パラメーターの設定方法については、「インスタンスパラメーターの設定」をご参照ください。自己管理 MySQL データベース — ソースインスタンスが自己管理 MySQL データベースの場合は、バイナリロギングを有効にし、`
binlog_format` を `row` に、`binlog_row_image` を `full` に設定してください。デュアルプライマリクラスター — ソースの自己管理 MySQL インスタンスが、各ノードが互いのレプリカであるデュアルプライマリクラスターである場合は、`
log_slave_updates` パラメーターを有効にして、DTS がすべてのバイナリログを取得できるようにしてください。詳細については、「自己管理 MySQL データベースのアカウントを作成してバイナリログを設定する」をご参照ください。ログ保持 — DTS では、ソースデータベースのローカルバイナリログを少なくとも 7 日間保持する必要があります。そうしないと、DTS がバイナリログを取得できずにタスクが失敗する可能性があります。極端な場合には、データの不整合やデータ損失が発生することがあります。DTS が要求する期間よりも短いバイナリログ保持期間に起因する問題は、DTS サービスレベル契約 (SLA) の対象外です。ソースが ApsaraDB RDS for MySQL インスタンスの場合は、「ローカルログ (バイナリログ) の管理」をご参照ください。
宛先テーブル
DTS にスキーマを同期させるのではなく、宛先テーブルを自分で作成する場合は、タスクを開始する前に、宛先の ApsaraDB for SelectDB インスタンスで `unique` データモデルを使用するテーブルを作成してください。使用する列の型については、「データ型のマッピング」をご参照ください。この決定自体については、「同期オブジェクトと詳細設定の構成」をご参照ください。
操作手順
ソースデータベースとターゲットデータベースの設定
ApsaraDB for SelectDB コンソールにログインします。
上部のナビゲーションバーで、インスタンスが存在するリージョンを選択します。
[インスタンス] ページで、インスタンスの [ID] をクリックして [インスタンス詳細] ページに移動します。
[インスタンスの詳細] ページで、左側のナビゲーションウィンドウの [データの移行と同期] をクリックします。上部のメニューバーで、[Data Synchronization] タブを選択します。
[同期タスクの作成] をクリックし、次の表の説明に従ってソースデータベースとターゲットデータベースの情報を設定します。
カテゴリ
設定
説明
タスク情報
タスク名
DTS はタスク名を自動的に生成します。識別しやすいように、わかりやすい名前を指定することを推奨します。名前は一意である必要はありません。
ソースデータベース
データベースタイプ
[MySQL] を選択します。
アクセス方法
[Alibaba Cloud インスタンス] を選択します。
インスタンスのリージョン
ソースの ApsaraDB RDS for MySQL インスタンスのリージョンを選択します。
RDS インスタンス ID
ソースの ApsaraDB RDS for MySQL インスタンスの ID を選択します。
データベースアカウント
ソースの ApsaraDB RDS for MySQL インスタンスのデータベースアカウントを入力します。必要な権限については、「権限」をご参照ください。
データベースのパスワード
データベースアカウントに対応するパスワードを入力します。
暗号化
必要に応じて [非暗号化] または [SSL 暗号化] を選択します。[SSL 暗号化] を選択した場合は、事前に RDS for MySQL インスタンスで SSL 暗号化を有効にする必要があります。詳細については、「クラウド証明書を使用して SSL 暗号化を迅速に有効にする」をご参照ください。
ターゲットデータベース
データベースタイプ
[SelectDB] を選択します。
アクセス方法
[Alibaba Cloud インスタンス] を選択します。
インスタンスのリージョン
宛先の ApsaraDB for SelectDB インスタンスのリージョンを選択します。
インスタンス ID
宛先の ApsaraDB for SelectDB インスタンスの ID を選択します。
データベースアカウント
送信先の ApsaraDB for SelectDB インスタンスのデータベースアカウントを入力します。 必須の権限については、「権限」をご参照ください。
データベースのパスワード
データベースアカウントに対応するパスワードを入力します。
設定が完了したら、ページ下部の [接続テストをして次へ] をクリックします。
ソースまたはターゲットデータベースが ApsaraDB for SelectDB、ApsaraDB RDS for MySQL、ApsaraDB for MongoDB などの Alibaba Cloud データベースインスタンスである場合、DTS は対応するリージョンの DTS サーバーの IP アドレスを Alibaba Cloud データベースインスタンスの許可リストに自動的に追加します。
DTS による自動追加、または手動での追加にかかわらず、DTS サーバーのパブリック IP アドレス範囲を追加すると、セキュリティリスクが生じる可能性があります。この製品を使用することにより、これらの潜在的なリスクを認識し、受け入れるものとします。アカウントパスワードの強化、各ネットワークセグメントで開いているポートの制限、内部 API 間の通信での認証の使用、不要なネットワークセグメントの定期的な確認と制限など、基本的なセキュリティ対策を適用する必要があります。Express Connect、VPN ゲートウェイ、または Smart Access Gateway を使用して、内部ネットワーク経由で接続することもできます。
同期オブジェクトと詳細設定の構成
タスクオブジェクトと詳細設定を構成します。次の表に設定項目を示します。
設定
説明
同期タイプ
[増分データ同期] が選択されています。デフォルトでは、[スキーマ同期] と [完全データ同期] も選択する必要があります。事前チェックが完了すると、DTS は選択したオブジェクトの完全データ同期をソースインスタンスから宛先クラスターに実行します。これは、後続の増分データ同期のベースラインデータとして機能します。
[スキーマ同期] を選択するかどうかによって、宛先インスタンスで準備する必要があるものが決まります。2つの分岐については、この表の後の説明をご参照ください。
競合するテーブルの処理モード
-
[エラーの事前チェックと報告]:ターゲットデータベースに同じ名前のテーブルが存在するかどうかを確認します。同じ名前のテーブルが存在しない場合、事前チェックは合格します。同じ名前のテーブルが存在する場合、事前チェックは失敗し、データ同期タスクは開始されません。
説明ターゲットデータベースで同じ名前のテーブルを削除または名前変更できない場合は、別のテーブル名にマッピングできます。詳細については、「テーブル名と列名のマッピング」をご参照ください。
-
[エラーを無視して続行]:ターゲットデータベースでの重複テーブル名のチェックをスキップします。
警告[エラーを無視して続行] を選択すると、データの不整合が発生し、ビジネスにリスクをもたらす可能性があります。例:
-
テーブルスキーマが同じで、ターゲットデータベースのレコードがソースデータベースのレコードと同じプライマリキーまたは一意キーの値を持つ場合:
-
完全同期中、DTS は宛先クラスターのレコードを保持します。ソースデータベースの対応するレコードは同期されません。
-
増分同期中、ソースデータベースのレコードはターゲットデータベースのレコードを上書きします。
-
-
テーブルスキーマが異なる場合、初期データ同期が失敗する可能性があります。これにより、列データの一部のみが同期されたり、同期が完全に失敗したりする可能性があります。注意して進めてください。
-
移行先インスタンスでのオブジェクト名の大文字化
宛先インスタンスの同期オブジェクトのデータベース名、テーブル名、列名の大文字/小文字ポリシーを設定します。デフォルトでは、[DTS のデフォルトポリシー] が使用されます。データベース名とテーブル名は小文字にマッピングされ、列名の大文字/小文字はソースデータベースと同じになります。[ソースと同じ] や [ターゲットのデフォルトと同じ] など、別のポリシーを選択することもできます。詳細については、「ターゲットデータベースオブジェクト名の大文字/小文字ポリシー」をご参照ください。
ソースオブジェクト
ソースオブジェクト ボックスで、同期するオブジェクトをクリックし、
をクリックして 選択中のオブジェクト ボックスに移動します。 同期オブジェクトは、データベース、テーブル、または列レベルで選択できます。 データベースレベルでオブジェクトを選択した場合、後で追加されたテーブルのデータ同期はサポートされません。 DTS の使用中にテーブルを追加する可能性がある場合は、テーブルレベルで同期オブジェクトを選択します。 これらは、タスクリストの [操作] 列にある [同期オブジェクトの変更] を使用して後で変更できます。 テーブルレベルでオブジェクトを選択し、列名のマッピングなどの編集が必要な場合、1 つの同期タスクでサポートされるテーブルは 1,000 までです。 この制限を超えると、タスクの送信後にエラーが返されます。 この場合、テーブルを分割して複数のタスクをバッチで設定するか、データベース全体を同期するタスクを設定します。選択中のオブジェクト
-
宛先インスタンスで単一の同期オブジェクトの名前を変更するには、[選択中のオブジェクト] ボックスでオブジェクトを右クリックします。オブジェクトの名前変更の詳細については、「単一のデータベース、テーブル、または列のマッピング」をご参照ください。
-
宛先インスタンスで複数の同期オブジェクトの名前を一括で変更するには、[選択中のオブジェクト] ボックスの右上隅にある [一括編集] をクリックします。詳細については、「データベース、テーブル、列の一括マッピング」をご参照ください。
注:データベースまたはテーブルレベルで同期する SQL 操作を選択するには、選択中のオブジェクト で同期するオブジェクトを右クリックし、表示されるダイアログボックスで必須の SQL 操作を選択します。サポートされている操作については、「増分同期でサポートされている SQL 操作」をご参照ください。
WHERE条件を使用してデータをフィルターするには、選択中のオブジェクト で同期するテーブルを右クリックし、表示されるダイアログボックスでフィルター条件を設定します。詳細については、「フィルター条件の設定」をご参照ください。オブジェクト名マッピング機能を使用する場合、マッピングされたオブジェクトに依存する他のオブジェクトの同期が失敗することがあります。[同期タイプ] の選択によって、宛先テーブルを誰が作成するかが決まります。
[スキーマ同期] を選択した場合 — 次のステージ「宛先テーブルのスキーマとフィールドの構成」で宛先テーブルの構造を定義できます。ソーステーブルにプライマリキーまたは一意性制約がない場合は、そのステージでテーブルが `
unique` データモデルを使用するように設定し、プライマリキー列を手動で指定します。スキーマ同期を選択しない場合 — 送信先の ApsaraDB for SelectDB インスタンスに、
uniqueデータモデルと必須のスキーマを使用するテーブルを事前に作成します。この場合、送信先テーブルスキーマとフィールドを設定するステージは利用できません。詳細については、「データ型マッピング」および「データモデル」をご参照ください。
-
ページ下部で、[Advanced] (オプション) を展開して詳細設定を構成できます。次の表に詳細設定を示します。
設定 | 説明 |
タスクのスケジュールに使用する専用クラスターの選択 | デフォルトでは、DTS は共有クラスターでタスクをスケジュールするため、クラスターを選択する必要はありません。より安定したパフォーマンスを得るために、専用クラスターを購入して DTS 同期タスクを実行できます。詳細については、「DTS 専用クラスターとは」をご参照ください。 |
失敗した接続の再試行時間 | 同期タスクの開始後、ソースまたはターゲットデータベースへの接続が失敗した場合、DTS はエラーを報告し、直ちに接続の再試行を開始します。デフォルトの再試行時間は 720 分です。10 分から 1,440 分の範囲でカスタムの再試行時間を指定することもできます。30 分以上に設定することを推奨します。指定した時間内に DTS がデータベースに正常に再接続した場合、同期タスクは自動的に再開されます。それ以外の場合、タスクは失敗します。 説明
|
移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。 | 同期タスクの開始後、ソースまたはターゲットデータベースで接続以外の問題 (DDL または DML の実行例外など) が発生した場合、DTS はエラーを報告し、直ちに継続的な再試行操作を開始します。デフォルトの再試行時間は 10 分です。1 分から 1,440 分の範囲で再試行時間をカスタマイズすることもできます。10 分以上に設定することを推奨します。設定された再試行時間内に関連する操作が成功した場合、同期タスクは自動的に再開されます。それ以外の場合、タスクは失敗します。 重要
[移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。] の値は、[失敗した接続の再試行時間] の値より小さくする必要があります。 |
完全同期レートを制限するかどうか | 完全同期ステージ中、DTS はソースデータベースとターゲットデータベースの読み取りおよび書き込みリソースを消費するため、データベースの負荷が増加する可能性があります。ソースデータベースとターゲットデータベースの負荷を軽減するために、[1 秒あたりのソースデータベースのクエリ率 QPS]、[1 秒あたりの完全移行の行数 RPS]、および [1 秒あたりの完全移行データ量 (MB) BPS] パラメーターを設定することで、完全同期タスクのレート制限を設定できます。 説明
|
増分同期率を制限するかどうか | 増分同期タスクのレート制限を設定することもできます。ターゲットデータベースへの負荷を軽減するには、[1 秒あたりの増分同期の行数 RPS] と [1 秒あたりの増分同期データ量 (MB) BPS] を設定します。 |
環境タグ | 要件に基づいてインスタンスを識別するための環境タグを選択します。この例ではタグは不要です。 |
順方向および逆方向タスクのハートビートテーブル SQL を削除 | DTS インスタンスの実行中にハートビート SQL 情報をソースデータベースに書き込むかどうかを選択します。
|
ETL 機能の設定 | 抽出、変換、ロード (ETL) 機能を有効にするかどうかを選択します。詳細については、「ETL とは」をご参照ください。有効な値は次のとおりです。
|
監視アラート | アラートを設定するかどうかを指定します。同期が失敗した場合、または遅延が指定されたしきい値を超えた場合に、アラート連絡先に通知が送信されます。
|
宛先テーブルのスキーマとフィールドの構成
(オプション) 上記の設定が完了したら、[次:データベースおよびテーブルのフィールド設定] をクリックして、宛先インスタンスで同期するテーブルの [プライマリキー列の追加]、[配布キー]、[エンジンの選択] の設定を行います。
このステップは、タスクオブジェクトを設定する際に [同期タイプ] に [スキーマ同期] が含まれている場合にのみ利用できます。[定義ステータス] を [すべて] に設定してから変更を行うことができます。
[プライマリキー列の追加] では、複数の列を選択して複合プライマリキーを形成できます。また、[プライマリキー列の追加] から 1 つ以上の列を [配布キー] として選択する必要があります。[エンジンの選択] では、unique のみを選択できます。
タスク設定の保存と事前チェックの実行
DTS は、同期タスクが開始される前に事前チェックを実行します。タスクは、事前チェックに合格した後にのみ開始できます。
タスクを保存し、事前チェックを実行します。
このインスタンスを設定するために API オペレーションを呼び出す際に使用されるパラメーターを表示するには、[次:タスク設定の保存と事前チェック] ボタンの上にポインターを移動します。次に、表示されるメッセージで [OpenAPI パラメーターのプレビュー] をクリックします。
API パラメーターを表示する必要がない場合、または表示し終わった場合は、ページ下部の [次:タスク設定の保存と事前チェック] をクリックします。
事前チェックの結果を次のように処理します。
失敗したチェック項目 — 失敗したチェック項目の横にある [詳細を表示する] をクリックし、プロンプトに従って問題を修正してから、再度事前チェックを実行します。
無視できない警告のチェック項目 — 失敗したチェック項目の横にある [詳細を表示する] をクリックし、プロンプトに従って問題を修正してから、再度事前チェックを実行します。
修正せずに無視できる警告のチェック項目 — [アラート詳細の表示]、[無視を確認]、[確定する]、[事前チェックを再実行] を順にクリックして、警告のチェック項目をスキップし、再度事前チェックを実行します。警告のチェック項目をスキップすると、データの不整合などの問題が発生し、ビジネスにリスクをもたらす可能性があります。
[事前チェック合格率] が 100% と表示されたら、[次へ:購入] をクリックします。
インスタンスの購入とタスクの開始
[インスタンスの購入] ページで、データ同期インスタンスの課金方法と同期インスタンスクラスを選択します。詳細については、次の表をご参照ください。
カテゴリ
パラメーター
説明
新しいインスタンスクラス
課金方法
サブスクリプション:インスタンス作成時にお支払いいただきます。この方法は長期利用に適しています。従量課金よりも費用対効果が高く、サブスクリプション期間が長いほど割引が大きくなります。従量課金:時間単位で課金されます。この方法は短期利用に適しています。使用後すぐにインスタンスをリリースしてコストを削減できます。
リソースグループ設定
インスタンスが属するリソースグループ。デフォルト値は デフォルトリソースグループ です。詳細については、「Resource Management とは」をご参照ください。
同期インスタンスクラス
DTS は、異なるパフォーマンスレベルの同期インスタンスクラスを提供します。インスタンスクラスは同期速度に影響します。ビジネスシナリオに基づいてインスタンスクラスを選択してください。詳細については、「データ同期インスタンスの仕様」をご参照ください。
サブスクリプション期間
サブスクリプション課金方法を使用する場合、期間とインスタンス数を選択します。月次サブスクリプションでは 1~9 か月、年次サブスクリプションでは 1、2、3、または 5 年を選択できます。注:このオプションは、課金方法が [サブスクリプション] の場合にのみ表示されます。
設定が完了したら、Data Transmission (従量課金) 利用規約 を読み、選択します。
[購入して開始] をクリックします。
同期タスクが開始されます。[データ同期] ページでタスクの進捗状況を確認できます。
増分同期でサポートされる SQL 操作
次の表に、増分同期中に DTS が同期する SQL 操作を示します。
操作タイプ | SQL ステートメント |
DML | INSERT、UPDATE、DELETE |
DDL | ADD COLUMN、DROP COLUMN、DROP TABLE、TRUNCATE TABLE |
データ型のマッピング
MySQL から ApsaraDB for SelectDB にデータが同期される際、データ型が変換されます。次の表に、DTS が適用するマッピングを示します。
カテゴリ | MySQL データ型 | ApsaraDB for SelectDB データ型 |
数値 | TINYINT | TINYINT |
TINYINT UNSIGNED | SMALLINT | |
SMALLINT | SMALLINT | |
SMALLINT UNSIGNED | INT | |
MEDIUMINT | INT | |
MEDIUMINT UNSIGNED | BIGINT | |
INT | INT | |
INT UNSIGNED | BIGINT | |
BIGINT | BIGINT | |
BIGINT UNSIGNED | LARGEINT | |
BIT(M) | INT | |
DECIMAL | DECIMAL | |
NUMERIC | DECIMAL | |
FLOAT | FLOAT | |
DOUBLE | DOUBLE | |
BOOL, BOOLEAN | BOOLEAN | |
日付と時刻 | DATE | DATEV2 |
DATETIME[(fsp)] | DATETIMEV2 | |
TIMESTAMP[(fsp)] | DATETIMEV2 | |
TIME[(fsp)] | VARCHAR | |
YEAR[(4)] | INT | |
文字列 | CHAR, VARCHAR | VARCHAR |
BINARY, VARBINARY | STRING | |
TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT | STRING | |
TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB | STRING | |
ENUM | STRING | |
SET | STRING | |
JSON | STRING |
特定の変換には、次のルールが適用されます。
DECIMAL — `
zerofill` はサポートされていません。CHAR および VARCHAR — データ損失を防ぐため、`
CHAR` および `VARCHAR(n)` データは、ApsaraDB for SelectDB に同期された後、`VARCHAR(3*n)` に変換されます。データ長が指定されていない場合、ApsaraDB for SelectDB のデフォルト値 `VARCHAR(65533)` が使用されます。データ長が 65,533 を超える場合、データは ApsaraDB for SelectDB に同期された後、`STRING` に変換されます。
よくある質問
Q:DTS のデータ同期とデータ移行の違いは何ですか?
A:2つのモードは、シナリオ、目的、課金方法が異なります。比較については、「サポートされるデータソースと転送モード」をご参照ください。
Q:ソーステーブルにフィールドを追加できますか?
A:フィールド操作については、ADD COLUMN と DROP COLUMN がサポートされており、DTS はそれらを自動的に同期します。増分同期できるその他のステートメントについては、「増分同期でサポートされる SQL 操作」をご参照ください。
Q:新しいテーブル (CREATE TABLE) の同期はサポートされていますか?
A:[ソースオブジェクト] で選択した粒度に応じて、次のポリシーが適用されます。
データベースレベルで同期オブジェクトを選択した場合、新しいテーブルの同期はサポートされていません。ただし、ApsaraDB for SelectDB に対応するテーブルを手動で作成すると、DTS は新しいテーブルのデータを自動的に同期します。
テーブルレベルで同期オブジェクトを選択した場合、タスクリストの [アクション] 列にある [同期オブジェクトの変更] をクリックして新しいテーブルを追加できます。
Q:プライマリキーまたは一意キー制約がないテーブルはどのように処理しますか?
A:スキーマ同期を使用してテーブルのプライマリキーを定義します。テーブルが `unique` データモデルを使用するように設定し、プライマリキー列を手動で指定します。この選択が属する分岐については、「同期オブジェクトと詳細設定の構成」をご参照ください。
リファレンス
別のソースデータベースエンジンからデータを同期または移行するには、ソースデータベースと転送モードに一致するトピックをご参照ください。
ソースデータベース | 既存データの移行 | スキーマ、完全データ、増分データの同期 |
ApsaraDB RDS for MySQL | ||
PolarDB for MySQL | ||
ApsaraDB RDS for PostgreSQL | ApsaraDB RDS for PostgreSQL から ApsaraDB for SelectDB へのデータ移行 | ApsaraDB RDS for PostgreSQL から ApsaraDB for SelectDB へのデータ同期 |
PolarDB for PostgreSQL |