Data Transmission Service (DTS) を使用すると、PolarDB-X 2.0 インスタンスから Tablestore インスタンスへデータを最小限のダウンタイムで移行できます。この手法はスキーマ移行、完全なデータ移行、および増分データ移行をサポートしており、移行実行中もソースデータベースをオンライン状態で維持できます。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
Tablestore インスタンス。設定手順については、「Tablestore の使用」をご参照ください。
Tablestore インスタンスを所有する Alibaba Cloud アカウント(Resource Access Management (RAM) ユーザーではなく)の AccessKey ID および AccessKey Secret。詳細については、「AccessKey ペアの作成」をご参照ください。
RAM ユーザーの AccessKey ID を使用した場合、必要な権限が付与されていないため、データ移行タスクが失敗する可能性があります。代わりに Alibaba Cloud アカウントの認証情報をご使用ください。
制限事項
ソースデータベース
| 制約 | 詳細 |
|---|---|
| 主キーまたは一意制約 | テーブルには、すべてのフィールドが一意となる PRIMARY KEY または UNIQUE 制約が必要です。この制約がない場合、送信先に重複レコードが含まれる可能性があります。 |
| テーブル名の大文字小文字 | テーブル名に大文字が含まれるテーブルはスキーマ移行のみをサポートします。これらのテーブルに対してフル移行および増分移行はサポートされません。 |
| タスクあたりの最大テーブル数 | テーブルを個別に移行してリネームする場合、最大 5,000 テーブルまで対応可能です。この上限を超えるとリクエストエラーが発生します。より多くのテーブルを移行するには、作業を複数のタスクに分割するか、データベース全体を移行してください。 |
| バイナリログ | binlog_row_image パラメーターは full に設定されている必要があります。設定されていない場合、事前チェックが失敗し、タスクを開始できません。詳細については、「Parameter settings」をご参照ください。 |
宛先(Tablestore)
| 制約 | 詳細 |
|---|---|
| 最大テーブル数 | Tablestore インスタンスあたり最大 64 テーブルまで対応可能です。この上限を超えると移行エラーが発生します。上限引き上げについては、Tablestore テクニカルサポートにお問い合わせください。 |
| テーブルおよびカラム名の命名規則 | 名前には英字、数字、およびアンダースコア(_)のみを使用でき、先頭文字は英字またはアンダースコアである必要があります。長さは 1~255 文字です。 |
| オブジェクトの範囲 | 1 つのタスクで移行できるのは、1 つのデータベース(または同一データベース内の複数テーブル)のみです。データベースレベルの名前マッピングはサポートされていません。 |
全般
非ピーク時間帯に移行を実行してください。完全なデータ移行では、ソースおよび宛先の両方で大量の読み取り/書き込みリソースが使用されるため、データベースサーバーの負荷が高まります。
完全なデータ移行により、宛先テーブルに断片化(fragmentation)が発生します。移行後、宛先のストレージ使用量はソースのストレージ使用量を上回ります。
移行中は、宛先へのデータ書き込みを DTS 経由でのみ行ってください。他の手段からの書き込みは、ソースと宛先間のデータの不整合(data inconsistency)を引き起こします。
課金
| 移行タイプ | インスタンス構成料金 | インターネットトラフィック料金 |
|---|---|---|
| スキーマ移行および完全なデータ移行 | 無料 | 無料 |
| 増分データ移行 | 有料。詳細については、「課金概要」をご参照ください。 | — |
増分移行でサポートされる SQL 操作
| 操作タイプ | SQL ステートメント |
|---|---|
| DML | INSERT、UPDATE、DELETE |
必要なデータベースアカウント権限
| データベース | スキーマ移行 | 完全なデータ移行 | 増分データ移行 |
|---|---|---|---|
| ソース PolarDB-X 2.0 | SELECT | SELECT | REPLICATION SLAVE、REPLICATION CLIENT、および移行対象オブジェクトに対する SELECT |
アカウントの作成および権限の付与手順については、「データベースアカウントの管理」および「データ同期用アカウントに必要な権限」をご参照ください。
移行タスクの作成
ステップ 1:データ移行タスクページを開く
Data Management (DMS) コンソールにログインします。
トップナビゲーションバーで、DTS をクリックします。
左側ナビゲーションウィンドウで、DTS (DTS) > データ移行 を選択します。
上記の手順は、DMS コンソールのモードおよびレイアウトによって異なる場合があります。詳細については、「簡易モード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。また、「新しい DTS コンソールのデータ移行タスクページ」に直接アクセスすることもできます。
ステップ 2:リージョンの選択
データ移行タスク の横にあるドロップダウンリストから、データ移行インスタンスが配置されているリージョンを選択します。
新しい DTS コンソールでは、ページの左上隅からリージョンを選択します。
ステップ 3:ソースおよび宛先データベースの構成
タスクの作成 をクリックします。表示される タスクの作成 ウィザードで、以下のパラメーターを構成します。
ソースデータベース
| パラメーター | 説明 |
|---|---|
| 既存の DMS データベースインスタンスを選択 | (任意)接続設定を自動入力するために既存の DMS インスタンスを選択するか、手動で構成する場合は空欄のままにしてください。 |
| データベースタイプ | PolarDB-X 2.0 を選択します。 |
| アクセス方法 | Alibaba Cloud インスタンス を選択します。 |
| インスタンスリージョン | ソース PolarDB-X 2.0 インスタンスが配置されているリージョンです。 |
| Alibaba Cloud アカウント間でのデータ複製 | ソースと宛先が同一アカウント内にある場合は、いいえ を選択します。 |
| インスタンス ID | ソース PolarDB-X 2.0 インスタンスの ID です。 |
| データベースアカウント | 「必要なデータベースアカウント権限」セクションに記載された権限を持つアカウントです。 |
| データベースパスワード | データベースアカウントのパスワードです。 |
宛先データベース
| パラメーター | 説明 |
|---|---|
| 既存の DMS データベースインスタンスを選択 | (任意)接続設定を自動入力するために既存の DMS インスタンスを選択するか、手動で構成する場合は空欄のままにしてください。 |
| データベースタイプ | Tablestore を選択します。 |
| アクセス方法 | Alibaba Cloud インスタンス を選択します。 |
| インスタンスのリージョン | 送信先の Tablestore インスタンスが配置されているリージョンです。 |
| インスタンス ID | 送信先の Tablestore インスタンスの ID です。 |
| Alibaba Cloud アカウントの AccessKey ID | Tablestore インスタンスを所有する Alibaba Cloud アカウントの AccessKey ID です。RAM ユーザーの AccessKey ID は使用しないでください。 |
| Alibaba Cloud アカウントの AccessKey シークレット | Tablestore インスタンスを所有する Alibaba Cloud アカウントの AccessKey Secret。 |
ステップ 4:接続性のテスト
接続性のテストと続行 をクリックします。
DTS は、自動的にそのサーバーの CIDR ブロックを Alibaba Cloud データベースインスタンスの IP ホワイトリストに追加します。Elastic Compute Service (ECS) インスタンス上の自己管理データベースの場合、DTS は CIDR ブロックを ECS セキュリティグループルールに追加します。自己管理データベースが複数の ECS インスタンスにまたがる場合、各インスタンスのセキュリティグループに DTS の CIDR ブロックを手動で追加します。オンプレミスまたはサードパーティクラウドのデータベースの場合、データベースの IP ホワイトリストに CIDR ブロックを手動で追加します。詳細については、「オンプレミスデータベースのセキュリティ設定に DTS サーバーの CIDR ブロックを追加する」をご参照ください。
IP ホワイトリストやセキュリティグループルールへの DTS サーバー CIDR ブロックの追加は、セキュリティリスクを伴います。続行する前に、以下の予防措置を講じてください:アカウントおよびパスワードのセキュリティ強化、公開ポートの制限、API 呼び出しの認証、IP ホワイトリストおよびセキュリティグループルールの定期的な監査、Express Connect、VPN Gateway、または Smart Access Gateway を使用したデータベースと DTS 間の接続確立。
ステップ 5:オブジェクトおよび移行設定の構成
以下のパラメーターを構成します。
移行タイプ
| オプション | 使用タイミング |
|---|---|
| スキーマ移行 + 完全なデータ移行 | ワンタイム移行。データ整合性を確保するため、移行中にソースデータベースへの書き込みを行わないことを推奨します。 |
| スキーマ移行 + 完全なデータ移行 + 増分データ移行 | 最小ダウンタイム移行。DTS は完全移行中にソースからの変更を継続してキャプチャし、その後宛先に適用します。 |
増分データ移行 を選択しない場合、データ整合性を確保するため、移行中にソースデータベースへの書き込みを行わないことを推奨します。
競合処理
| パラメーター | オプション | 動作 |
|---|---|---|
| 競合テーブルの処理モード | 事前チェックを実行してエラーを報告 | オブジェクト名マッピング送信先テーブルとソーステーブルが同一名称を持つ場合、事前チェックは失敗します。タスク開始前にを用いてテーブル名を変更してください。 |
| エラーを無視して続行 | 事前チェックをスキップします。プライマリキーが一致する行は移行されません。スキーマの差異により、部分的な移行またはタスクの失敗が発生する可能性があります。慎重に使用してください。 |
Tablestore 固有の設定
| パラメーター | オプションおよびガイドライン |
|---|---|
| 不正データの処理ポリシー | スキップ では、書き込みエラーを無視して続行します。ブロック では、書き込みエラー発生時にタスクを停止します。 |
| データ書き込みモード | 行の上書き では、UpdateRowChange 操作を使用して Tablestore インスタンス内の行を上書きします。行の更新 では、PutRowChange 操作を使用して Tablestore インスタンス内の行を更新します。 |
| バッチ書き込みモード | BulkImportRequest では、オフラインでデータを書き込み、より高い読み取り/書き込み効率と低コストを実現します。BatchWriteRowRequest では、データをバッチ単位で書き込みます。より高い効率を実現し、Tablestore インスタンスの利用コストを削減するには、BulkImportRequest をご使用ください。 |
| 詳細設定(高度な設定) | キュー長:書き込みキューの長さ。スレッド数:書き込みコールバックスレッドの数。同時実行数:最大同時書き込みスレッド数。バケット数:増分データ向けの最大同時バケット数(同時実行数以下である必要があります)。 |
オブジェクト選択
| パラメーター | 説明 |
|---|---|
| 操作タイプ | 移行対象の DML 操作タイプです。デフォルトですべてのタイプが選択されています。 |
| 宛先インスタンスにおけるオブジェクト名の大文字小文字表記 | 宛先におけるデータベース、テーブル、カラム名の大文字小文字表記を制御します。デフォルトは DTS デフォルトポリシー宛先インスタンスにおけるオブジェクト名の大文字/小文字の指定 です。「」をご参照ください。 |
| ソースオブジェクト | 移行対象のテーブルまたはデータベースを選択し、矢印アイコンをクリックして 選択済みオブジェクト に追加します。Tablestore では、1 つのタスクで 1 つのデータベース、または同一データベース内の複数テーブルのみの移行がサポートされます。 |
| 選択済みオブジェクト | オブジェクトを右クリックして名前を変更できます。一括編集 をクリックすると、複数のオブジェクトの名前を一度に変更できます。注:データベース名のマッピングはサポートされていません — テーブル名およびカラム名のみのマッピングが可能です。行をフィルターするには、テーブルを右クリックして SQL 条件を指定します。「SQL 条件を使用したデータのフィルタリング」をご参照ください。 |
ステップ 6:高度な設定の構成
次へ:高度な設定 をクリックし、以下のパラメーターを構成します。
| パラメーター | 説明 |
|---|---|
| タスクのスケジュールに使用する専用クラスターの選択 | デフォルトでは、DTSはタスクを共有クラスターにスケジュールします。専用リソースには、専用クラスターを選択します。詳細については、「DTS専用クラスターとは」をご参照ください。 |
| アラートの設定 | タスクが失敗した場合、または移行遅延がしきい値を超えた場合に通知を受信するには、[はい] を選択します。アラート連絡先としきい値を指定します。「モニタリングとアラートの設定」をご参照ください。 |
| 接続失敗時の再試行時間 | DTS が接続失敗後にタスクを失敗とみなすまでの再試行時間です。範囲:10~1440 分。デフォルト:720 分。一時的な障害の復旧時間を確保するため、少なくとも 30 分に設定することを推奨します。 |
| ソースおよび宛先データベースでその他の問題が発生した際の再試行待機時間 | DTS が失敗した DDL または DML 操作を再試行する待機時間です。範囲:1~1440 分。デフォルト:10 分。少なくとも 10 分に設定することを推奨します。この値は 接続失敗時の再試行時間 より小さくする必要があります。 |
| 完全なデータ移行のスロットル機能の有効化 | 完全移行中のソースおよび宛先への読み取り/書き込み負荷を制限します。ソースデータベースへの QPS、完全なデータ移行の RPS、および 完全移行のデータ移行速度(MB/s) を構成します。完全なデータ移行 が選択されている場合にのみ表示されます。 |
| 増分データ移行のスロットル機能の有効化 | 増分移行中の負荷を制限します。増分データ移行の RPS および 増分移行のデータ移行速度(MB/s) を構成します。増分データ移行 が選択されている場合にのみ表示されます。 |
| 環境タグ | DTS インスタンスを識別するための任意のタグです。 |
| ETL の構成 | 本移行経路では、抽出・変換・読み込み(Extract, transform, and load: ETL)はサポートされていません。いいえ を選択します。 |
| 転送および逆再生タスクのハートビートテーブルに対する SQL 操作を削除するかどうか | ハートビートテーブル(heartbeat table)への DTS の書き込みを防止するには、はい を選択します。この場合、DTS インスタンスの遅延が表示される可能性があります。ハートビート操作を書き込むには、いいえ を選択します。この場合、物理バックアップ(physical backup)やソースデータベースのクローン作成などの特定機能に影響が出る可能性があります。 |
ステップ 7:プライマリキー列の構成
次へ:データベースおよびテーブルフィールドの構成 をクリックします。表示される 注意 ダイアログボックスで、OK をクリックします。
DTS は、各テーブルのプライマリキー列を自動的に Tablestore の プライマリキー列 にマッピングします。マッピングを変更するには、定義ステータス を すべて に設定し、ドロップダウンリストから 1 つ以上の列を選択して複合プライマリキーを作成します。
ステップ 8:事前チェックの実行
次へ:タスク設定の保存および事前チェック をクリックします。
保存前にこの構成の API パラメーターをプレビューするには、次へ:タスク設定の保存および事前チェック 上にマウスを合わせ、OpenAPI パラメーターのプレビュー をクリックします。
タスクは開始前に事前チェック(precheck)を実行します。事前チェック項目が失敗した場合:
失敗した項目の横にある 詳細の表示 をクリックし、問題を解決した後、再チェック をクリックします。
警告項目が安全に無視できる場合は、警告詳細の確認 をクリックし、無視 をクリックし、OK をクリックして確認した後、再チェック をクリックします。
事前チェックの警告を無視すると、データの不整合が発生する可能性があります。その影響を十分理解したうえで続行してください。
ステップ 9:事前チェックの完了を待機
成功確率 が 100 % になるまで待機し、その後 次へ:インスタンスの購入 をクリックします。
ステップ 10:インスタンスクラスの構成
インスタンスの購入 ページで、新規インスタンスクラス の下で以下のパラメーターを構成します。
| パラメーター | 説明 |
|---|---|
| リソースグループ | DTS インスタンスのリソースグループです。デフォルト: デフォルトリソースグループResource Management とは |
| インスタンスクラス | 移行スループットを制御します。データ量および時間制約に基づいてクラスを選択します。詳細については、「データ移行インスタンスの仕様」をご参照ください。 |
ステップ 11:サービス利用規約の承諾
Data Transmission Service(従量課金)サービス利用規約 を読み、チェックボックスをオンにして承諾します。
ステップ 12:移行の開始
購入して開始 をクリックします。タスクはタスクリストに表示され、進行状況を監視できます。