ページの先頭行へ戻る
PowerReplication V4.0L11 PowerReplicationユーザーズガイド V4.0

3.4.2 レプリケーションの環境を設計する

ここでは、動作環境や運用の設計に考慮が必要な着目点を説明します。

文字コード変換の環境を設計する

レプリケーションで異なるコード系のデータベースを連携するための文字コード変換方式は2つあります。以下の目的や条件に合わせて文字コード変換方式を選択する必要があります。

表3.11 文字コード変換方式の選択

目的・条件

文字コード変換方式

a. 旧レプリケーション製品からのバージョンアップ

b. Windows側で既に構築しているシフトJISのデータベースを使用する場合

c. 3台以上のサーバで連携し、旧レプリケーション製品との連携が含まれる場合

EBCDIC/JEFコードとシフトJISコードの変換

d. ASP V25以降のシステムと新規に連携する場合

e. Windows側のアプリケーションがUnicodeの文字データを扱う場合

EBCDIC/JEFコードとUnicodeの変換※

※)a、b、cいずれかの条件を同時に満たす必要がある場合、文字コード変換方式は、EBCDIC/JEFコードとシフトJISコードの変換方式を採用してください。

レプリケーションの動作環境を構築した後に、文字コードの変換方式を変更する場合、データベースの再構築やアプリケーションの見直しが必要になるため、事前に要件を整理して文字コード変換の環境を設計しておくことが重要です。

レプリケーショングループを設計する

同期は、レプリケーショングループ単位に実行できます。同期対象とするデータファイルをグループ化して、レプリケーショングループの機能を設計してください。


データ量を見積もる

レプリケーションの同期で、相手サーバへ転送されるデータ量を見積もってください。


同期の実行による業務への影響を、動作検証時に確認するため、同期の実行で反映されるデータ量を見積もっておくことが必要です。
差分同期を利用してレプリケーションの環境を構築する場合、更新情報がSQL Serverのデータベースに格納されます。データベースが枯渇すると、同期対象のデータファイルを更新する利用者プログラムでエラーが発生、またはレプリケーションの同期処理でデータベース間の整合性が保てなくなります。


スケジュールを設計する

利用者プログラムが実行される時間帯を考慮して、レプリケーションの同期を実行するスケジュールを設計してください。


スケジュールによる同期の実行は、1分以上の間隔で設計してください。



不定期に発生する業務でサーバ間のデータベースを活用するために、業務の運用と連動して同期の実行を行いたい場合、PowerReplicationのスケジュール機能を使用せず、rpsyncコマンドを利用できます。
Windowsのバッチプログラムなどを使用して利用者プログラムとrpsyncコマンドを順次実行するようにバッチプログラムを作成することで、利用者プログラムと同期の実行を連動できます。


rpsyncコマンドの詳細は、"7.2 同期実行コマンド"を参照してください。



1分よりも短い間隔で同期を実行したい場合、スケジュール機能(同期実行の最短間隔1分間)を使用せず、相手サーバに反映する更新情報が存在するときにだけ、同期を実行できます。
更新情報取得の状態検査コマンド(rpctldif)は、相手サーバに反映する更新情報の有無を判別できます。このコマンドと同期実行コマンド(rpsync)を組み合わせたWindowsのバッチプログラムを作成することによって、数秒間隔で同期を実行できます。ただし、一回の同期で反映するデータ量が少ない場合に限ります。(一括同期の場合約8000件以下、差分同期の場合約2000件以下が目安)


サンプルプログラム

**********************************************************************************

@ECHO OFF

REM <<レプリケーション繰り返し同期実行バッチ>>

REM <<ループ処理開始>>

:LOOP

REM <<更新情報の開始状態検査>>

rpctldif -x -d SQLSERVER -U SQLUser xxxxxxxx REPLGRP

SET ret=%ERRORLEVEL%

REM <<戻り値判定>>

IF %ret%==0 GOTO CASE0

IF %ret%==1 GOTO CASE1

IF %ret%==2 GOTO CASE2

IF %ret%==3 GOTO CASE3

REM <<コマンドエラー(戻り値が0~3以外)>>

ECHO コマンドエラー処理を終了します

PAUSE

GOTO END

REM <<戻り値が0の場合。更新データが格納されている。>>

:CASE0

REM<<差分同期を実行>>

rpsync -w -n -d SQLSERVER -u SQLUser xxxxxxxx REPLGRP

REM <<戻り値が1の場合。更新データが格納されていない。>>

:CASE1

REM <<同期実行を迂回>>

ECHO 更新情報がありません。

GOTO WAIT

REM <<戻り値が2の場合。同期が実行中>>

:CASE2

REM <<同期実行を迂回>>

GOTO WAIT

REM <<戻り値が3の場合。更新情報取得が停止状態>>

:CASE3

ECHO 更新情報取得が停止状態です。処理を終了します。

PAUSE

GOTO END

REM <<3秒間WAIT>>

:WAIT

rpwait -s 3

GOTO LOOP

:END

**********************************************************************************************


rpctldifコマンドの詳細は、"7.4 更新情報取得の開始/停止/状態検査コマンド"を、rpsyncコマンドの詳細は、"7.2 同期実行コマンド"を参照してください。


上記のサンプルで使用しているrpwaitについて説明します。
rpwaitは、プログラムの実行を一定時間待ち合わせて復帰します。記述形式は以下のとおりです。

rpwait -s 待合せ時間

待合せ時間は秒単位で、1~6553の範囲で指定します。


サンプルを使用する場合、以下を考慮してください。

データファイルの関連づけを設計する

同期対象とするデータファイルの項目の関連づけと同期の実行で反映するデータの抽出条件を設計してください。


運用方法を設計する

システムを安定して稼動させるため、レプリケーション、データベースおよび利用者プログラムの運用方法を設計してください。


システム異常発生時の復旧手順を設計する

自サーバまたは相手サーバでシステム異常が発生した場合を想定して、レプリケーションの環境を復旧する作業手順を、"5.2 システム異常発生時の復旧方法"を参照して設計してください。



システムに異常が発生し、レプリケーションの運用が中断された場合、復旧するために一括同期を実行することが必要な場合があります。一括同期を実行すると、未反映の更新情報は削除されるため、利用者プログラムから更新した内容の一部が無効となる場合があります。また、システム異常が発生したサーバの復旧が遅れると、相手サーバで更新情報ファイルの枯渇が発生するなど、被害が拡大し、復旧時間が更に長期化する場合があります。



関連づけたデータファイル間でデータが一致している状態であれば、一括同期を実行せずに、運用が開始できます。一括同期を実行することのほかに、データファイル間の差異を解消する方法を準備しておくことにより、システム異常発生時に復旧作業の作業時間を短縮できます。
同期対象のデータファイルにアクセスする利用者プログラムや同期対象のデータファイルの構造を考慮して、以下の復旧方法を設計することが有効です。

  1. 関連づけたデータファイル間の差異検出(差異を検出する利用者プログラム作成)

  2. 差異を解消(DBMSのユーティリティ活用または差異を解消する利用者プログラム作成)

  3. レプリケーションの修復(更新情報の取得開始)