データ転送サービスDTS(Data Transmission Service)は、Alibaba Cloudが提供するリアルタイムデータストリームサービスであり、リレーショナルデータベース、非リレーショナルデータベース、多次元データ分析などのデータソース間のデータ連携をサポートしています。データ同期、移行、サブスクリプション、統合、加工を一体化しています。DTSを利用することで、DDLおよびDML操作を含むMySQLとOceanBase間の双方向データ同期を実現できます。
バージョン互換性
コンポーネント |
バージョン要件 |
|---|---|
| OceanBaseデータベース | ≥ V4.x |
前提条件
DTSを使用する前に、以下の事項を確認してください:
- Alipay CloudのDTSサービスが有効であること。
- OceanBaseデータベースのデプロイが完了し、MySQLモードのユーザーテナントが作成されていること。テナント作成の詳細については、テナントの作成を参照してください。
- 増分移行が必要な場合は、作成したMySQL互換モードのテナントでBinlogサービスが有効であること。詳細については、OceanBase Binlogサービスを参照してください。
- ネットワーク接続が設定済みであり、DTSがプライベートネットワーク経由でOceanBaseにアクセスできることを確認してください。
手順
ステップ1:OceanBaseデータベースの接続文字列を取得する
OceanBaseデータベースのデプロイ担当者から接続文字列を取得します。例:
obclient -h$host -P$port -u$user_name -p$password -D$database_name
パラメータ説明:
$host:接続IP。ODP接続はODPアドレスを使用し、直接接続はOBServer IPを使用します。$port:接続ポート。ODPはデフォルトで2883、直接接続はデフォルトで2881です。$database_name:データベース名。注意
テナントに接続するユーザーは、データベースに対する
CREATE、INSERT、DROP、およびSELECT権限が付与されていなければなりません。ユーザー権限の詳細については、MySQLモードの権限分類を参照してください。$user_name:接続アカウント。ODP形式:ユーザー@テナント#クラスタまたはクラスタ:テナント:ユーザー、直接接続形式:ユーザー@テナント。$password:アカウントのパスワード。
接続文字列の詳細については、OBClientを使用してOceanBaseテナントに接続するを参照してください。
例:
obclient -hxxx.xxx.xxx.xxx -P2881 -utest_user001@mysql001 -p****** -Dtest
ステップ2:DTS同期タスクの設定と起動
- Alipay Cloud DTSコンソールにログインし、データ同期を選択し、タスクの作成をクリックします。
- ソースデータベースおよびターゲットデータベースの設定ページで、以下の情報を設定します:
- タスク名:タスク名を入力します。
- データベースタイプ:ソースデータベースとターゲットデータベースはどちらもMySQLを選択します。
- アクセス方式:ソースデータベースではクラウド実機またはECS自構築データベースを選択でき、ターゲットデータベースでは専用線/VPNゲートウェイ/スマートゲートウェイを選択します。
- ソースデータベース情報:MySQLの接続情報を入力します。
- ターゲットデータベース情報:OceanBaseの接続情報(ステップ1で取得した接続文字列を使用)を入力します。
- タスクオブジェクトの設定で、同期するデータベースとテーブルを選択し、データ検証ルールを設定してデータの一貫性を確保します。
- 事前チェックを実行し、設定が正しいことを確認します。
- 事前チェックが通過したら、同期タスクを起動します。
- 同期タスクリストでタスク状態を確認し、タスクが正常に実行されていることを確認します。
ステップ3:結果の検証
正方向同期の検証
MySQLでDDLまたはDML操作を実行し、OceanBaseに正常に同期されているか確認します。例えば、MySQLで以下の操作を実行します:
ALTER TABLE coffee_sales ADD COLUMN quantity INT NOT NULL DEFAULT 1 COMMENT 'Purchase quantity';
OceanBaseでテーブル構造を確認し、フィールドが追加されていることを確認します。
反方向同期の検証
OceanBaseでDML操作を実行し、MySQLに正常に同期されているか確認します。例えば、OceanBaseで以下の操作を実行します:
UPDATE coffee_sales SET quantity = 2 WHERE id = 1;
MySQLでデータをクエリし、更新が同期されていることを確認します。