Data Transmission Service (DTS) は、最小限のダウンタイムで ApsaraDB RDS for MySQL インスタンスから ApsaraDB RDS for PostgreSQL インスタンスにデータを移行します。このガイドでは、スキーマ移行、完全データ移行、増分データ移行について説明します。
前提条件
開始する前に、以下を確認してください。
ソースとなる ApsaraDB RDS for MySQL インスタンス。設定手順については、「ApsaraDB RDS for MySQL インスタンスの作成」をご参照ください。
送信先の ApsaraDB RDS for PostgreSQL インスタンス。セットアップ手順については、「ApsaraDB RDS for PostgreSQL インスタンスを作成する」をご参照ください。
ソースデータベースのすべてのデータを保持するのに十分な、宛先インスタンスの利用可能なストレージ。
課金
| 移行タイプ | インスタンス設定料金 | インターネットトラフィック料金 |
|---|---|---|
| スキーマ移行と完全データ移行 | 無料 | 送信先の[アクセス方法]が[パブリック IP アドレス]に設定された場合に課金されます。詳細については、「課金概要」をご参照ください。 |
| 増分データ移行 | 課金済み。詳しくは、「課金概要」を参照してください。 |
移行タイプ
DTS は、このシナリオで 3 つの移行タイプをサポートしています。
スキーマ移行 — 選択したオブジェクトのスキーマをソースから宛先に移行します。DTS はこのフェーズで外部キーを転送します。
完全データ移行 — 選択したオブジェクト内の既存のすべてのデータをソースから宛先に移行します。
増分データ移行 — 完全データ移行が完了した後、ソースからの新しい変更を継続的に宛先に同期します。これにより、アプリケーションがソースに書き込みを続けている間も宛先を最新の状態に保ち、ほぼゼロのダウンタイムでの切り替えを可能にします。DTS は、INSERT、UPDATE、DELETE の DML 操作を同期します。
制限事項
ソースデータベースの要件
テーブルには PRIMARY KEY またはすべてのフィールドが一意である UNIQUE 制約が必要です。これがない場合、宛先に重複レコードが含まれる可能性があります。
移行中にテーブルまたは列の名前を変更する場合、1 つのタスクでサポートされるテーブルは最大 1,000 個です。1,000 個を超えるテーブルの場合は、複数のタスクをバッチで実行するか、名前を変更せずにデータベース全体を移行してください。
ソースインスタンスでバイナリロギングが正しく設定されている必要があります:
バイナリロギングを有効にする必要があります。
binlog_formatパラメーターはrowに、binlog_row_imageはfullに設定する必要があります。詳細については、「ApsaraDB RDS for MySQL インスタンスのパラメーターを表示する」をご参照ください。設定が正しくない場合、事前チェックは失敗します。増分データ移行のみ:バイナリログを 24 時間以上保持してください。
完全なデータ移行および増分データ移行の場合:バイナリログを最低 7 日間保存します。完全なデータ移行が完了した後は、保存期間を 24 時間以上に短縮できます。保存期間が不十分な場合、DTS がバイナリログを読み取れなくなり、タスクの失敗またはデータ損失を引き起こす可能性があり、サービスレベルアグリーメント (SLA) が無効になります。詳細については、「バイナリログファイルの管理」をご参照ください。
スキーマ移行中は、データベースまたはテーブルスキーマを変更する DDL 操作を実行しないでください。これにより、移行タスクが失敗します。
その他の制限事項
タスクの実行中に、pt-online-schema-change などのツールを使用して移行対象のオブジェクトに対して DDL 操作を実行しないでください。これにより、移行が失敗する可能性があります。
FLOAT または DOUBLE データ型の列の場合、DTS は
ROUND(COLUMN,PRECISION)を使用して値を取得します。精度を指定しない場合、DTS は FLOAT には 38 桁、DOUBLE には 308 桁をデフォルトで使用します。移行を開始する前に、これらのデフォルトが要件を満たしていることを確認してください。オフピーク時に移行を実行してください。完全データ移行は、ソースと宛先の両方で読み取りおよび書き込みリソースを消費し、両方のデータベースサーバーの負荷を増加させます。
完全データ移行後、宛先のテーブルスペースはソースよりも大きくなります。完全データ移行中の同時 INSERT 操作は、宛先でテーブルの断片化を引き起こします。
完全移行および増分移行中、DTS はセッションレベルで制約チェックと外部キーのカスケード操作を一時停止します。タスクの実行中にソースでカスケード更新または削除が発生した場合、データの不整合が生じる可能性があります。
DTS は失敗したタスクを最大 7 日間自動的に再試行します。アプリケーションを宛先に切り替える前に、移行タスクを停止またはリリースするか、
REVOKEを実行して DTS データベースアカウントから書き込み権限を削除してください。そうしないと、DTS が再試行時に宛先のデータを上書きする可能性があります。
必要な権限
ソースの ApsaraDB RDS for MySQL インスタンス
| 移行タイプ | 必要な権限 |
|---|---|
| スキーマ移行 | SELECT |
| 完全データ移行 | SELECT |
| 増分データ移行 | REPLICATION SLAVE、REPLICATION CLIENT、SHOW VIEW、SELECT |
アカウントの作成と権限の付与については、「アカウントの作成」および「アカウント権限の変更」をご参照ください。
宛先の ApsaraDB RDS for PostgreSQL インスタンス
| 移行タイプ | 必要な権限 |
|---|---|
| スキーマ移行 | 移行対象オブジェクトに対する CREATE および USAGE |
| 完全データ移行 | スキーマオーナー権限 |
| 増分データ移行 | スキーマオーナー権限 |
アカウントの作成については、「アカウントの作成」をご参照ください。
移行タスクの作成
Data Management (DMS) コンソールにログインします。上部のナビゲーションバーで DTS をクリックします。左側のナビゲーションウィンドウで、DTS (DTS) > データ移行 を選択します。
[データ移行タスク] ページに直接移動することもできます。
[データ移行タスク] の横にあるドロップダウンリストから、移行インスタンスが存在するリージョンを選択します。
新しい DTS コンソールでは、代わりに上部のナビゲーションバーからリージョンを選択します。
[タスクの作成] をクリックします。[データ同期タスクの作成] ウィザードで、ソースデータベースとターゲットデータベースを設定します。
ソースデータベースの設定:
パラメーター 値 タスク名 わかりやすい名前を入力します。DTS は自動的に名前を生成しますが、意味のある名前を付けるとタスクを識別しやすくなります。名前は一意である必要はありません。 データベースタイプ MySQL アクセス方法 Alibaba Cloud インスタンス インスタンスリージョン ソースの ApsaraDB RDS for MySQL インスタンスのリージョン Alibaba Cloud アカウント間でのデータレプリケーション 同一アカウントでの移行の場合は [いいえ] を選択します RDS インスタンス ID ソースの ApsaraDB RDS for MySQL インスタンスの ID データベースアカウント ソースインスタンスのデータベースアカウント データベースパスワード データベースアカウントのパスワード 暗号化 要件に基づいて[非暗号化] または [SSL 暗号化] を選択します。SSL 暗号化を使用するには、まず RDS for MySQL インスタンスで有効にする必要があります。「クラウド証明書を使用して SSL 暗号化を有効にする」をご参照ください。 ターゲットデータベースの設定:
パラメーター 値 データベースタイプ PostgreSQL アクセス方法 Alibaba Cloud インスタンス インスタンスリージョン 宛先の ApsaraDB RDS for PostgreSQL インスタンスのリージョン インスタンス ID 宛先の ApsaraDB RDS for PostgreSQL インスタンスの ID データベース名 移行されたオブジェクトを受け取る宛先インスタンス内のデータベース データベースアカウント 宛先インスタンスのデータベースアカウント データベースパスワード データベースアカウントのパスワード [接続テストと次へ] をクリックします。
警告DTS は、自動的にそのサーバーの CIDR ブロックを Alibaba Cloud データベースインスタンスのホワイトリスト、または自己管理データベースをホストする Elastic Compute Service (ECS) インスタンスのセキュリティグループルールに追加します。データセンター内、またはサードパーティプロバイダーがホストする自己管理データベースの場合、DTS の CIDR ブロックを手動で追加してください。詳細については、「DTS サーバーの CIDR ブロックをオンプレミスデータベースのセキュリティ設定に追加する」をご参照ください。DTS の CIDR ブロックを追加すると、セキュリティリスクが生じます。強力なパスワードの強制適用、公開ポートの制限、API 呼び出しの監査、およびホワイトリストエントリの定期的なレビューなどの対策を講じてください。あるいは、Express Connect、VPN Gateway、または Smart Access Gateway を使用して DTS に接続することもできます。移行タスクが完了した後、またはリリースされた後は、ホワイトリストまたはセキュリティグループルールから DTS の CIDR ブロックを削除してください。
移行するオブジェクトと詳細設定を構成します。
基本設定:
パラメーター 説明 同期タイプ 実行する移行タイプを選択します:スキーマ移行、完全なデータ移行、およびオプションで増分データ移行。アプリケーションを停止せずに移行を行う場合は、これら 3 つすべてを選択してください。スキーマ移行をスキップする場合、あらかじめ送信先に必要なテーブルおよびスキーマを作成しておく必要があります。増分データ移行をスキップする場合、データ整合性を確保するため、移行中はソースデータベースへのすべての書き込みを停止してください。 競合テーブルの処理モード 事前チェックしてエラーを報告(デフォルト):送信先にソースと同じ名前のテーブルが存在する場合、事前チェックが失敗します。削除できない競合テーブルについては、オブジェクト名マッピングを使用して名前を変更してください。エラーを無視して続行:このチェックをスキップします。完全なデータ移行中は、プライマリキーが一致する既存レコードが保持され、増分データ移行中は上書きされます。慎重に使用してください。 送信先インスタンスにおけるオブジェクト名の大文字・小文字の扱い 送信先のデータベース、テーブル、およびカラム名の大文字・小文字の扱いを制御します。デフォルトはDTS デフォルトポリシーです。詳細については、「送信先インスタンスにおけるオブジェクト名の大文字・小文字の扱いの指定」をご参照ください。 ソースオブジェクト ソースオブジェクトからオブジェクトを選択し、
をクリックして選択済みオブジェクトに移動させます。注:ソースの TIMESTAMP 値が 0 の場合、送信先では null に変換されます。選択済みオブジェクト 単一のオブジェクトの名前を変更するには、そのオブジェクトを右クリックします。複数のオブジェクトの名前を一度に変更するには、一括編集をクリックします。詳細については、「オブジェクト名マッピング」をご参照ください。注:オブジェクトの名前を変更すると、依存オブジェクトの移行が失敗する可能性があります。 詳細設定:
パラメーター 説明 モニタリングとアラート タスクが失敗した場合、または移行遅延がしきい値を超えた場合に通知を受け取るには、[はい] を選択してください。アラートのしきい値と通知設定を構成してください。「モニタリングとアラートの設定」をご参照ください。 失敗した接続の再試行時間 DTS が失敗した接続を回復不能とマークするまでの待機時間範囲。有効な値:10〜1,440 分。デフォルト:120 分。少なくとも 30 分に設定してください。DTS がこのウィンドウ内で再接続すると、タスクは自動的に再開されます。注意:複数のタスクが同じソースまたは宛先を共有している場合、最後に構成された再試行時間がすべてに適用されます。DTS は再試行中にインスタンスに課金します。 ETL の設定 抽出・変換・書き出し (ETL) 処理を有効にするには、[はい] を選択します。コードエディタにデータ処理文を入力します。「データ移行またはデータ同期タスクで ETL を設定する」をご参照ください。 [次へ: タスク設定を保存して事前チェック] をクリックします。
DTS は移行を開始する前に事前チェックを実行します。タスクは、事前チェックに合格するまで開始できません。事前チェックが失敗した場合は、失敗した各項目の横にある [詳細の表示] をクリックして問題を解決し、[再事前チェック] をクリックします。アラートがトリガーされた場合:無視できないアラートの場合は、問題を解決して再チェックします。無視できるアラートの場合は、[アラート詳細の確認] をクリックし、[無視]、[OK] の順にクリックしてから、[再事前チェック] をクリックします。アラートを無視すると、データの不整合が生じる可能性があります。
成功率が 100% に達するまで待ち、次に [次へ: インスタンスの購入] をクリックします。
[インスタンスの購入] ページで、インスタンスクラスを設定します。
パラメーター 説明 リソースグループ 移行インスタンスのリソースグループ。デフォルト:[デフォルトリソースグループ]Resource Management の概要 インスタンスクラス インスタンスクラスは移行速度を決定します。オプションについては、「データ移行インスタンスのインスタンスクラス」をご参照ください。 [Data Transmission Service (従量課金) 利用規約] を読んで選択します。
[購入して開始] をクリックします。確認ダイアログで、[OK] をクリックします。
タスクはデータ移行ページに表示され、そこで進行状況をモニターできます。