Huawei DRS(Data Replication Service、データレプリケーションサービス)は、Huawei Cloudが提供するデータ移行および同期サービスであり、さまざまなデータベース間のデータ移行とデータ同期をサポートしています。フル移行、増分移行、オブジェクト移行などの機能を備えています。Huawei Cloudコンソールを使用して移行タスクを作成・設定することで、MySQLからOceanBase MySQLへのデータ移行を実現できます。
バージョン互換性
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:事前チェック段階でタイムアウトエラーが発生しました。どう対処すればよいですか?
原因:三段階の命名形式(例:root@テナント#クラスタ)を使用していたため、DRSが mysql.user テーブルで対応するユーザーレコードを見つけられず、クエリがタイムアウトしました。
解決策:一段階の命名形式(例:root)を使用し、三段階の命名を避けてください。
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以降のバージョンにアップグレードします。このバージョンから関連する変数がサポートされています。