このトピックでは、Data Transmission Service (DTS) を使用して、セルフマネージド MySQL データベースを ApsaraDB RDS for MySQL インスタンスに移行する方法について説明します。DTS は、スキーマ移行、完全データ移行、増分データ移行をサポートしています。これらの移行タイプを組み合わせることで、セルフマネージド MySQL データベースをクラウドにスムーズかつ最小限のダウンタイムで移行できます。
前提条件
-
ApsaraDB RDS for MySQL インスタンスが作成済みであること。
-
セルフマネージド MySQL データベースのバージョンが 5.1、5.5、5.6、5.7、または 8.0 であること。
-
移行先の ApsaraDB RDS for MySQL インスタンスのストレージ容量が、ソースのセルフマネージド MySQL データベースよりも大きいこと。
注意事項
-
完全データ移行中、DTS はソースデータベースと移行先データベースの読み取りおよび書き込みリソースを消費するため、負荷が増加します。データベースのパフォーマンスが低い、仕様が低い、またはワークロードが高い場合 (たとえば、ソースデータベースに低速な SQL クエリやプライマリキーのないテーブルが多く存在する、または移行先データベースでデッドロックが発生するなど)、負荷の増加によってデータベースに負担がかかったり、サービスが中断したりする可能性があります。データ移行は、両方のデータベースの CPU 使用率が 30% 未満であるなど、オフピーク時に実行してください。
-
ソーステーブルにプライマリキーまたは一意制約がなく、一意でないデータが含まれている場合、移行先データベースに重複データが作成される可能性があります。
-
FLOAT または DOUBLE データ型の列の場合、DTS は
ROUND(COLUMN,PRECISION)関数を使用してその値を読み取ります。精度が明示的に定義されていない場合、DTS は FLOAT 値を 38 桁の精度で、DOUBLE 値を 308 桁の精度で移行します。これらの精度がビジネス要件を満たしていることを確認してください。 -
ソースデータベース名が ApsaraDB RDS の命名規則に違反している場合は、タスクを設定する前に、命名規則に準拠したデータベースを移行先インスタンスに作成する必要があります。そうでない場合、DTS はデータベースを自動的に作成します。
説明命名規則とデータベースの作成方法の詳細については、「データベースとアカウントの作成」をご参照ください。
-
データ移行タスクが失敗した場合、DTS は自動的にタスクの再開を試みます。ビジネスワークロードを移行先インスタンスに切り替える前に、必ずタスクを停止または解放してください。これにより、自動的に再開されたタスクが、ソースデータベースのデータで移行先インスタンスのデータを上書きするのを防ぎます。
課金
|
移行タイプ |
タスク構成料金 |
インターネットトラフィック料金 |
|
スキーマ移行および完全なデータ移行 |
無料です。 |
ターゲットデータベースの アクセス方法 が パブリック IP アドレス に設定されている場合、DTS はインターネットトラフィック料金を請求します。課金概要。 |
|
増分データ移行 |
課金対象です。課金概要。 |
移行タイプ
-
スキーマ移行
DTS は、選択したオブジェクトのスキーマ定義を移行先インスタンスに移行します。DTS は、テーブル、ビュー、トリガー、ストアドプロシージャ、ストアドファンクションのスキーマ移行をサポートしています。
説明-
スキーマ移行中に、DTS はビュー、ストアドプロシージャ、および関数の DEFINER 属性を INVOKER に変換します。
-
DTS はユーザー情報を移行しないため、移行先データベースでビュー、ストアドプロシージャ、および関数を呼び出すには、呼び出し元に読み取りおよび書き込み権限を付与する必要があります。
-
-
完全データ移行
DTS は、セルフマネージド MySQL データベース内の選択されたオブジェクトから、すべての既存データを移行先の ApsaraDB RDS for MySQL インスタンスに移行します。
説明完全データ移行中に INSERT 操作が同時に実行されると、移行先インスタンスでテーブルの断片化が発生する可能性があります。移行が完了すると、移行先データベースのテーブルスペースはソースデータベースよりも大きくなります。
-
増分データ移行
完全データ移行の後、DTS はソースのセルフマネージド MySQL データベースのバイナリログ (binlog) を読み取り、データの変更をキャプチャして移行先の ApsaraDB RDS for MySQL インスタンスに同期します。増分データ移行により、スムーズでダウンタイムを最小限に抑えたクラウドへの移行が可能になります。
増分移行の SQL 操作
|
操作タイプ |
SQL 文 |
|
DML |
INSERT、UPDATE、DELETE、REPLACE |
|
DDL |
|
データベースアカウントの権限
|
データベース |
スキーマ移行 |
完全データ移行 |
増分データ移行 |
|
セルフマネージド MySQL データベース |
SELECT |
SELECT |
REPLICATION SLAVE、REPLICATION CLIENT、SHOW VIEW、SELECT |
|
ApsaraDB RDS for MySQL インスタンス |
読み取りおよび書き込み権限 |
読み取りおよび書き込み権限 |
読み取りおよび書き込み権限 |
データベースアカウントを作成して権限を付与するには:
-
セルフマネージド MySQL データベースについては、「セルフマネージド MySQL データベースのアカウント作成とバイナリロギングの設定」をご参照ください。
-
ApsaraDB RDS for MySQL インスタンスについては、「データベースとアカウントの作成」および「ApsaraDB RDS for MySQL インスタンスの標準アカウントの権限変更」をご参照ください。
事前準備
操作手順
-
Data Transmission Service (DTS) コンソールにログインします。
説明Data Management (DMS) コンソールに自動的にリダイレクトされる場合は、右下の
アイコンをクリックし、その後
をクリックしてクラシック DTS コンソールに戻ります。 -
左側のナビゲーションウィンドウで、データの移行 をクリックします。
-
移行タスク ページの上部で、宛先インスタンスが配置されているリージョンを選択します。
-
ページの右上隅で、移行タスクの作成 をクリックします。
-
ソースデータベースと移行先データベースを設定します。
セクション
パラメーター
説明
N/A
タスク名
DTS はタスク名を自動的に生成します。識別しやすいように、わかりやすい名前を指定してください。名前は一意である必要はありません。
ソースデータベース
インスタンスタイプ
ソースデータベースのデプロイに基づいてインスタンスタイプを選択します。このトピックでは、[パブリック IP を持つ自己構築データベース] を例として使用します。
説明セルフマネージドデータベースのインスタンスタイプが異なる場合は、追加の準備が必要になることがあります。詳細については、「データ移行の準備」をご参照ください。
インスタンスリージョン
インスタンスタイプとして [パブリック IP を持つ自己構築データベース] を選択した場合、インスタンスのリージョン を設定する必要はありません。
説明セルフマネージド MySQL データベースがホワイトリストで保護されている場合は、[インスタンスリージョン] フィールドの横にある インスタンスのリージョン をクリックして、DTS サーバーの CIDR ブロックを取得します。次に、これらの CIDR ブロックをセルフマネージド MySQL データベースのホワイトリストに追加します。
データベースタイプ
MySQL を選択します。
ホスト名または IP アドレス
セルフマネージド MySQL データベースの接続エンドポイントを入力します。この例では、パブリックエンドポイントを使用します。
ポート
セルフマネージド MySQL データベースのサービスポートを入力します。このポートはインターネット経由でアクセスできる必要があります。デフォルト値は 3306 です。
データベースアカウント
セルフマネージド MySQL データベースのデータベースアカウントを入力します。権限要件については、「データベースアカウントの権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを入力します。
説明ソースデータベース情報を入力した後、データベースのパスワード の横にある 接続テスト をクリックして、情報が正しいかどうかを確認できます。情報が正しい場合、合格 というメッセージが表示されます。メッセージが 失敗 と表示される場合は、失敗 の横にある チェック をクリックし、表示される指示に従ってソースデータベース情報を調整してください。
移行先データベース
インスタンスタイプ
RDS インスタンス を選択します。
インスタンスリージョン
移行先の RDS インスタンスがあるリージョンを選択します。
RDS インスタンス ID
移行先の RDS インスタンスの ID を選択します。
データベースアカウント
移行先の RDS インスタンスのデータベースアカウントを入力します。権限要件については、「データベースアカウントの権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを入力します。
説明宛先データベース情報を入力した後、データベースのパスワード の後に 接続テスト をクリックして、入力した情報が正しいかどうかを確認できます。情報が正しい場合、合格 というメッセージが表示されます。メッセージが 失敗 と表示される場合は、失敗 の後に チェック をクリックし、表示される指示に従って宛先データベース情報を調整してください。
接続モード
非暗号化 または SSL 暗号化 を選択します。SSL 暗号化 を選択する場合は、事前に RDS インスタンスで SSL 暗号化を有効にする必要があります。詳細については、「SSL 暗号化の設定」をご参照ください。
説明暗号化 設定は、現在、中国本土のリージョンと中国 (香港) リージョンでのみサポートされています。
-
設定が完了したら、[ホワイトリストの設定と次へ] をクリックします。
ApsaraDB RDS や ECS でホストされているデータベースなど、Alibaba Cloud のソースと移行先の場合、DTS は自動的にそのサーバーの CIDR ブロックをホワイトリストまたはセキュリティグループに追加します。データセンターや他のクラウド上のデータベースなど、外部データベースの場合は、DTS のアクセスを許可するために CIDR ブロックを手動で追加する必要があります。追加する IP アドレスについては、「DTS サーバーの CIDR ブロック」をご参照ください。
警告DTS サーバーのパブリック CIDR ブロックを自動または手動で追加すると、セキュリティリスクが生じる可能性があります。本製品を使用することにより、これらの潜在的なリスクを認識し、受け入れるものとします。強力なパスワードの使用、開いているポートの制限、内部 API コールの認証の使用、不要なネットワークセグメントの定期的な確認と制限、または Express Connect、VPN Gateway、Smart Access Gateway などのプライベートネットワーク経由での接続など、基本的なセキュリティ対策を講じる責任はお客様にあります。
-
移行タイプと移行対象を選択します。
パラメーター
説明
移行タイプ
-
完全移行のみの場合は、スキーマ移行 と [完全データ移行] の両方を選択します。
-
ダウンタイムを最小限に抑えた移行の場合は、スキーマ移行、[完全データ移行]、[増分データ移行] を選択します。
説明[増分データ移行] を選択しない場合は、データの一貫性を確保するため、移行中にソースデータベースに新しいデータを書き込まないでください。
移行対象
[利用可能] ボックスで移行するオブジェクトをクリックし、
アイコンをクリックして 選択中のオブジェクト ボックスに移動します。説明-
オブジェクトは、データベース、テーブル、または列レベルで選択できます。テーブルまたは列のみを選択した場合、ビュー、トリガー、ストアドプロシージャなどの他のオブジェクトは移行されません。
-
デフォルトでは、移行先データベースのオブジェクト名はソースデータベースと同じです。移行先データベースのオブジェクト名を変更するには、オブジェクト名マッピング機能を使用します。詳細については、「オブジェクト名マッピング」をご参照ください。
-
オブジェクト名マッピング機能を使用すると、依存オブジェクトの移行が失敗する可能性があります。
オブジェクト名マッピング
移行先インスタンスで移行されるオブジェクトの名前を変更するには、オブジェクト名マッピング機能を使用します。詳細については、「オブジェクト名マッピング」をご参照ください。
接続失敗時の再試行期間
デフォルトの再試行期間は 12 時間です。カスタム期間を指定することもできます。DTS が指定された時間内にデータベースに再接続すると、データ移行タスクは自動的に再開されます。そうでない場合、タスクは失敗します。
説明DTS タスクが接続を再試行している間は課金されます。ビジネスニーズに基づいてカスタムの再試行期間を設定するか、ソースインスタンスと移行先インスタンスが解放された後、できるだけ早く DTS インスタンスを解放することを推奨します。
DMS オンライン DDL によって作成された一時テーブルの移行
Data Management (DMS) を使用してソースデータベースでオンライン DDL 操作を実行する場合、これらの操作によって生成された一時テーブルを移行するかどうかを選択できます。
-
○:DTS はオンライン DDL 操作によって作成された一時テーブルからデータを移行します。
説明オンライン DDL 操作からの一時テーブルが非常に大きい場合、データ移行タスクに遅延が発生する可能性があります。
-
×:DTS は一時テーブルからデータを移行せず、ソースデータベースから元の DDL データのみを移行します。
説明このオプションは、移行先データベースでテーブルロックを引き起こす可能性があります。
-
-
これらの設定が完了したら、ページ右下隅の [事前チェックと開始] をクリックします。
説明-
DTS はタスクの開始前に事前チェックを実行します。タスクは事前チェックに合格した後にのみ開始できます。
-
事前チェックに失敗した場合は、失敗した項目の横にある
アイコンをクリックして詳細を表示します。-
詳細に基づいて問題を修正してから、事前チェックを再度実行します。
-
修正を必要としない警告については、無視 または [無視してプリチェックを再実行] を選択してプリチェックを再実行できます。
-
-
-
タスクが事前チェックに合格したら、次へ をクリックします。
-
注文の確認 ページで、インスタンスクラス を選択し、Data Transmission Service (従量課金) 利用規約 チェックボックスをオンにします。
-
購入して起動 をクリックしてデータ移行タスクを開始します。
移行タスクの停止
カットオーバーの影響を最小限に抑えるために、移行先データベースからソースデータベースに増分データをリアルタイムでレプリケートするロールバック計画を作成できます。詳細については、「カットオーバー手順」をご参照ください。ビジネスのカットオーバーが伴わない場合は、データ移行タスクを停止できます。
- 完全データ移行
完全データ移行中は、タスクを手動で停止しないでください。手動で停止すると、システムがすべてのデータを移行できなくなる可能性があります。移行タスクが自動的に終了するまでお待ちください。
- 増分データ移行
このタイプのタスクは自動的に停止しません。手動で停止する必要があります。
- タスクが 増分データ移行 段階に入り、ステータスが 遅延なし になるまで待ちます。その後、ソースデータベースへの書き込みを数分間停止します。この期間中、増分データ移行 のステータスで遅延が報告される場合があります。
- 増分データ移行 のステータスが 遅延なし に戻るまで待ちます。リストでこれが確認されたら、タスクのチェックボックスをオンにし、下部にあるバッチ操作バーの [停止][終了] ボタンをクリックします。
次のステップ
データ移行に使用したデータベースアカウントには、読み取りおよび書き込み権限があります。データベースのセキュリティを確保するため、移行完了後にこれらのアカウントを削除してください。
よくある質問
-
Q:事前チェックが失敗した場合はどうすればよいですか?
A:詳細については、「ソースデータベースの接続に関する問題のトラブルシューティング」をご参照ください。
-
Q:データ移行タスクが失敗した場合はどうすればよいですか?
A:詳細については、「失敗したデータ移行タスクの修正」をご参照ください。