OceanBase Cloudのデータベース移行機能とリージョン間同期機能を活用することで、効率的にクロスクラウドアクティブ-アクティブおよび高可用性アーキテクチャを構築できます。
説明
異なるクラウドベンダー間のデータ同期・移行機能は、許可リスト制で提供されています。利用を希望する場合は、OceanBase Cloudのテクニカルサポートにお問い合わせください。
原理の概要
OceanBase Cloudは、異なるクラウドサービスプロバイダー間で同一のデータとサービスを展開することをサポートします。各クラウド環境はアクティブ状態であり、同時にビジネスリクエストを処理し、リアルタイムデータ同期技術によってデータの一貫性を保ちます。 いずれか一方のクラウド環境で障害が発生した場合、もう一方のクラウド環境がすべてのビジネストラフィックをシームレスに引き継ぎ、サービスの中断を防ぎます。このアーキテクチャは、システムのフォールトトレランスを向上させるだけでなく、単一のクラウドサービスプロバイダーへの依存を減らし、システム全体の信頼性と安定性を強化します。詳細については、クロスクラウドアクティブ-アクティブによる高可用性の実現を参照してください。
シナリオの紹介
ショッピングモールの事業が複数のクラウドベンダーに展開されている場合、顧客がAlibaba CloudとTencent Cloudでそれぞれ注文すると、双方のデータベースはクロスクラウドアクティブ-アクティブレプリケーションリンクを通じて常にリアルタイムで同期されます。このベストプラクティスでは、OceanBase Cloudコンソール上でクロスクラウドアクティブ-アクティブ操作を実現する方法について説明します。
前提条件
Tencent CloudおよびAlibaba Cloudのインスタンスを例にすると、トランザクション型インスタンスの作成が完了しており、それぞれインスタンスAとインスタンスBとします。インスタンスAをデータ送信元、インスタンスBをデータ送信先とします。
データ移行タスクを作成できるのは、プロジェクト所有者、プロジェクト管理者、またはデータサービス管理者のいずれかのロールを持つユーザーのみです。
データ送信元データベースに関する操作制限として、構造移行およびフル移行段階ではデータベースまたはテーブル構造変更のDDL操作は実行しないでください。実行した場合、データ移行タスクが中断する可能性があります。
データ移行は、OceanBaseデータベースの同一種類のテナント間でのみサポートされます。つまり、OceanBaseデータベースのMySQL互換モードのテナントから同じモードの別のテナントへ、またはOceanBaseデータベースのOracle互換モードのテナントから同じモードの別のテナントへのデータ移行が可能です。
データ移行は、データベース名、テーブル名、列名がASCIIコードであり、特殊文字(.|"'`()=;/& および改行文字を含む)を含まないオブジェクトのみをサポートします。
データ移行では大文字と小文字を区別するモードはサポートされていません。データ送信先に同名で大文字小文字が異なるデータベースやテーブルが存在する場合、事前チェックでエラーが報告されます。
データ送信先データベースにトリガー(Trigger)が存在する環境下では、データ移行はサポートされていません。存在する場合、データ移行が失敗する可能性があります。
手順
以下では、OceanBase Cloudの移行機能と同期メカニズムを利用して、クラウド間のアクティブ-アクティブ構成による高可用性データベースアーキテクチャを構築します。
テナントおよびアカウントの作成
インスタンスAとインスタンスBにそれぞれテナント、データベース、データベースアカウントを作成し、データベースアカウントのパスワードを保存します。
インスタンスのダッシュボードで、新規テナント をクリックしてMySQLテナントを作成します。詳細な操作については、新規テナントの作成を参照してください。
データベースの作成 をクリックし、作成 をクリックします。
アカウント管理 をクリックしてアカウント管理ページに移動し、アカウントの作成 をクリックします。ポップアップウィンドウで、アカウント名の入力やアカウントタイプの選択などを行います。詳細な操作については、アカウントの作成と管理を参照してください。
以下のステートメントを実行して、インスタンスAのデータベースに
studentテーブルを作成します。CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `age` int(11) NOT NULL, `gender` enum('male','female') NOT NULL, `enrollment_date` date NOT NULL, PRIMARY KEY (`id`) )
データ移行タスクの新規作成
OceanBase Cloudコンソールにログインします。
左側のナビゲーションバーで、データサービス > データ移行 をクリックします。
データ移行 ページで、データ移行 タブをクリックします。
データ移行 タブで、右上の 新規移行タスク をクリックします。
データ送信元 エリアで、各パラメータを設定します。
パラメータ説明クラウドプロバイダー Tencent Cloudを選択します。 データベースタイプ データ送信元を OceanBase MySQL Mode に設定します。 インスタンスタイプ クラスタインスタンス(トランザクション型)を選択します。 リージョン データ送信元データベースのリージョンを選択します。 インスタンス インスタンスAを選択します。 データベースアカウント データ移行用のOceanBase Cloud MySQLデータベースのユーザー名。 パスワード データベースユーザーのパスワード。 データ送信先 エリアで、各パラメータを設定します。
パラメータ説明クラウドプロバイダー Alibaba Cloud を選択します。 データベースタイプ データ送信先を OceanBase MySQL Mode に設定します。 インスタンスタイプ クラスタインスタンス(トランザクション型)を選択します。 リージョン データ送信先データベースのリージョンを選択します。 インスタンス インスタンスBを選択します。 データベースアカウント データ移行用のOceanBase Cloud MySQLデータベースのユーザー名。 パスワード データベースユーザーのパスワード。 接続テストをして次へ をクリックし、双方向同期を設定します。
双方向同期の設定
同期トポロジーが双方向同期の場合、サポートされる移行タイプは 構造移行、フル移行、増分同期、および フル検証 です。
パラメータ説明構造移行 構造移行では、文字セットのマッピング関係を自ら定義する必要があります。データ移行は、データ送信元データベースのデータ(構造)をデータ送信先データベースにコピーするだけで、ソースデータ(構造)に影響を与えません。 フル移行 フル移行タスク開始後、データ移行サービスはデータ送信元データベース内のテーブルの既存データをデータ送信先データベースの対応するテーブルに移行します。 増分同期 増分同期タスク開始後、データ移行はデータ送信元データベースで変更されたデータ(追加、変更、削除)をデータ送信先データベースの対応するテーブルに同期します。増分同期にはDML同期とDDL同期が含まれ、ニーズに応じてカスタマイズ設定できます。詳細については、DML/DDLのカスタム設定を参照してください。 フル検証 フル移行完了後、増分データがデータ送信先に同期され、データ送信元とほぼ一致した時点で、データ移行はデータ送信元データベースの設定データテーブルとデータ送信先テーブルに対するフルデータ検証タスクを自動的に開始します。
データ移行は、一意キーテーブル(プライマリキーまたはNULL不可ユニークキーを持つテーブル)に対してのみフルデータ検証をサポートします。移行対象の選択 エリアで、移行対象を選択する方法を設定します。指定対象 と マッチングルール の 2 種類の方法で移行対象を選択できます。移行範囲の選択 エリアで、移行する対象を選択し、データ送信先データベースの
studentテーブルを選択します。詳細については、双方向同期タスクの設定を参照してください。移行オプション情報を確認します。
次へ をクリックすると、システムは正方向タスクの事前チェックを実行します。
事前チェック プロセスでは、データ移行はデータベースユーザーの読み書き権限、データベースのネットワーク接続などが要件を満たしているかどうかをチェックします。すべてのチェック項目が合格した場合にのみ、データ移行タスクを開始できます。事前チェックでエラーが発生した場合:
問題を調査・処理した後、事前チェックが成功するまで再度実行できます。
失敗した事前チェック項目の操作列にある スキップ をクリックすることもできます。この操作をスキップした場合の具体的な影響について警告するダイアログボックスが表示されます。スキップしてもよいことを確認したら、ダイアログボックスの OK をクリックしてください。
事前チェックが成功したら、購入 をクリックし、データ移行インスタンスの購入 ページで購入を行います。
購入が成功すると、データ移行ページに戻り、タスクの進捗状況を確認します。
正方向タスクが 監視中 の増分同期段階にあり、タスク状態が 実行中 のとき、逆方向タスクの後ろにある 設定 ボタンをクリックし、データ送信元とデータ送信先の情報を確認した上で、次へ をクリックして逆方向タスクを設定します。
事前チェックを完了し、購入 を行います。データ移行インスタンスの購入 ページで購入を行います。
データ移行ページに戻り、双方向タスクの進捗状況を確認します。
データの同期と検証
双方向タスクの設定が完了したら、インスタンスBで
studentテーブルの初期データを確認し、インスタンスAからインスタンスBへのデータ同期を検証します。インスタンスBで、
studentテーブルのデータを追加します。インスタンスAで、テーブル内のデータを確認し、インスタンスBからインスタンスAへのデータ同期を検証します。