Data Transmission Service(DTS)

リレーショナルデータベース、NoSQL、OLAP などのデータベース間のデータ転送をサポートし、さまざまなシナリオでデータの移行、同期を可能にします。

Alibaba Cloud Data Transmission Service (DTS) を使用すると、リレーショナルデータベース、NoSQL、OLAP などのデータベース間でデータを移行できます。同じ種類のデータベース間だけではなく、異なる種類のデータベース間の移行もできます。

DTS は、データベース間のリアルタイムデータ同期ができます。また、DTS を使用して ApsaraDB for RDS の変更データをサブスクライブできます。DTS を使用すると、データの移行、リモートのリアルタイムデータバックアップ、リアルタイムデータ統合、キャッシュの更新などを簡単に実行できます。

利点

高パフォーマンス
既存データの移行速度は、最大 70 MB/秒です。
変更データの同期速度は、最大 30,000 レコード/秒です。
リアルタイムデータ同期
RDS 間のリアルタイムデータ同期が可能です。
同期処理中に同期対象を変更できます。
使いやすさ
データベースの移行は、コンソールから簡単に開始できます。
ユーザーのタスクは、コンソールでモニタリングおよび操作できます。
信頼性
すべての転送タスクを常にモニタリングしています。タスクが中断された場合、タスクを自動的に再起動し、停止した場所から移行が続行されます。
移行元データベースと移行先データベースを常にモニタリングしています。

特徴

  • ゼロダウンタイム

    データ伝送サービスは実質ダウンタイムなしでデータを移行するのに役立ちます。移行時に発生する移行元データベースへのすべての変更は移行先に継続的に複製され、移行元データベースは移行プロセス中も完全に操作可能な状態に維持されます。設定しておけばデータベース移行が完了した後も移行先のデータベースとソースの同期が取れた状態を保ち、都合の良いときにデータベースを切り替えられるようにすることができます。

  • 最も広く利用されているデータベースをサポート

    広く普及しているオープンソースの商用データベースであればたいていの場合は DTS でデータを移行することが可能です。Oracle から MySQL など異なるデータベースプラットフォーム間、異機種間の移行だけでなく MySQL 間など同機種間の移行もサポートしています。


    RDS データベース間だけでなく、オンプレミスのデータベースから RDS または ECS、ESC 上で実行されているデータベースから RDS (またはその逆)、RDS データベース間の移行も可能です。


    DTS はデータ移行、リアルタイムのデータ複製、および変更データサブスクリプションなど複数の伝送モードをサポートしています。

  • データ移行

    ゼロダウンタイム

    移行中に移行元データベースに対して行われるデータ変更も、継続的にレプリケートされます。このため、移行中も移行元データベースは稼働し続けることができます。
    データベースの移行が完了した後でも、移行先データベースは移行元との同期が保たれるので、都合のよいときにデータベースを切り替えることができます。


    メジャーなデータベースに対応

    同じ種類のデータベース間の移行 (MySQL から MySQL、SQLServer から SQLServer など) のほか、異なる種類のデータベース間の移行 (Oracle から MySQL など) もできます。
    オンプレミスデータベース↔RDS/ECS、ECS に実装されたデータベース↔RDS、RDS 間の移行が可能です。

  • リアルタイム変更データサブスクリプション

    RDS のリアルタイム変更データサブスクリプションに対応しています。


    サブスクリプションインスタンスを作成した後でも、サブスクリプション対象を変更できます。

  • 自動モニタリング

    同期遅延、転送ステータス、処理遅延などの重要なインスタンス情報がリアルタイムで提供されるので、ユーザーはビジネス上重要なアプリケーションのモニタリングと保護が可能です。

  • 使いやすさ

    移行プロセスにおける複雑な作業を簡素化します。たとえば、移行中に移行元データベースで行われたデータ変更を自動的にレプリケートします。

  • 信頼性

    接続の変更時、DTS は移行元および移行先のデータベースを継続的にモニタリングします。DTS はパフォーマンス最適化のため接続を動的に変更します。

  • 高パフォーマンス

    複数のスレッドで並列にレプリケーション処理を行う機能を備えています。また、さまざまなネットワーク最適化機能 (データ圧縮やパケット再転送など) にも対応しています。

利用イメージ

  • ダウンタイムなしでのデータベースの移行
  • リモートデータディザスタリカバリ
  • リモートアクセスの削減
  • ビッグデータリアルタイム解析
  • キャッシュの更新
  • メッセージ通知
ダウンタイムなしでのデータベースの移行

ダウンタイムなしでのデータベースの移行

DTS を使用すると、ダウンタイムなしでデータを移行できます。移行中に移行元データベースに対して行われるデータ変更も、継続的にレプリケートされます。移行中も移行元データベースは稼働し続けることができます。データベースの移行が完了した後でも、移行先データベースは移行元との同期が保たれるので、都合のよいときにデータベースを切り替えることができます。

リモートデータディザスタリカバリ

リモートデータディザスタリカバリ

