Huawei DRS(Data Replication Service、データレプリケーションサービス)は、Huawei Cloudが提供するデータ移行および同期サービスであり、さまざまなデータベース間のデータ移行とデータ同期をサポートしています。フル移行、増分移行、オブジェクト移行などの機能を備えています。Huawei Cloudコンソールで移行タスクを作成・設定することで、MySQLからOceanBaseデータベースへのデータ移行を実現できます。
バージョン互換性
Huawei DRSとOceanBaseデータベースのバージョン互換性は、次の表のとおりです。
コンポーネント |
バージョン要件 |
|---|---|
| OceanBaseデータベース | ≥ V4.2.5 BP1 |
| ODP(OceanBase Database Proxy) | ≥ V4.3.1 |
前提条件
Huawei DRSを使用する前に、以下の点を確認してください:
- OceanBaseデータベースがデプロイ済みで、MySQLモードのユーザーテナントが作成されていること。テナント作成の詳細については、テナントの作成を参照してください。
- Huawei Cloudアカウントが開設済みで、DRSサービスにご契約いただいていること。DRSサービスの詳細については、Huawei Cloud DRS製品ドキュメントを参照してください。
- 増分移行を行う場合は、作成したMySQL互換モードのテナントでBinlogサービスが有効になっていること。詳細については、OceanBase Binlogサービスを参照してください。
手順
ステップ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:DRS移行タスクを設定する
- Huawei Cloudコンソールにログインし、データレプリケーションサービス DRS のサービスページに移動します。
- リアルタイム移行管理 を選択し、移行タスクの作成 をクリックして、ソースデータベースとターゲットデータベースのタイプなどの情報を選択します。
- ソースデータベース 接続情報(MySQL)を設定します。
- ターゲットデータベース 接続情報(OceanBase)を設定します。
- 移行タイプ(フル移行、フル+増分移行)と移行オブジェクトを選択します。
ステップ3:事前チェックを実行する
- 移行タスクの設定が完了したら、DRSコンソールで事前チェックを開始します。
- DRSは移行環境をチェックします。主にネットワーク接続性、データベースパラメータ、ディスク容量などの項目を確認します。
- 事前チェックに失敗した場合は、ページの指示に従って関連する問題を修正し、チェックが通過するまで再度事前チェックを実行します。
ステップ4:移行タスクを開始する
- 事前チェックに合格したら、DRSコンソールで移行タスクの開始をクリックします。
- タスクが開始されると、コンソールで移行の進捗状況と実行状態を確認できます。
- 移行が完了した後、ソースデータベースとターゲットデータベースのデータ一貫性を検証し、移行結果が正しいことを確認することを推奨します。
結果の検証
移行タスクが完了した後、以下の方法で移行結果を検証できます:
- DRSコンソールで移行タスクの状態を確認し、成功と表示されていることを確認します。
- ソースデータベースとターゲットデータベースのデータ量を比較し、データの一貫性を確認します。
- 移行されたオブジェクト(テーブル、ビュー、ストアドプロシージャ、関数など)が完全であるか確認します。
よくある質問
Q1:プリチェック段階でタイムアウトエラーが発生しました。どう対処しますか?
原因:3段階の名前付け形式(例:root@テナント#クラスタ)を使用しているため、DRSがmysql.userテーブルで対応するユーザーレコードを見つけられず、クエリがタイムアウトしました。
解決策:1段階の名前付け形式(例:root)を使用し、3段階の名前付けは避けてください。
Q2:オブジェクト移行時にビューの作成に失敗しました。どう対処しますか?
原因:OceanBaseはDEFINER='root'@'%'形式のSQL構文をサポートしていないため、ビューの作成に失敗しました。
解決策:ビュー定義を手動で変更し、DEFINER='root'@'%'をDEFINER='root'に変更します。
Q3:増分移行時にdefault_collation_for_utf8mb4変数が欠けているというエラーが表示されました。どう対処しますか?
原因:OceanBaseの一部のバージョンではdefault_collation_for_utf8mb4変数が実装されておらず、DRSがこの変数の欠落を検出した際にエラーが発生しました。
解決策:OceanBaseをV4.2.5.1以降のバージョンにアップグレードしてください。このバージョンでは関連する変数がサポートされています。