株式会社コーソル

コーソルDatabaseエンジニアのブログ

技術ブログ

ロジカルレプリケーションを用いてDB移行に伴うダウンタイムを最小化する

Oracle ACE Proの渡部です。

ロジカルレプリケーションを用いてデータベース移行に伴うダウンタイムを最小化することができる仕組みについて説明します。 併せて、ロジカルレプリケーション機能に求められる要件について説明します。

ロジカルレプリケーションを用いてデータベース移行に伴うダウンタイムを最小化することができる仕組み

  • (1) 移行元データベースについて、特定時点t1のデータを得ます。
    特定時点のデータベースのバックアップを取得する、特定時点のデータベースのデータをエクスポートするなどが考えられます。
  • (2) (1) で得たデータ(ファイル)を、移行先データベースに転送します。
    今回の論点からはズレますが、データベースのサイズが大きい場合は、ネットワーク転送に要する時間が大きくなりますので、注意が必要です。
  • (3) (1) で得たデータ(ファイル)を、移行先データベースに投入します。
    バックアップの場合はリストア、エクスポートの場合はインポートとなります。
  • (4) 移行元DB→移行先DBについて、開始点をt1としてロジカルレプリケーションを開始します。
  • (5) 本番データベースを旧データベースから新データベースに切り替えます。すなわち、アプリケーションが接続するデータベースを、旧データベースから新データベースに変更します。これにより、以後の変更(および参照)は新データベースに対して実行されることになります。

以下の点が重要です。

  • (1)~(3)の結果として、特定時点t1における一貫性があるデータ を得る
    なお、(1)で一貫性があるデータを得られない場合は、(3)でデータの一貫性を回復する必要があります。 このあたりの議論については、https://cosol.jp/techdb/2020/05/backup_oracle_mysql_postgresql/ も参考にしてみてください。
  • ロジカルレプリケーションを特定時点t1から開始する
    開始点がt1より前だと、t1以前の余計な変更が重複実行されることになります。また、開始点がt1より後だと、t1以後の変更でレプリケーションされないものが出てきます。

ロジカルレプリケーションの開始点を厳密に指定できないとどうなるか?

上記の図のとおりですが、ロジカルレプリケーションの開始点を厳密に指定できないとデータが失われます。

具体的には、データ転送のターゲット時刻(上記図ではt1)~ロジカルレプリケーションの開始点の間に、旧DBに対して加えられたデータの変更が失われます。

ダウンタイム最小化DB移行のために求められるロジカルレプリケーション機能の要件

上記の仕組みを用いてデータベース移行に伴うダウンタイムを最小化しているため、ロジカルレプリケーション機能には、以下の要件が求められます。

  • レプリケーションの開始点を厳密に指定できること
  • (当たり前ですが)移行元DB→移行先DBのロジカルレプリケーションに対応していること

弊社が取り扱うロジカルレプリケーション製品では、SharePlex, Qlik Replicateはこの要件を満たしており、ダウンタイム最小化DB移行にオススメしています。

また、必須ではないですが、以下の機能を持っていると移行作業が楽になります。

  • 上記(1)の「特定時点のDBバックアップまたはDBエクスポート処理」を起動できること
  • 上記の「特定時点」を内部的に保持し、この「特定時点」を開始点としてレプリケーションを開始できること
  • 本番DB切り替え前に移行元DBと移行先DBのデータが同一であることをチェックする機能

[宣伝] データベースのロジカルレプリケーションでお困りの際はコーソルへ!

ロジカルレプリケーションは非常に複雑な技術です。お客様に最適なロジカルレプリケーション製品をご案内できるよう、コーソルでは複数のロジカルレプリケーション製品を取り扱っています。

これらすべての製品について、製品を熟知したエンジニアが設計・導入作業を担います。 Oracleのロジカルレプリケーションをご検討の際はぜひコーソルにお声がけください。

ロジカルレプリケーションの動作の仕組みから見るOracleレプリケーション3製品のイチオシポイント

プロフィール

On7tWW6m1Ul4

渡部 亮太

・Oracle ACE
・AWS Certified Solutions Architect - Associate
・ORACLE MASTER Platinum Oracle Database 11g, 12c 他多数

カテゴリー

アーカイブ