DTS を使用すると、異なるリージョンにある 2 つの RDS インスタンス間でリアルタイムデータ同期を実行できます。リモートディザスタリカバリインスタンスは、プライマリインスタンスのスレーブです。災害発生時、アプリケーションはプライマリインスタンスからリモートディザスタリカバリインスタンスに切り替えることで、ビジネス可用性を確保することができます。

リモートアクセスの削減

リモートアクセスの削減

アプリケーションが単一のリージョンでデプロイされていると、他のリージョンからのユーザーアクセスではレイテンシおよびユーザーエクスペリエンスの問題が生じます。アクセスエクスペリエンスを改善するには、以下に推奨するアーキテクチャを活用する必要があります。

推奨設定

  • このアーキテクチャは、1 つのマスターと複数のスレーブから構成されます。すべてのリージョンの書き込みリクエストは、マスターにルーティングされます。マスターにあるデータは、DTS によって各ローカルスレーブと同期されます。各リージョンの読み取りリクエストは、近くのローカルスレーブにルーティングされます。リモートアクセスをしないため、アクセスレイテンシを短縮することができます。

ビッグデータリアルタイム解析

ビッグデータリアルタイム解析

RDS から Analytic DB へ最適化したデータ同期が提供し、ビッグデータのリアルタイム解析には低遅延データが都度最適化されます。リアルタイムグラフ、CRMなどの実現が可能になります。

キャッシュの更新

キャッシュの更新

データへの高速アクセスを実現するために、RDS でキャッシュサービスを使用できます。DTS のデータサブスクリプションを使用すると、RDS インスタンスのパフォーマンスを低下させることなく、低レイテンシでキャッシュを更新できます。

推奨設定

  • DTS は、RDS インスタンスの変更データをリアルタイムにサブスクライブできます。RDS のデータが変更されたタイミングでキャッシュデータを更新することもできます。

メッセージ通知

メッセージ通知

2 つのアプリケーションが非同期メッセージングの場合、DTS のデータサブスクリプションを使用すると、ソースアプリケーションのパフォーマンスを低下させることなく、低レイテンシでメッセージ通知を実現できます。データサブスクリプションでは、ソースアプリケーションでメッセージを発行する必要がありません。したがって、このソリューションではコアアプリケーションの安定性と信頼性を高めることができます。

よくある質問

1. DTS では、2 つの異なる Alibaba Cloud アカウントの RDS インスタンス間でデータを移行できますか。

はい、できます。移行タスクを設定する際は、移行先の RDS インスタンスのアカウントでコンソールにログインします。
移行タスクを設定するときに、移行元インスタンスのパブリック IP アドレスを持つオンプレミスデータベースを選択し、移行元 RDS インスタンスの接続を設定します。

2.データ移行中にソースインスタンスへの増分データ変更も移行されますか?

はい。移行中に発生する移行元データベースへのすべての変更は移行先に継続的に同期されます。DTS により移行元データベースは移行プロセス中も完全に操作可能な状態に維持されます。

3. DTS による増分データ移行の仕組みは何ですか。

データ移行時、DTS は移行元データベースの変更ログを取り込んでモニタリングするためログパーシングモジュールを起動します。その後、DTS は既存データの移行を開始します。データをロードした後、DTS は取り込んだ変更データを移行先インスタンスに複製し、移行先データベースは指定された期間の間移行元と同期が取れた状態が維持されます。

4. DTS によるデータ移行中にテーブルはロックされますか。

既存フルデータと増分データの同期を選択された場合、フルデータ移行中にデータ整合性を確保するため、プライマリキーがない非トランザクションテーブル(MyISAMなど)にロックをかけます。その他の場合、DTS が移行元データベースにロックをかけることはありません。

5. DTS によるデータ移行時 ECS インスタンスへのアクセスにはどちらのネットワーク (イントラネットまたはインターネット) を使用しますか。

ECS インスタンスのネットワークタイプが VPC の場合、DTS は ESC インスタンスにインターネットで接続します。
ECS インスタンスが移行タスクの移行元インスタンスで移行タスクの移行先インスタンスと異なるリージョンにある場合、DTS はインターネットで ECS に接続します。
それ以外の場合、DTS は ECS インスタンスにイントラネットで接続します。

5. DTS によるデータ移行時 RDS インスタンスへのアクセスにはどちらのネットワーク (イントラネットまたはインターネット) を使用しますか。

RDS インスタンスが移行タスクの移行元インスタンスで移行タスクの移行先インスタンスと異なるリージョンにある場合、DTS はインターネットで RDS に接続します。
それ以外の場合、DTS は RDS インスタンスにイントラネットで接続します。

7. データ移行中にソースインスタンスのDDL操作も同期されますか。

ソースインスタンスのデータベースタイプが MySQL または MongoDB の場合、DDL 操作は同期されます。
他のデータベースタイプの場合、DDL 操作は同期されません。

8. DTS では、VPC 上の ECS インスタンスのデータベースを RDS インスタンスに移行できますか。

はい。ただし、ECS インスタンスにパブリックIPがバインドされている必要があります。DTS は、ECS インスタンスの パブリックIPで ECS インスタンスにアクセスします。

9. データ移行時 DTS はどちらのデータベース (アクティブ/スタンバイ) からデータを取り込みますか。

