ロジカルレプリケーションを用いてDB移行に伴うダウンタイムを最小化する
Oracle ACE Proの渡部です。
ロジカルレプリケーションを用いてデータベース移行に伴うダウンタイムを最小化することができる仕組みについて説明します。
併せて、ロジカルレプリケーション機能に求められる要件について説明します。
ロジカルレプリケーションを用いてデータベース移行に伴うダウンタイムを最小化することができる仕組み
- (1) 移行元データベースについて、特定時点t1のデータを得ます。
特定時点のデータベースのバックアップを取得する、特定時点のデータベースのデータをエクスポートするなどが考えられます。
- (2) (1) で得たデータ(ファイル)を、移行先データベースに転送します。
今回の論点からはズレますが、データベースのサイズが大きい場合は、ネットワーク転送に要する時間が大きくなりますので、注意が必要です。
- (3) (1) で得たデータ(ファイル)を、移行先データベースに投入します。
バックアップの場合はリストア、エクスポートの場合はインポートとなります。
- (4) 移行元DB→移行先DBについて、開始点をt1としてロジカルレプリケーションを開始します。
- (5) 本番データベースを旧データベースから新データベースに切り替えます。すなわち、アプリケーションが接続するデータベースを、旧データベースから新データベースに変更します。これにより、以後の変更(および参照)は新データベースに対して実行されることになります。
以下の点が重要です。
- (1)~(3)の結果として、特定時点t1における一貫性があるデータ を得る。 このとき、この「特定時点t1」ことを、「あたかも、そのデータベースを特定時点t1で静止させてデータを得たように見える」ことなどから、「静止点」と呼ぶことがあります。
なお、(1)で一貫性があるデータを得られない場合は、(3)でデータの一貫性を回復する必要があります。 このあたりの議論については、https://cosol.jp/techdb/2020/05/backup_oracle_mysql_postgresql/ も参考にしてみてください。
- ロジカルレプリケーションを特定時点t1(=静止点)から開始する
開始点がt1より前だと、t1以前の余計な変更が重複実行されることになります。また、開始点がt1より後だと、t1以後の変更でレプリケーションされないものが出てきます。
なお、「特定時点t1」は、いわゆる「日時データ」ではなく、データベース内部で保持している、単調増加する「カウンタ相当の値」で指定するのが一般的です。
データベース製品毎に、「カウンタ相当の値」は異なります。以下に主要なデータベース製品における「カウンタ相当の値」を示します。
- Oracle Database : SCN(System Change Number)
- MySQL: ログポジション
- PostgreSQL: LSN(ログシーケンス番号, Log Sequence Number)
ロジカルレプリケーションの開始点を厳密に指定できないとどうなるか?
上記の図のとおりですが、ロジカルレプリケーションの開始点を厳密に指定できないとデータが失われます。
具体的には、データ転送のターゲット時刻(上記図ではt1)~ロジカルレプリケーションの開始点の間に、旧DBに対して加えられたデータの変更が失われます。
ダウンタイム最小化DB移行のために求められるロジカルレプリケーション機能の要件
上記の仕組みを用いてデータベース移行に伴うダウンタイムを最小化しているため、ロジカルレプリケーション機能には、以下の要件が求められます。
- レプリケーションの開始点を厳密に指定できること
- (当たり前ですが)移行元DB→移行先DBのロジカルレプリケーションに対応していること
弊社が取り扱うロジカルレプリケーション製品では、SharePlex, Qlik Replicateはこの要件を満たしており、ダウンタイム最小化DB移行にオススメしています。
また、必須ではないですが、以下の機能を持っていると移行作業が楽になります。
- 上記(1)の「特定時点のDBバックアップまたはDBエクスポート処理」を起動できること
- 上記の「特定時点」を内部的に保持し、この「特定時点」を開始点としてレプリケーションを開始できること
- 本番DB切り替え前に移行元DBと移行先DBのデータが同一であることをチェックする機能
[宣伝] データベースのロジカルレプリケーションでお困りの際はコーソルへ!
ロジカルレプリケーションは非常に複雑な技術です。お客様に最適なロジカルレプリケーション製品をご案内できるよう、コーソルでは複数のロジカルレプリケーション製品を取り扱っています。
これらすべての製品について、製品を熟知したエンジニアが設計・導入作業を担います。
Oracleのロジカルレプリケーションをご検討の際はぜひコーソルにお声がけください。
ロジカルレプリケーションの動作の仕組みから見るOracleレプリケーション3製品のイチオシポイント