このトピックでは、Data Transmission Service (DTS) を使用して ApsaraDB RDS インスタンス間でデータを移行する方法について説明します。DTS は、スキーマ移行、完全データ移行、および増分データ移行をサポートしています。これら 3 つの移行タイプを組み合わせることで、サービスを中断することなくデータベースをスムーズに移行できます。
前提条件
ソースおよびターゲットの ApsaraDB RDS インスタンスは、次のいずれかのデータベースエンジンで稼働している必要があります:
|
ソースデータベース |
ターゲットデータベース |
|
ApsaraDB RDS for MySQL ApsaraDB RDS for MariaDB |
ApsaraDB RDS for MySQL ApsaraDB RDS for MariaDB |
|
ApsaraDB RDS for SQL Server |
ApsaraDB RDS for SQL Server |
|
ApsaraDB RDS for PostgreSQL |
ApsaraDB RDS for PostgreSQL |
このトピックでは、Data Transmission Service (DTS) の旧コンソールでの操作について説明します。新しいコンソールの使用方法については、「ApsaraDB RDS for MySQL インスタンス間のデータ移行」、「ApsaraDB RDS for MariaDB インスタンス間のデータ移行」、「ApsaraDB RDS for PostgreSQL インスタンス間のデータ移行」、および「ApsaraDB RDS for SQL Server インスタンス間のデータ移行」をご参照ください。
注意事項
-
データ移行は、ソースデータベースのデータに影響を与えません。データ移行中、Data Transmission Service (DTS) はソースデータベースからデータを読み取り、宛先データベースにレプリケートしますが、ソースからデータを削除することはありません。データ移行の仕組みの詳細については、「データ移行の仕組み」をご参照ください。
-
完全データ移行中、DTS はソースデータベースと移行先データベースの読み取りおよび書き込みリソースを消費するため、負荷が増加します。データベースのパフォーマンスが低い、仕様が低い、またはワークロードが高い場合 (たとえば、ソースデータベースに低速な SQL クエリやプライマリキーのないテーブルが多く存在する、または移行先データベースでデッドロックが発生するなど)、負荷の増加によってデータベースに負担がかかったり、サービスが中断したりする可能性があります。データ移行は、両方のデータベースの CPU 使用率が 30% 未満であるなど、オフピーク時に実行してください。
-
ソーステーブルにプライマリキーまたは一意制約がなく、一意でないデータが含まれている場合、移行先データベースに重複データが作成される可能性があります。
-
完全なデータ移行のみを実行する場合、データ整合性を確保するために、移行中はソース ApsaraDB RDS インスタンスに新しいデータを書き込まないでください。
-
移行タスクが失敗した場合、DTS は自動的にその再開を試みます。宛先インスタンスにカットオーバーする際は、まず移行タスクを停止または解放してください。これにより、タスクが自動的に再開され、ソースデータベースのデータで宛先インスタンスのデータが上書きされることを防ぎます。
-
DTS は、宛先 ApsaraDB RDS インスタンスにデータベースを自動的に作成します。データベース名が ApsaraDB RDS インスタンスの命名規則に準拠していない場合は、移行タスクを設定する前に、宛先 ApsaraDB RDS インスタンスにデータベースを作成する必要があります。
説明命名規則およびデータベースの作成方法の詳細については、「データベースとアカウントの作成」をご参照ください。
-
ApsaraDB RDS for PostgreSQL インスタンス間でデータを移行する場合、宛先インスタンスへのカットオーバー後、新しいシーケンスはソースデータベースのシーケンスの最大値から増分されないことに注意してください。カットオーバーの前に、ソースデータベースの関連するシーケンスの最大値をクエリし、最大値に 1 を加えた値を宛先データベースの対応するシーケンスの開始値として設定する必要があります。ソースデータベースのシーケンス値をクエリするには、次のコマンドを実行します:
do language plpgsql $$ declare nsp name; rel name; val int8; begin for nsp,rel in select nspname,relname from pg_class t2 , pg_namespace t3 where t2.relnamespace=t3.oid and t2.relkind='S' loop execute format($_$select last_value from %I.%I$_$, nsp, rel) into val; raise notice '%', format($_$select setval('%I.%I'::regclass, %s);$_$, nsp, rel, val+1); end loop; end; $$;
課金
|
移行タイプ |
タスク構成料金 |
インターネットトラフィック料金 |
|
スキーマ移行および完全なデータ移行 |
無料です。 |
ターゲットデータベースの アクセス方法 が パブリック IP アドレス に設定されている場合、DTS はインターネットトラフィック料金を請求します。課金概要。 |
|
増分データ移行 |
課金対象です。課金概要。 |
移行タイプ
-
スキーマ移行
DTS は、移行オブジェクトのスキーマを宛先インスタンスに移行します。
-
完全データ移行
DTS は、指定されたオブジェクトのすべての既存データを、ソース ApsaraDB RDS インスタンスから宛先 ApsaraDB RDS インスタンスに移行します。
-
増分データ移行
完全データ移行に加えて、DTS はソース ApsaraDB RDS インスタンスから宛先 ApsaraDB RDS インスタンスへ増分更新を同期します。増分データ移行により、セルフマネージドアプリケーションを中断することなく、スムーズにデータを移行できます。
増分移行の SQL 操作
|
移行シナリオ |
操作タイプ |
SQL 操作 |
|
DML |
INSERT、UPDATE、DELETE、REPLACE |
|
DDL |
|
|
|
ApsaraDB RDS for SQL Server インスタンス間の移行 |
DML |
INSERT、UPDATE、DELETE 説明
ラージオブジェクト (LOB) 列のみを更新する UPDATE ステートメントは同期されません。 |
|
DDL |
|
|
|
ApsaraDB RDS for PostgreSQL インスタンス間の移行 |
DML |
INSERT、UPDATE、DELETE |
|
DDL |
|
データベースアカウントの権限
|
移行シナリオ |
データベース |
スキーマ移行 |
完全データ移行 |
増分データ移行 |
|
ソースインスタンス |
SELECT |
SELECT |
REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW、および SELECT |
|
移行先インスタンス |
読み取りおよび書き込み権限 |
読み取りおよび書き込み権限 |
読み取りおよび書き込み権限 |
|
|
ApsaraDB RDS for SQL Server インスタンス間の移行 |
ソースインスタンス |
SELECT |
SELECT |
移行対象オブジェクトのオーナー権限。 説明
特権アカウントはこれらの要件を満たしています。 |
|
移行先インスタンス |
読み取りおよび書き込み権限 |
読み取りおよび書き込み権限 |
読み取りおよび書き込み権限 |
|
|
ApsaraDB RDS for PostgreSQL インスタンス間の移行 |
ソースインスタンス |
pg_catalog の USAGE 権限 |
移行対象オブジェクトの SELECT 権限 |
rds_superuser 説明
|
|
移行先インスタンス |
移行対象オブジェクトの CREATE および USAGE 権限 |
認可されたデータベースのオーナー権限 (INSERT、UPDATE、DELETE を含む)。 説明
ApsaraDB RDS for PostgreSQL の標準アカウントは、権限要件を満たしています。 |
認可されたデータベースのオーナー権限 (INSERT、UPDATE、DELETE を含む)。 説明
ApsaraDB RDS for PostgreSQL の標準アカウントは、権限要件を満たしています。 |
操作手順
-
Data Transmission Service (DTS) コンソールにログインします。
説明Data Management (DMS) コンソールに自動的にリダイレクトされる場合は、右下の
アイコンをクリックし、その後
をクリックしてクラシック DTS コンソールに戻ります。 -
左側のナビゲーションウィンドウで、データの移行 をクリックします。
-
移行タスク ページの上部で、宛先インスタンスが配置されているリージョンを選択します。
-
ページの右上隅で、移行タスクの作成 をクリックします。
-
ソースデータベースとターゲットデータベースを設定します。
セクション
パラメータ
説明
N/A
タスク名
DTS はタスク名を自動的に生成します。識別しやすいように、分かりやすい名前に変更することを推奨します。タスク名は一意である必要はありません。
ソースデータベース
インスタンスタイプ
RDS インスタンス を選択します。
インスタンスリージョン
ソース ApsaraDB RDS インスタンスのリージョンを選択します。
RDS インスタンス ID
ソース ApsaraDB RDS インスタンスの ID を選択します。
説明ソースとターゲットの ApsaraDB RDS インスタンスは同一でも異なっていてもかまいません。DTS を使用して、1 つの ApsaraDB RDS インスタンス内でデータ移行を行うことも、異なる 2 つの ApsaraDB RDS インスタンス間でデータ移行を行うこともできます。
データベース名
ApsaraDB RDS for PostgreSQL インスタンスから移行するデータベースの名前を入力します。
説明このパラメータは、ApsaraDB RDS インスタンスが [PostgreSQL] エンジンを実行している場合にのみ表示され、必須です。
データベースアカウント
ソース ApsaraDB RDS インスタンスのデータベースアカウントを入力します。必要な権限の詳細については、「データベースアカウントに必要な権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを入力します。
説明ソースデータベース情報を入力した後、データベースのパスワード の横にある 接続テスト をクリックして、情報が正しいかどうかを確認できます。情報が正しい場合、合格 というメッセージが表示されます。メッセージが 失敗 と表示される場合は、失敗 の横にある チェック をクリックし、表示される指示に従ってソースデータベース情報を調整してください。
接続方法
非暗号化 または SSL 暗号化 を選択します。SSL 暗号化 を選択する場合は、事前に ApsaraDB RDS インスタンスで SSL 暗号化を有効化する必要があります。詳細については、「SSL 暗号化の有効化SSL 暗号化の有効化」をご参照ください。
説明このパラメータは、ApsaraDB RDS インスタンスが [MySQL] エンジンを実行している場合にのみ表示され、必須です。
[暗号化] パラメータは、中国本土および中国 (香港) リージョンでのみサポートされています。
ターゲットデータベース
インスタンスタイプ
RDS インスタンス を選択します。
インスタンスリージョン
ターゲット ApsaraDB RDS インスタンスのリージョンを選択します。
RDS インスタンス ID
ターゲット ApsaraDB RDS インスタンスの ID を選択します。
説明ソースとターゲットの ApsaraDB RDS インスタンスは同一でも異なっていてもかまいません。DTS を使用して、1 つの ApsaraDB RDS インスタンス内でデータ移行を行うことも、異なる 2 つの ApsaraDB RDS インスタンス間でデータ移行を行うこともできます。
データベース名
ApsaraDB RDS for PostgreSQL インスタンスのターゲットデータベース名を入力します。名前はソースデータベース名と異なっていてもかまいません。
説明このパラメータは、ApsaraDB RDS インスタンスが [PostgreSQL] エンジンを実行している場合にのみ表示され、必須です。
データベースアカウント
ターゲット ApsaraDB RDS インスタンスのデータベースアカウントを入力します。必要な権限の詳細については、「データベースアカウントに必要な権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを入力します。
説明宛先データベース情報を入力した後、データベースのパスワード の後に 接続テスト をクリックして、入力した情報が正しいかどうかを確認できます。情報が正しい場合、合格 というメッセージが表示されます。メッセージが 失敗 と表示される場合は、失敗 の後に チェック をクリックし、表示される指示に従って宛先データベース情報を調整してください。
接続方法
非暗号化 または SSL 暗号化 を選択します。SSL 暗号化 を選択する場合は、事前に ApsaraDB RDS インスタンスで SSL 暗号化を有効化する必要があります。詳細については、「SSL 暗号化の有効化SSL 暗号化の有効化」をご参照ください。
説明このパラメータは、ApsaraDB RDS インスタンスが [MySQL] エンジンを実行している場合にのみ表示され、必須です。
[暗号化] パラメータは、中国本土および中国 (香港) リージョンでのみサポートされています。
-
設定が完了したら、ページ右下の [ホワイトリストの設定と次へ] をクリックします。
DTS は、該当リージョンの DTS サーバーの IP アドレスを、お客様の ApsaraDB RDS インスタンスのホワイトリストに自動的に追加します。DTS サーバーの IP アドレスブロックの詳細については、「DTS サーバーの IP アドレスブロック」をご参照ください。
警告DTS サーバーのパブリック CIDR ブロックを自動または手動で追加すると、セキュリティリスクが生じる可能性があります。本製品を使用することにより、これらの潜在的なリスクを認識し、受け入れるものとします。強力なパスワードの使用、開いているポートの制限、内部 API コールの認証の使用、不要なネットワークセグメントの定期的な確認と制限、または Express Connect、VPN Gateway、Smart Access Gateway などのプライベートネットワーク経由での接続など、基本的なセキュリティ対策を講じる責任はお客様にあります。
-
移行タイプと移行対象を選択します。
パラメータ
説明
移行タイプ
ビジネス要件と、データベースエンジンがサポートする機能に基づいて移行タイプを選択します。
-
全量データ移行のみを実行する場合は、スキーマ移行 と [全量データ移行] の両方を選択します。
-
サービス中断なしでデータ移行を行う場合は、スキーマ移行、[全量データ移行]、[増分データ移行] を選択します。
説明[増分データ移行] を選択しない場合は、データ整合性を確保するために、移行中はソース ApsaraDB RDS インスタンスに新しいデータを書き込まないでください。
移行対象
[移行対象] ボックスで移行するオブジェクトをクリックし、
アイコンをクリックして 選択中のオブジェクト ボックスに移動します。説明-
オブジェクトは、データベース、テーブル、または列レベルで選択できます。テーブルまたは列のみを選択した場合、ビュー、トリガー、ストアドプロシージャなどの他のオブジェクトは移行されません。
-
デフォルトでは、移行先データベースのオブジェクト名はソースデータベースと同じです。移行先データベースのオブジェクト名を変更するには、オブジェクト名マッピング機能を使用します。詳細については、「オブジェクト名マッピング」をご参照ください。
-
オブジェクト名マッピング機能を使用すると、依存オブジェクトの移行が失敗する可能性があります。
マップまたは名前変更
ターゲットデータベース内の移行対象の名前を変更する場合は、オブジェクト名マッピング機能を使用します。詳細については、「オブジェクト名マッピング」をご参照ください。
不安定な接続の再試行時間
ソースまたはターゲットデータベースへの接続が不安定な場合、DTS はデフォルトで 720 分 (12 時間) 接続を再試行します。この時間はカスタマイズできます。指定した時間内に DTS が再接続に成功した場合、移行タスクは自動的に再開します。それ以外の場合、タスクは失敗します。
説明接続の再試行期間中も DTS インスタンスは課金対象です。ビジネス要件に基づいて再試行時間をカスタマイズするか、ソースインスタンスとターゲットインスタンスを解放した後は、できるだけ早く DTS インスタンスを解放することを推奨します。
-
-
これらの設定が完了したら、ページ右下隅の [事前チェックと開始] をクリックします。
説明-
DTS はタスクの開始前に事前チェックを実行します。タスクは事前チェックに合格した後にのみ開始できます。
-
事前チェックに失敗した場合は、失敗した項目の横にある
アイコンをクリックして詳細を表示します。-
詳細に基づいて問題を修正してから、事前チェックを再度実行します。
-
修正を必要としない警告については、無視 または [無視してプリチェックを再実行] を選択してプリチェックを再実行できます。
-
-
-
タスクが事前チェックに合格したら、次へ をクリックします。
-
注文の確認 ページで、インスタンスクラス を選択し、Data Transmission Service (従量課金) 利用規約 チェックボックスをオンにします。
-
購入して起動 をクリックします。移行タスクが開始されます。
-
完全なデータ移行
タスクを手動で停止しないでください。データ損失を回避するため、自動的に完了するまで待機してください。
-
増分データ移行
タスクは自動的には停止しません。手動で停止する必要があります。
説明オフピーク時間帯または宛先インスタンスへの切り替え準備が整ったタイミングでタスクを停止してください。
-
タスクステータスが 増分データ移行 に変わり、遅延なし と表示されるまで待ちます。その後、数分間ソースデータベースへのデータ書き込みを停止します。増分データ移行 のステータスに遅延が表示される場合があります。
-
増分データ移行 のステータスが 遅延なし に戻ったら、移行タスクを手動で停止します。スキーマ移行および完全なデータ移行の進捗はいずれも 100 % になります。移行タスクを一時停止するには、タスクを選択し、下部のバッチ操作バーで 一時停止 をクリックします。
-
-