DTS はデータ移行時 RDS インスタンスのアクティブデータベースからデータを取り込みます。

10. DTS は RDS インスタンス A のデータベース C を RDS インスタンス B のデータベース D に移行できますか。

はい。DTS は 2 つの RDS インスタンスの 2 つの異なるデータベース間のデータ移行を可能にするデータベース名マッピングをサポートしています。

11. 移行元データベースのデータは DTS による移行後削除されるのですか。

いいえ。DTS はデータ移行時移行元データベース内のデータをコピーするだけなので、移行元データベース内のデータに影響はありません。

12. 下記エラーが表示されたのはなぜですか。"Failed to obtain the structure object "[java.sql.SQLException: I/O exception: The Network Adapter co"

DTSがソースデータベースへの接続が失敗したことによるエラーです、下記チェック項目を確認ください:
(1) 接続アドレスが正しいですか。
(2) ローカルデータベースのファイアウォールは有効になっているますか。
(3) 当該データベースのリモートリスニングは有効になっていますか。

13. データ移行時、移行先のデータベース内に生成されるテーブル "increment_trx" は何ですか。

テーブル "increment_trx" は DTS によって作成されます。主に移行のチェックポイントを記録するために使用されます。タスクが中断されると、DTS はプロセスを自動で再起動し記録されたチェックポイントから移行を続行します。
テーブルを削除しないようにしましょう。このテーブルがないと移行タスクは失敗します。

14. DTS で移行した後、移行先の RDS インスタンスのサイズが移行元データベースより大きくなるのはなぜですか。

DTS は SQL 構文を使ってデータを移行するため、 移行先インスタンスにバイナリログが生成されます。このため、移行先の RDS インスタンスのサイズは移行元データベースよりも大きくなります。

15. 下記エラーが表示されたのはなぜですか。"java.sql.BatchUpdateException: INSERT, DELETE command denied to user 'user'"

移行先はRDSインスタンスの場合、RDSインスタンスがロックされていることが考えられます。
移行先 RDS インスタンスをアンロックした後、 DTS コンソールのタスクを再起動してください。

16. DTS によるデータ移行時、移行先データベースのテーブルの中のデータは上書きされますか。

いいえ。移行対象である移行先インスタンスのテーブルはデータ移行前に空の状態になっている必要があります。移行対象のテーブルがすでに移行先データベース内に存在している場合、事前チェックは失敗します。

17. RDS インスタンスを別の Alibaba Cloud アカウントからデータベースに移行するにはどうすればよいでしょうか。

移行先 RDS インスタンス所属の Alibaba Cloud アカウントで DTS コンソールにログオンする必要があります。ソースインスタンスタイプをOn-permit に設定し、ソース RDS インスタンスへ接続を設定してください。

18. 終了した移行タスクをリリースした場合移行後のデータベースの利用に影響はありますか。

いいえ。

19. DTS でオンプレミスデータベースと RDS インスタンスとの間の同期化はサポートされますか。

はい。クラウドインスタンスとオンプレミスデータベースとの間の同期化の実行時 DTS を使用できます。

20. DTS データ同期化時に使用されるのはどちらのネットワーク (イントラネットまたはインターネット) ですか。

DTS はデータ同期化時イントラネットでデータを転送します。

21. 私のデータサブスクリプション SDK はどのメッセージでもサブスクリプションを購入できずいつも "client partition is empty, wait partition balance" のプロンプトがレポートされるのはなぜですか。

データサブスクリプションの起動には少々時間がかかります、この間は"client partition is empty, wait partition balance"というメッセージが表示されます。

下記の原因が考えられます:消費タイムスタンプがデータサブスクリプションインスタンスのデータ範囲内にありません。消費タイムスタンプを変更して SDK を再起動してください。

データサブスクリプション機能を使用すると、"failed to get master store addr for topic aliyun_sz_ecs_ApsaraDBr*****y-1-0" と表示されます。

まず SDK の sePublicIp が true に設定されているかチェックします。
usePublicIp = true の場合は、消費タイムスタンプがサブスクリプションインスタンスのデータ範囲内にあるかチェックします。ない場合は、消費タイムスタンプを変更して SDK を再起動します。

24.データサブスクリプションの SDK を起動するとき、下記エラーが出る: "Specified signature is not matched with our calculation. at com.aliyuncs.DefaultAcsClient.parseAcsResponse(DefaultAcsClient.java:139) at"

SDK 内で構成されているアクセスキー/シークレットキーがサブスクリプションインスタンスに対応する Alibaba Cloud アカウントに属していません。アクセスキー/シークレットキーを変更して SDK を再起動します。

25. SDK クライアントは複数のチャネルのサブスクリプションを購入できますか。

いいえ。

26. SDK サブスクリプションの開始時に "get guid info failed" のシステムレポートが表示されるのはなぜでしょうか。

SDK 内に設定されているサブスクリプションインスタンス ID が正しくありません。サンプルコードクライアントのサブスクリプションインスタンス ID を、購入するサブスクリプションのサブスクリプションインスタンス ID に置き換える必要があります。