Data Transmission Service (DTS) を使用して、ほぼゼロのダウンタイムで MySQL の変更イベントを DataHub プロジェクトにストリーミングします。これは、ApsaraDB RDS for MySQL ソース上でリアルタイム分析パイプラインや変更データキャプチャ (CDC) ワークフローを構築するための推奨アプローチです。
前提条件
開始する前に、以下が準備できていることを確認してください。
ApsaraDB RDS for MySQL インスタンス。サポートされるバージョンについては、「ApsaraDB RDS for MySQL インスタンスの作成」および「データ移行シナリオの概要」をご参照ください。
移行データを受け取るための DataHub プロジェクト。詳細については、「DataHub の概要」および「プロジェクトの管理」をご参照ください。
移行タイプ
DTS は、このシナリオで以下の移行タイプをサポートしています。目標に合わせて組み合わせを選択してください。
| タイプ | 機能 | 使用シーン |
|---|---|---|
| スキーマ移行 | ソースから宛先にテーブルスキーマをコピーします | 増分移行を使用する際の最初のステップとして必須です |
| 増分データ移行 (推奨) | スキーマ移行後、変更 (INSERT、UPDATE、DELETE) を継続的にレプリケーションします | CDC パイプライン、ほぼゼロダウンタイムでの切り替え、継続的なレプリケーション |
DataHub を宛先とする場合、完全データ移行は利用できません。スキーマ移行、増分データ移行、またはその両方を選択してください。
増分データ移行を使用する理由:ソースアプリケーションを中断することなくリアルタイムで変更をレプリケーションするため、ダウンタイムを許容できないワークロードに適しています。
増分移行でサポートされる SQL 操作
| 操作タイプ | SQL ステートメント |
|---|---|
| DML | INSERT、UPDATE、DELETE |
| DDL | ADD COLUMN |
必要な権限
| データベース | 必要な権限 |
|---|---|
| ソースの ApsaraDB RDS for MySQL インスタンス | 移行対象オブジェクトに対する読み取りアクセス権 |
課金
| 移行タイプ | タスク設定料金 | インターネットトラフィック料金 |
|---|---|---|
| スキーマ移行 | 無料 | データがインターネット経由で Alibaba Cloud から転送される場合にのみ課金されます。詳細については、「課金概要」をご参照ください。 |
制限事項
DTS は外部キーを移行しません。ソースデータベースで定義されたカスケード操作や削除操作は、宛先にはレプリケーションされません。
ソースデータベースの要件
ソースサーバーには十分なアウトバウンド帯域幅が必要です。帯域幅が低いと移行速度が低下します。
テーブルには
PRIMARY KEYまたはUNIQUE制約が必要で、すべてのフィールドは一意でなければなりません。これがない場合、宛先に重複レコードが含まれる可能性があります。移行オブジェクトとしてテーブルを選択し、宛先でテーブル名やカラム名を変更する必要がある場合、1 つのタスクでサポートされるテーブルは最大 1,000 件です。1,000 件を超えるテーブルがある場合は、複数のタスクに分割するか、データベース全体を移行してください。
増分データ移行の場合、ApsaraDB RDS コンソールでバイナリロギングを有効にし、以下のパラメーターを設定します。いずれかの値が正しくない場合、事前チェックは失敗し、タスクを開始できません。
| パラメーター | 必須値 | リファレンス |
|---|---|---|
binlog_format | row | ApsaraDB RDS for MySQL インスタンスのパラメーターの変更 |
binlog_row_image | full | 上記と同じ |
デュアルプライマリクラスターにデプロイされた自己管理型 MySQL の場合、DTS がすべてのバイナリログをキャプチャできるように、log_slave_updates を ON に設定します。詳細については、「自己管理型 MySQL データベースのアカウント作成とバイナリロギングの設定」をご参照ください。
バイナリログの保持要件 — DTS が必要なバイナリログを読み取れない場合、タスクは失敗し、データが失われたり、不整合が生じたりする可能性があります。
| 移行範囲 | 最小保持期間 |
|---|---|
| 増分データ移行のみ | 24 時間以上 |
| スキーマ移行 + 増分データ移行 | 7 日以上 (スキーマ移行完了後、24 時間に短縮可能) |
詳細については、「ApsaraDB RDS for MySQL インスタンスのバイナリログファイルの表示と削除」をご参照ください。
スキーマ移行中:データベースまたはテーブルスキーマを変更する DDL 操作を実行しないでください。実行するとタスクが失敗します。
その他の制限事項
移行対象オブジェクトとして選択できるのはテーブルのみです。
移行中に
pt-online-schema-changeなどのツールを DDL 操作に使用しないでください。タスクが失敗する可能性があります。DTS のみが宛先に書き込む場合、Data Management (DMS) はソーステーブルに対してオンライン DDL を実行できます。詳細については、「ロックフリー DDL 操作の実行」をご参照ください。
警告他のツールも宛先に書き込む場合は、オンライン DDL に DMS を使用しないでください。宛先でデータ損失が発生する可能性があります。
DTS は
ROUND(COLUMN, PRECISION)を使用してFLOATおよびDOUBLEカラムを読み取ります。デフォルトの精度:FLOATは 38 桁、DOUBLEは 308 桁です。開始前に、これらのデフォルト値が要件を満たしていることを確認してください。DTS は失敗したタスクを最大 7 日間再試行します。ワークロードを宛先に切り替える前に、タスクを停止またはリリースするか、
REVOKEを実行して DTS の書き込み権限を削除してください。そうしないと、再試行後にソースデータが宛先データを上書きする可能性があります。
自己管理型 MySQL ソースの特殊なケース
移行中のプライマリ/セカンダリフェールオーバーは、タスクの失敗を引き起こします。
ソースで長期間 DML 操作が発生しない場合、移行レイテンシーの測定値が不正確になることがあります。ソースで DML 操作を実行してレイテンシー値を更新してください。移行オブジェクトとしてデータベース全体を選択した場合は、1 秒ごとにデータを受信するハートビートテーブルを作成します。
DTS は、バイナリログの位置を進めるために、ソースで定期的に
CREATE DATABASE IF NOT EXISTS `test`を実行します。
データ移行タスクの作成
ステップ 1: データ移行タスクページへの移動
Data Management (DMS) コンソールにログインします。
上部のナビゲーションバーで、[DTS] をクリックします。
左側のナビゲーションウィンドウで、[DTS (DTS)] > [データ移行] を選択します。
コンソールのレイアウトは異なる場合があります。詳細については、「シンプルモード」および「ビジネス要件に基づいた DMS コンソールの設定」をご参照ください。または、直接 新しい DTS コンソールのデータ移行タスクページに移動することもできます。
ステップ 2: リージョンの選択
[データ移行タスク] の横にあるドロップダウンリストから、データ移行インスタンスが存在するリージョンを選択します。
新しい DTS コンソールでは、左上隅でリージョンを選択します。
ステップ 3: ソースデータベースとターゲットデータベースの設定
[タスクの作成] をクリックします。次に進む前に、設定ページの上部に表示される制限事項をお読みください。
表示された制限事項をスキップすると、タスクの失敗やデータの不整合を引き起こす可能性があります。
ソースデータベースのパラメーター:
| パラメーター | 説明 |
|---|---|
| タスク名 | DTS は自動的に名前を割り当てます。タスクを簡単に識別できるように、わかりやすい名前を指定してください。名前は一意である必要はありません。 |
| 既存の DMS データベースインスタンスを選択 | 任意。既存のインスタンスを選択すると、DTS はその設定を自動的に適用します。 |
| データベースタイプ | [MySQL] を選択します。 |
| アクセス方法 | [Alibaba Cloud インスタンス] を選択します。 |
| インスタンスリージョン | ソースの ApsaraDB RDS for MySQL インスタンスが存在するリージョン。 |
| Alibaba Cloudアカウント全体でのデータの複製 | 同一アカウントでの移行の場合は [いいえ] を選択します。 |
| RDS インスタンス ID | ソースの ApsaraDB RDS for MySQL インスタンスの ID。 |
| データベースアカウント | 移行対象オブジェクトに対する読み取り権限を持つアカウント。 |
| データベースパスワード | データベースアカウントのパスワード。 |
| 暗号化 | [非暗号化] または [SSL 暗号化] を選択します。SSL 暗号化の場合、まず RDS インスタンスで有効にする必要があります。詳細については、「ApsaraDB RDS for MySQL インスタンスの SSL 暗号化の設定」をご参照ください。 |
ターゲットデータベースのパラメーター:
| パラメーター | 説明 |
|---|---|
| 既存の DMS データベースインスタンスを選択 | 任意。既存のインスタンスを選択すると、DTS はその設定を自動的に適用します。 |
| データベースタイプ | [DataHub] を選択します。 |
| アクセス方法 | [Alibaba Cloud インスタンス] を選択します。 |
| インスタンスリージョン | DataHub プロジェクトが存在するリージョン。 |
| プロジェクト | 宛先の DataHub プロジェクト。 |
ステップ 4: 接続性のテスト
[接続テストと次へ] をクリックします。
DTS は、Alibaba Cloud データベースインスタンスの IP アドレスホワイトリスト、または Elastic Compute Service (ECS) インスタンスのセキュリティグループルールに、その CIDR ブロックを自動的に追加します。データセンターやサードパーティのクラウドでホストされている自己管理型データベースの場合は、手動で DTS の CIDR ブロックをデータベースの IP アドレスホワイトリストに追加する必要があります。詳細については、「オンプレミスデータベースのセキュリティ設定に DTS サーバーの CIDR ブロックを追加する」をご参照ください。
DTS の CIDR ブロックをホワイトリストやセキュリティグループに追加すると、セキュリティ上のリスクが生じます。次に進む前に、アカウントとパスワードのセキュリティ強化、公開ポートの制限、API 呼び出しの認証、IP アドレスホワイトリストと ECS セキュリティグループルールの定期的な監査、Express Connect、VPN Gateway、または Smart Access Gateway (SAG) を介したデータベースと DTS の接続など、適切な対策を講じてください。
ステップ 5: 移行オブジェクトの選択
以下の設定を構成します。
| パラメーター | 説明 |
|---|---|
| 同期タイプ | [スキーマ移行] および/または [増分データ移行] を選択します。[完全データ移行] は DataHub では利用できません。増分データ移行を選択しない場合は、データ整合性を維持するために移行中にソースへの書き込みを避けてください。 |
| 競合するテーブルの処理モード | [事前チェックとエラー報告]:ソースと宛先で同じ名前のテーブルがあるかチェックします。競合が存在する場合、タスクは開始できません。オブジェクト名マッピングを使用して、宛先テーブルを削除せずに競合を解決します。[エラーを無視して続行]:競合チェックをスキップします。増分移行中、競合するレコードは既存の宛先レコードを上書きします。スキーマが異なる場合、タスクが失敗したり、一部のカラムのみが移行されたりする可能性があります。 |
| 追加列の新しい命名規則を適用 | DTS はシステムカラムを宛先の DataHub トピックに追加します。これらのカラム名が既存のトピックカラムと競合する場合、タスクは失敗します。トピックの構造に基づいて [はい] または [いいえ] を選択します。このパラメーターを設定する前に競合を確認してください。詳細については、「追加カラムの命名規則の変更」をご参照ください。 |
| ソースオブジェクト | オブジェクトを選択し、 |
| 選択したオブジェクト | オブジェクトを右クリックして名前を変更したり、WHERE フィルター条件を指定したり、移行する DML/DDL 操作を選択したりできます。[一括編集] をクリックすると、複数のオブジェクトの名前を一度に変更できます。オブジェクトの名前を変更すると、依存オブジェクトが破損する可能性があります。 |
[エラーを無視して続行] を選択した場合、データ整合性は保証されず、データがリスクにさらされる可能性があります。
ステップ 6: 詳細設定
[次へ: 詳細設定] をクリックし、以下を設定します。
| パラメーター | 説明 |
|---|---|
| アラートの設定 | [はい] を選択すると、タスクが失敗した場合や移行レイテンシーがしきい値を超えた場合に通知を受け取ります。しきい値とアラート連絡先を設定します。詳細については、「モニタリングとアラートの設定」をご参照ください。 |
| 宛先インスタンスでのオブジェクト名の大文字/小文字 | 宛先でのデータベース名、テーブル名、カラム名の大文字/小文字を制御します。デフォルト:[DTS のデフォルトポリシー]。詳細については、「宛先インスタンスでのオブジェクト名の大文字/小文字の指定」をご参照ください。 |
| 失敗した接続の再試行時間範囲を指定 | タスク開始後に DTS が失敗した接続を再試行する期間。有効値:10~1,440 分。デフォルト:720 分。30 分以上に設定してください。この期間内に DTS が再接続すると、タスクは再開されます。それ以外の場合、タスクは失敗します。複数のタスクが同じソースまたは宛先を共有する場合、最も短い再試行時間範囲がすべてに適用されます。再試行中も DTS の料金は発生します。 |
ステップ 7: 事前チェックの実行
[次へ: タスク設定を保存して事前チェック] をクリックします。次に進む前に OpenAPI パラメーターをプレビューするには、ボタンにカーソルを合わせ、[OpenAPI パラメーターのプレビュー] をクリックします。
DTS はタスクを開始する前に事前チェックを実行します。タスクはすべてのチェックに合格した後にのみ開始できます。
チェック項目が失敗した場合、失敗した項目の横にある [詳細の表示] をクリックして問題を修正し、[再事前チェック] をクリックします。
無視できるアラートが返された場合は、[アラート詳細の確認] > [無視] > [OK] をクリックし、[再事前チェック] をクリックします。
アラート項目を無視すると、データの不整合が生じる可能性があります。
ステップ 8: インスタンスの購入
成功率が 100% に達するまで待ってから、[次へ: インスタンスの購入] をクリックします。[インスタンスの購入] ページで、以下を設定します。
| パラメーター | 説明 |
|---|---|
| リソースグループ | 移行インスタンスのリソースグループ。デフォルト:[デフォルトのリソースグループ]。詳細については、「Resource Management とは」をご参照ください。 |
| インスタンスクラス | 移行速度を制御します。データ量とレイテンシー要件に基づいて選択します。詳細については、「データ移行インスタンスの仕様」をご参照ください。 |
ステップ 9: タスクの開始
[Data Transmission Service (従量課金) 利用規約] を読み、同意した上で、[購入して開始] をクリックします。
タスクがタスクリストに表示されます。そこで移行の進捗を監視します。
次のステップ
移行が完了し、データ整合性を確認した後、アプリケーションのワークロードを宛先の DataHub プロジェクトに切り替えます。タスクが再試行された場合に DTS が宛先データを上書きするのを防ぐため、切り替え前にデータ移行タスクを停止またはリリースしてください。