[DBMoto]リフレッシュ中に問題が起きたときのタイムロスを防ぐには「リフレッシュリカバリ」


弊社取扱いのRDBデータレプリケーションンツールDBMotoでは、レプリケーション中にデータベースとのネットワークなどで問題で切断が発生した場合でも、次のインターバル間隔で再度接続をやり直してレプリケーションを継続しようとします。

その場合の挙動は以下の通りです。

  • リフレッシュ:最初からやり直し
  • ミラーリング・シンクロナイゼーション:最後に処理したトランザクションIDから再開

ミラーリングやシンクロナイゼーションでは途中からの再開となりますが、リフレッシュの場合最初からのやり直しとなってしまいます。

しかし、WAN越しでネットワーク回線の安定性に欠ける場合、もしレコード件数が多いテーブルのリフレッシュに失敗したとき、また最初からやり直すことで時間をロスしてしまう可能性があります。

それが予期される場合にあらかじめ設定することでリフレッシュの挙動を「最後に処理したレコードから再開」にすることができる機能があります。
それは「リフレッシュリカバリ」という機能です。

この「リフレッシュリカバリ」を使えば、リフレッシュ途中でエラーが発生しても、最後に処理したレコードからの再開で時間のロスを防ぐことができます。
※この機能の利用にはソース側テーブルに主キーがある必要があります。

refresh_recovery

設定箇所ですが、レプリケーションのプロパティを開き、左メニューの「優先」を選択すると、「リフレッシュオプション」内に「リフレッシュリカバリ」というメニューがあります。
これをデフォルトのFalseからTrueに変更すると機能が有効になります。

この機能を有効にすることで、リフレッシュ時のパフォーマンスが若干低下することがありますが、実際にその影響が感じられることはあまりありません。

レコード数が多いテーブルのレプリケーションをお考えの方は是非この機能の活用をご検討ください。

関連したトピックス

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください