Data Transmission Service (DTS) を使用すると、MySQL モードで動作する OceanBase データベースから ApsaraDB RDS for MySQL インスタンスへデータを移行できます。本ガイドに従って、移行タスクの構成から実行までの一連の操作を行ってください。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
ソースとなる OceanBase データベースが Community Edition V4.x であること
ターゲットとなる ApsaraDB RDS for MySQL インスタンスの利用可能なストレージ容量が、ソースデータベースの全データサイズより大きいこと。設定手順については、「ApsaraDB RDS for MySQL インスタンスの作成」をご参照ください。
必要な権限を持つデータベースアカウントが用意されていること。必要な権限の詳細については、後述の「必要な権限」をご参照ください。
課金
| 移行タイプ | タスク構成料金 | データ転送料金 |
|---|---|---|
| スキーマ移行 + 完全なデータ移行 | 無料 | 本例では無料 |
| 増分データ移行 | 課金済み | — |
増分データ移行の課金について詳しくは、「課金概要」をご参照ください。
制限事項
ハード制限
| カテゴリ | 制限内容 |
|---|---|
| ソースデータベースの種類 | OceanBase Community Edition V4.x のみ |
| ApsaraDB for OceanBase のソース | 中国 (深セン) または中国 (上海) のみで、クラスターインスタンスである必要があります。テナントインスタンスはサポートされていません。 |
| テーブル制約 | テーブルには PRIMARY KEY または一意制約(UNIQUE constraint)が必要であり、すべてのフィールドが一意である必要があります。これらの制約がないテーブルを使用すると、ターゲット側に重複レコードが発生する可能性があります。 |
| テーブル名変更タスクの上限 | 移行対象としてテーブルを選択し、ターゲット側でテーブル名またはカラム名を変更する場合、1 つのタスクで最大 1,000 個のテーブルまでサポートされます。1,000 個を超える場合は、複数のタスクをバッチ処理で実行するか、データベース全体を移行してください。 |
| GEOMETRY データ型 | 完全なデータ移行のみ対応。GEOMETRY データの増分移行はサポートされていません。 |
| 外部キー | DTS はスキーマ移行時に外部キーを移行します。完全移行および増分移行中は、DTS がセッションレベルで外部キー制約チェックおよびカスケード操作を一時的に無効化します。移行中にソース側でカスケード削除操作を実行すると、データの不整合が発生する可能性があります。 |
| カラム名の大文字小文字の区別 | 同一のターゲットテーブル内で、カラム名が大文字小文字のみ異なる場合、MySQL のカラム名はデフォルトで大文字小文字を区別しないため、予期しない移行結果になる可能性があります。 |
データ型の処理
| データ型 | 動作 |
|---|---|
| GEOMETRY | 完全なデータ移行のみ対応。増分移行はサポートされていません。 |
| FLOAT | DTS は ROUND(COLUMN, PRECISION) を使用します。精度(PRECISION)が指定されていない場合、DTS はデフォルトで 38 桁 を使用します。 |
| DOUBLE | DTS は ROUND(COLUMN, PRECISION) を使用します。精度(PRECISION)が指定されていない場合、DTS はデフォルトで 308 桁 を使用します。 |
FLOAT および DOUBLE のデフォルト精度設定が要件を満たすことを、移行開始前にご確認ください。
移行中のソースデータベースで許可される操作
| 移行フェーズ | ソース側で許可される操作 |
|---|---|
| スキーマ移行 + 完全なデータ移行 | 読み取り専用です。データベースまたはテーブルのスキーマを変更する DDL 文を実行しないでください。DDL 文を実行すると、タスクは失敗します。 |
| 完全なデータ移行のみ(増分なし) | 読み取り専用です。ソースデータベースへの書き込み操作を行わないでください。書き込み操作はデータの不整合を引き起こします。 |
留意事項
データベース名の命名規則:ソースデータベース名が ApsaraDB RDS for MySQL の命名規則に準拠していない場合、タスク構成前にターゲットデータベースを手動で作成してください。その後、「オブジェクトと高度な設定の構成」ステップで、オブジェクト名マッピング機能を用いて名前を変更します。
失敗したタスクの再試行:DTS は失敗した移行タスクを最大 7 日間自動的に再試行します。ワークロードをターゲット側に切り替える前に、失敗したタスクを停止またはリリースするか、
REVOKEを実行して DTS のターゲット側への書き込み権限を削除してください。これにより、タスク再開時にソースデータがターゲットデータを上書きするのを防げます。送信先での DDL の失敗: 送信先で DDL 文の実行に失敗した場合、DTS タスクは実行を継続します。詳細はタスクログで確認してください。「タスクログの表示」をご参照ください。
移行後の検証:移行完了後、
ANALYZE TABLE <table_name>を実行して、データが正常に書き込まれたことを確認してください。高可用性(HA)スイッチオーバーのシナリオでは、データがメモリ上にのみ存在し、永続化されないと失われる可能性があります。ソースデータベースのパフォーマンス:完全なデータ移行は、ソースおよびターゲット両方の負荷を増加させます。ピーク時間帯を避けて移行を実行し、必要に応じて速度制限を有効化してください。
ターゲットテーブルスペースのサイズ:完全移行中の同時 INSERT 操作により、テーブルの断片化が発生します。移行完了後、ターゲットのテーブルスペースはソースよりも大きくなります。
増分移行でサポートされる SQL 操作
| 操作タイプ | サポートされる文 |
|---|---|
| DML | INSERT、UPDATE、DELETE |
| DDL | ALTER TABLE、ALTER VIEW、CREATE FUNCTION、CREATE INDEX、CREATE PROCEDURE、CREATE TABLE、CREATE VIEW、DROP INDEX、DROP TABLE、TRUNCATE TABLE、RENAME TABLE |
RENAME TABLE 操作はデータの不整合を引き起こす可能性があります。移行中にテーブル名を変更し、そのテーブルが名前で移行対象として追加されていた場合、変更後のテーブルのデータは移行されません。これを防ぐには、個別のテーブルではなくデータベース全体を移行対象として追加し、名前変更前および変更後のデータベースの両方が含まれていることを確認してください。
必要な権限
| データベース | スキーマ移行 | 完全なデータ移行 | 増分データ移行 |
|---|---|---|---|
| OceanBase(ユーザーテナントまたは通常テナント) | SELECT | SELECT | 通常テナント |
| ApsaraDB RDS for MySQL | ターゲットデータベースに対する読み取りおよび書き込み権限 | ターゲットデータベースに対する読み取りおよび書き込み権限 | ターゲットデータベースに対する読み取りおよび書き込み権限 |
増分データ移行を行うには、ソース OceanBase データベースをホストするサーバーに oblogproxy をインストールし、[sys テナント] を設定します。oblogproxy は、増分ログを管理するためのプロキシサービスです。インストールパッケージを使用した「」「oblogproxy のインストールおよびデプロイ」「」「oblogproxy のインストールおよびデプロイ」をご参照ください。
データベースアカウントの作成および権限付与手順は以下のとおりです。
移行タスクの作成
移行ワークフローは 7 ステップで構成されています:データ移行タスクページへ移動 → ソースおよびターゲットデータベースの構成 → 接続性のテスト → 移行対象の選択 → 高度な設定の構成 → 事前チェックの実行 → インスタンスの購入およびタスクの開始です。
ステップ 1:データ移行タスクページへ移動
Data Management (DMS) コンソールにログインします。
トップナビゲーションバーで、DTS をクリックします。
左側のナビゲーションウィンドウで、DTS (DTS) > データ移行 を選択します。
また、データ移行タスクページに直接アクセスすることもできます。コンソールのレイアウトは異なる場合があります。「シンプルモード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。
データ移行タスク の横にあるドロップダウンリストから、移行インスタンスを配置するリージョンを選択します。
新しい DTS コンソールでは、左上隅のリージョンを選択してください。
ステップ 2:ソースおよびターゲットデータベースの構成
タスクの作成 をクリックします。[データ移行タスクの作成] ページで、以下のパラメーターを構成します。
ソースデータベース
| パラメーター | 説明 |
|---|---|
| 既存の DMS データベースインスタンスを選択 | 任意項目です。選択すると、DTS がデータベースパラメーターを自動的に入力します。 |
| データベースタイプ | ApsaraDB OceanBase for MySQL を選択します。 |
| アクセス方法 | ソースデータベースのデプロイ先に応じて選択します。本例では パブリック IP アドレス を使用します。自己管理型データベースの場合は、あらかじめ環境を準備してください。「事前準備の概要」をご参照ください。 |
| インスタンスリージョン | ソース OceanBase データベースが配置されているリージョンです。 |
| IP アドレスまたはドメイン名 | ソース OceanBase データベースのエンドポイントです。 |
| ポート番号 | サービスポートです。デフォルト値:2881。 |
| ログプロキシの IP アドレス(ドメイン名は非対応) | ソース OceanBase データベース向けの oblogproxy の IP アドレスです。 |
| ログプロキシのポート | oblogproxy のリスニングポートです。デフォルト値:2983。 |
| データベースアカウント | ソース OceanBase データベースのアカウントです。「必要な権限」をご参照ください。 |
| データベースパスワード | データベースアカウントのパスワードです。 |
ターゲットデータベース
| パラメーター | 説明 |
|---|---|
| 既存の DMS データベースインスタンスを選択 | 任意項目です。選択すると、DTS がデータベースパラメーターを自動的に入力します。 |
| データベースタイプ | MySQL を選択します。 |
| アクセス方法 | Alibaba Cloud インスタンス を選択します。 |
| インスタンスリージョン | ターゲット ApsaraDB RDS for MySQL インスタンスが配置されているリージョンです。 |
| Alibaba Cloud アカウント間でのデータ複製 | 同一アカウント内での移行の場合は、いいえ を選択します。 |
| RDS インスタンス ID | ターゲット ApsaraDB RDS for MySQL インスタンスの ID です。 |
| データベースアカウント | ターゲットデータベースのアカウントです。「必要な権限」をご参照ください。 |
| データベースパスワード | データベースアカウントのパスワードです。 |
| 暗号化 | [暗号化なし] または [SSL 暗号化] を選択します。SSL を使用するには、まず RDS インスタンスで SSL 暗号化を有効化する必要があります。詳しくは、「SSL 暗号化の設定」をご参照ください。 |
ステップ 3:接続性のテストおよび IP アドレスホワイトリストの構成
接続性のテストと続行 をクリックします。
ソースまたはターゲットデータベースで IP アドレスホワイトリストを使用している場合、DTS サーバーの CIDR ブロックをホワイトリストに追加してください。
| データベースの配置場所 | CIDR ブロックの追加方法 |
|---|---|
| Alibaba Cloud データベースインスタンス(ApsaraDB RDS for MySQL、ApsaraDB for MongoDB など) | DTS が自動的に CIDR ブロックを追加します。 |
| Elastic Compute Service (ECS) 上の自己管理型データベース | DTS が自動的に ECS セキュリティグループルールに CIDR ブロックを追加します。データベースが複数の ECS インスタンスにまたがっている場合は、各インスタンスのセキュリティグループに CIDR ブロックを手動で追加してください。 |
| データセンターまたはサードパーティクラウド上の自己管理型データベース | CIDR ブロックを手動で追加してください。「DTS サーバーの CIDR ブロック」をご参照ください。 |
公開 CIDR ブロックをデータベースのホワイトリストや ECS セキュリティグループに追加すると、セキュリティリスクが発生します。実行前に、強力な認証情報を使用する、公開ポートを最小限に抑える、API 呼び出しを認証する、ホワイトリストルールを定期的に監査する、不正な CIDR ブロックを削除するなどの予防措置を講じてください。より安全な接続を実現するには、Express Connect、VPN Gateway、または Smart Access Gateway をご検討ください。
ソースデータベースが ApsaraDB for OceanBase インスタンスの場合、DTS サーバーの CIDR ブロックを ApsaraDB for OceanBase の IP アドレスホワイトリストに手動で追加してください。アクセス方法 が Express Connect、VPN Gateway、または Smart Access Gateway のデータベースと同じ CIDR ブロックを使用します。「ホワイトリストグループの作成」および「DTS サーバーの CIDR ブロック」をご参照ください。
ステップ 4:移行タイプおよび移行対象の選択
以下のパラメーターを構成します。
移行タイプ
ダウンタイムの要件に応じて、移行タイプを選択してください。
| タイプ | 使用タイミング | 備考 |
|---|---|---|
| スキーマ移行 + 完全なデータ移行 | 計画的なダウンタイム期間を伴う 1 回限りの移行 | 移行中はソースデータベースへの書き込み操作を行わないでください。 |
| スキーマ移行 + 完全なデータ移行 + 増分データ移行 | ほぼゼロダウンタイムの移行。切り替え時にソースおよびターゲットを同期状態に保ちます。 | ソースサーバーに oblogproxy のインストールが必要です。 |
オブジェクトおよび高度な設定
| パラメーター | 説明 |
|---|---|
| ソースデータベース内のトリガーの移行方法 | スキーマ移行が選択された場合に利用可能です。要件に応じて選択してください。「トリガーの同期または移行」をご参照ください。 |
| 競合するテーブルの処理モード | 事前チェックを行いエラーを報告:ソースおよびターゲットでテーブル名が重複している場合、事前チェックが失敗します。エラーを無視して続行:チェックをスキップしますが、データの不整合や部分的な移行失敗のリスクがあります。 |
| ターゲットインスタンスにおけるオブジェクト名の大文字小文字の区別 | ターゲット側のデータベース名、テーブル名、カラム名の大文字小文字の区別を制御します。デフォルト値:DTS デフォルトポリシー送信先インスタンスにおけるオブジェクト名の大文字小文字の指定。「」をご参照ください。 |
| ソースオブジェクト | ソースオブジェクト セクションからオブジェクトを選択し、 アイコンを使用して 選択済みオブジェクト |
| 選択済みオブジェクト | オブジェクトを右クリックして名前を変更します。[一括編集] をクリックして、複数のオブジェクトを一度に名前変更します。「オブジェクト名のマッピング」をご参照ください。行フィルター条件を設定するには、テーブルを右クリックして WHERE 条件を指定します。「フィルター条件の設定」をご参照ください。 |
オブジェクト名マッピングにより、依存オブジェクトの移行が失敗する可能性があります。完全なテーブル移行以外のカラムマッピングや、ソースとターゲットのスキーマの不一致は、マッピングされていないカラムのデータ損失につながる可能性があります。
ステップ 5:高度なタスク設定の構成
次へ:高度な設定 をクリックし、以下の設定を構成します。
| パラメーター | 説明 |
|---|---|
| タスクスケジューリング用の専用クラスター | デフォルトでは、DTS は共有クラスターを使用します。より高い安定性を得るために、専用クラスターを購入してください。詳細については、「DTS 専用クラスターとは」をご参照ください。 |
| アラートの設定 | タスクの失敗またはしきい値を超える移行遅延に対してアラート機能を設定します。[はい] を選択して、アラートのしきい値と通知の連絡先を指定します。詳細については、「モニタリングとアラートの設定」をご参照ください。 |
| 接続失敗時の再試行時間 | 範囲:10~1440 分。デフォルト値:720 分。30 分を超える値を設定することを推奨します。この時間内に再接続されればタスクは再開されますが、それより長くかかるとタスクは失敗します。複数のタスクが同じソースまたはターゲットを共有する場合、最も最近設定された値が適用されます。 |
| その他の問題発生時の再試行時間 | 範囲:1~1440 分。デフォルト値:10 分。10 分を超える値を設定することを推奨します。また、接続失敗時の再試行時間 よりも短い値を指定する必要があります。 |
| 完全なデータ移行の速度制限の有効化 | 完全移行中のソースおよびターゲットへの読み取り/書き込み負荷を制限します。ソースデータベースへの QPS、完全データ移行の RPS、データ移行速度(MB/s) を設定します。完全データ移行が選択されている場合にのみ利用可能です。 |
| 増分データ移行の速度制限の有効化 | 増分移行中の負荷を制限します。増分データ移行の RPS および データ移行速度(MB/s) を設定します。増分データ移行が選択されている場合にのみ利用可能です。 |
| 環境タグ | 任意項目です。DTS インスタンスに環境識別用のタグを付与できます。 |
| ETL の構成 | ETL(抽出・変換・書き出し)機能を有効化して、移行中にデータ変換を適用します。詳細については、「ETL とは?」および「ETL の設定」をご参照ください。 |
ステップ 6:事前チェックの実行
次へ:タスク設定の保存および事前チェック をクリックします。
OpenAPI を使用してこのタスクを構成する場合のパラメーターをプレビューするには、次へ:タスク設定の保存および事前チェック の上にカーソルを合わせ、OpenAPI パラメーターのプレビュー をクリックしてください。
DTS は、移行タスクを開始する前に事前チェックを実行します。
チェック項目が 失敗 した場合: 詳細の表示 をクリックして問題を解決し、再チェック をクリックします。
チェック項目に アラート が表示された場合:安全に無視できるかどうかを判断してください。無視する場合は、詳細の表示 > 無視 > OK > 再チェック の順にクリックします。アラートを無視すると、データの不整合が発生する可能性があります。
成功率が 100% になるまでお待ちください。
ステップ 7:移行インスタンスの購入およびタスクの開始
次へ:インスタンスの購入 をクリックします。
インスタンスの購入 ページで、以下の設定を行います。
セクション パラメーター 説明 新規インスタンスクラス リソースグループ設定 移行インスタンスのリソースグループです。デフォルト値:デフォルトリソースグループResource Management とは インスタンスクラス インスタンスクラスは、移行速度を決定します。詳細については、「データ移行インスタンスの仕様」をご参照ください。 Data Transmission Service(従量課金)利用規約 のチェックボックスをオンにして、規約内容をご確認ください。
購入および開始 をクリックします。
移行タスクが開始されます。タスクリストで進捗状況を確認できます。
よくある質問
oblogproxy をインストールしていない場合、ログプロキシ関連のフィールドには何を入力すればよいですか?
ログプロキシの IP アドレス(ドメイン名は非対応) および ログプロキシのポート にはデフォルト値を使用し、増分データ移行 を 移行タイプ で選択しないでください。oblogproxy がインストールされていない状態で増分移行を選択すると、エラーが発生します。
ソース OceanBase データベースのリージョンが [インスタンスリージョン] のドロップダウンリストにありません。何を選択すればよいですか?
ソース OceanBase データベースに最も近いリージョンを選択してください。
ソース OceanBase データベースがクラスターでデプロイされています。[ドメイン名または IP] パラメーターには何を入力すればよいですか?
クラスター作成時に OBServer ノード として指定した値を入力してください。
クラスター構成の OceanBase デプロイメントで、ポート番号をどのように設定すればよいですか?
ソース OceanBase データベースがスタンドアロンモードの場合は、デフォルトポートを使用してください。クラスターでデプロイされている場合は、クラスター作成時に指定した SQL ポート の値を使用してください。
ソース OceanBase データベースの [データベースアカウント] フィールドの形式は?
<username>@<tenant_name> の形式を使用してください。たとえば、ユーザー名が dtstest、テナント名が dts の場合、dtstest@dts と入力します。