レプリケーションシステムの設計について、考え方・考慮点を以下に示します。
必要資源の見積り
差分ログファイルの自動容量拡張について
ネットワークの一時エラー・無応答の考慮
業務の多重度
業務のスケジュール間隔
ジョブ結果待ち時間(jobtimeオペランド)
格納処理のジョブ結果待ち時間(jobtimeオペランド)とレプリケーション業務のスケジュール時間の関係
大規模データベースの考慮
セキュアな環境での適用方法について
ログファイルの監視について
セットアップにあたり、以下の製品に対して、インストールに必要なディスク容量と動作に必要なメモリ容量について見積もる必要があります。
Symfoware Server
Linkexpress
Linkexpress Replication option
参照
Symfoware Serverのインストールに必要なディスク容量および動作に必要なメモリ容量については、Symfoware Serverのソフトウェア説明書を参照してください。
Linkexpressのインストールに必要なディスク容量および動作に必要なメモリ容量については、Linkexpressのソフトウェア説明書を参照してください。
Linkexpress Replication optionのインストールに必要なディスク容量および動作に必要なメモリ容量については、Linkexpress Replication optionのソフトウェア説明書を参照してください。
差分ログファイルは、差分ログファイル内の空きスペースがなくなると、自動容量拡張を行います。
これにより、差分ログファイルを格納しているディスクの容量に十分な空きがある場合は、差分ログファイルの使用率が高い値を示していても、差分ログファイルの容量不足にはなりません。
しかし、容量拡張の発生はレプリケーション業務の性能に悪影響を及ぼします。本機能は、あくまでも一時的に差分ログ量が増加した場合の安全対策と考え、差分ログファイルは、容量拡張が発生しないだけの容量を確保してください。
参照
差分ログファイルの容量見積りについては、“付録A 容量見積り”を参照してください。
レプリケーション業務の運用中は、回線異常などの理由により一時的な通信異常や、ファイル送信/ファイル受信または相手側ジョブ起動時に通信異常が発生した場合、業務が無応答となる可能性があります。
このため、Linkexpress Replication optionでは、Linkexpressのネットワーク定義および業務定義で応答監視やリトライを設定することにより、業務の無応答を防止することをお勧めします。ネットワーク定義および業務定義については、“Linkexpress 導入ガイド”および“Linkexpress 運用ガイド”を参照してください。
設定内容 | 設定個所 | 推奨値 |
---|---|---|
ネットワーク定義のpath定義命令のrecvtimeオペランド | ネットワーク定義のpath定義命令のrecvtimeオペランドに以下の値を指定します。 3分 | |
業務定義のイベントリトライ回数とイベントリトライ間隔 | ファイル送信イベントやファイル受信イベント、および相手側ジョブ起動イベントや相手側DB格納イベントの起動に対して、イベントのリトライ回数と間隔を指定します。 Linkexpressクライアントの業務定義ウィンドウで、“START”イベントの“イベントリトライ回数”および“イベントリトライ間隔”を指定する 業務定義の業務定義命令(lxdwork)のretryオペランドを指定する | |
各イベントで実行されるバッチファイルまたはシェルスクリプト | 本設定により、相手側ジョブ起動のジョブ結果通知で一時的な通信エラーが発生しても、エラーを回避できる可能性を高くすることができます。 |
バッチファイルまたはシェルスクリプトによるリトライの例
Windowsの場合
LXRSPJOB -n %2 -i %4 -c通知する値 IF %ERRORLEVEL% EQU 12 GOTO EXIT IF %ERRORLEVEL% EQU 0 GOTO EXIT FOR /L %%i IN (1,1,5) DO (LXRSPJOB -n %2 -i %4 -c 通知する値) && (GOTO EXIT) :EXIT
SolarisまたはLinuxの場合
INDEX=1 while [ $INDEX -le 5 ] do lxrspjob -n $2 -i $4 -c 通知する値 if [ $STATUS = 12 -o $STATUS = 0 ];then exit 0 fi sleep 5 INDEX=`expr $INDEX + 1` done
Linkexpressの業務は、同時に実行できる数は無限ではありません。同時に実行する数が最大値に達しないように、業務の起動時間をずらすなどの工夫が必要です。詳細は、“Linkexpress 導入ガイド”を参照ください。
設定個所 | 推奨値 |
---|---|
ネットワーク定義のcomdef定義命令のscaleオペランド | ネットワーク定義のcomdef定義命令のscaleオペランドの多重度に以下を指定してください。 レプリケーション業務の最大同時実行数+3 |
レプリケーション業務で、スケジュール間隔を指定する場合、以下の点について考慮し、スケジュール間隔を設定する必要があります。
業務スケジュールの詳細は、“Linkexpress 運用ガイド”を参照してください。
考慮する点 | 考え方 |
---|---|
業務のスケジュール間隔内で発生する差分データ量 | 例えば、5分間隔でレプリケーション業務をスケジュールしたくても、発生する差分データ量が、5分間以内にレプリケーション業務が完了できる量でない場合、5分間隔でスケジュールを設定することはできません。 |
一時的なエラーが発生した場合 | ネットワークが不安定な場合のファイル転送エラーや、格納処理で一時的なエラーが発生した場合、レプリケーションできなかった差分データは、次のスケジュールで、新たに発生した差分データと共にレプリケーションの対象となります。 |
レプリケーション間隔は、大体以下の総和で見積もります。
ただし、レプリケーション間隔は5分以上にしてください。見積り値の合計が5分以下になった場合でも、レプリケーション間隔は、5分以上に切り上げてください。
レプリケーション業務の運用中は、回線異常や格納機能での排他エラーなどの理由により、一時的な通信異常や無応答が発生する可能性があります。
このため、Linkexpress Replication optionでは、Linkexpressのネットワーク定義および業務定義で、適切なジョブの監視時間を設定することをお勧めします。ネットワーク定義および業務定義については、“Linkexpress 導入ガイド”および“Linkexpress 運用ガイド”を参照してください。
適切な値を設定しなかった場合、以下のような事象が発生します。
値 | 事象 |
---|---|
小さすぎる | レプリケーション業務が失敗し続ける。 |
設定していない | レプリケーション業務の異常(無応答など)を判断することができない。 |
以上から“ジョブ結果待ち時間(jobtimeオペランド)”には、以下のような値を設定することを推奨します。
設定内容 | 設定箇所 | 推奨値 |
---|---|---|
ジョブ結果待ち時間 | ネットワーク定義のnode定義命令のjobtimeオペランド | 各イベントの処理時間×(4以上) 年間を通したピーク時の格納処理に必要とする時間の倍以上の値など 注)Linkexpress Replication optionの動作環境ファイルのREP_DLF_WRITE_MODEオペランドに“MULTI”を指定した場合の抽出処理の推奨値については、“2.2.1.12 利用者プログラムの設計について”を参照してください。 |
ネットワーク定義のpath定義命令のjobtimeオペランド | ||
業務定義のイベント定義命令(相手側ジョブ起動)のjobtimeオペランド |
一時的に大量差分データが発生し、格納処理中に次のレプリケーション業務のスケジュール時間となった場合(注)、格納処理はそのまま継続され、次のスケジュールはスキップされます。スキップされた格納処理の差分データは、次のスケジュールで格納処理の対象になります。
次のスケジュールの格納処理では、スキップされた差分データも対象となるため、同一事象が発生します。ただし、複写元データベースの更新量が収束するに伴い、差分データ量も収束するため、スケジュール間隔内で格納処理が完了するようになります。
注)格納処理は、格納処理のジョブ結果待ち時間内に完了するとします。
以下に示すような大規模データベースに対するレプリケーションシステムでは、差分データの形式を“可変長ログ形式”とすることで、従来の差分データの形式(標準形式)に比べ、効率のよい差分データを取得することが可能となります。
(Oracle抽出レプリケーションでは、可変長ログ形式はサポートしていません)
レプリケーション対象のデータベースにBLOB型の列などの大規模な列を指定している場合
レプリケーション対象のデータベースに可変長型の列を多く指定している場合
以下にINSERT文を実行した場合の差分データ形式のイメージ図を示します。
差分データの形式を“可変長ログ形式”とするには、抽出定義とDBサービス定義に以下を指定します。詳細は、“6.1 lxrepcreコマンド”および“6.34.1 lxgensvコマンド”を参照してください。
設定内容 | 設定箇所 | 推奨値 |
---|---|---|
抽出定義のLOGTYPEオペランド | 抽出定義のLOGTYPEオペランドに以下を指定します。 LOGTYPE=LITTLE | |
DBサービス定義のLOGTYPEオペランド | DBサービス定義のLOGTYPEオペランドに以下を指定します。 LOGTYPE=little |
ここでは、セキュアな環境でのレプリケーションシステムの構築方法について、説明します。レプリケーション管理者用のユーザIDについては、“2.2.2 ユーザIDの準備”を参照してください。
Linkexpess Replication optionは、インターネットへのサービスを提供する用途には適用できません。インターネットに接続しないセキュリティにより外部から保護された環境(イントラネット内)で使用してください。
セキュアな環境におけるレプリケーションシステムでは、ログインしたユーザIDの実行履歴などを監視することを推奨します。
また、レプリケーション管理者用のユーザID以外に不要なユーザIDを作成しないことを推奨します。
セキュアな環境におけるレプリケーションシステムでは、インストール先のディレクトリやロードモジュールなどの権限を、レプリケーション管理者用のユーザIDだけが参照、更新および実行可能なように変更することを推奨します。
セキュアな環境におけるレプリケーションシステムでは、抽出した抽出データ格納ファイルを、暗号化ソフトによって暗号化し、受信ファイルを復号化した後、複写先データベースに格納を行うことを推奨します。
なお、ファイルの権限については、以下のように設定することを推奨します。
抽出データ格納ファイル
抽出処理で実行されるバッチファイルまたはシェルスクリプトにおいて、データベース抽出コマンド(lxextdbコマンド)の実行後に、作成される抽出データ格納ファイルの権限を、データベース抽出コマンドの実行ユーザIDとユーザグループに変更します(抽出処理のバッチファイルまたはシェルスクリプトで指定します)。
このとき、データベース抽出コマンドの実行ユーザIDとユーザグループは、ファイル送信イベントの“自側利用者名”および“自側グループ名”と同一である必要があります(ファイル受信イベントの場合は、“相手側利用者名”および“相手側グループ名”になります)。
受信ファイル
受信ファイルに対するセキュリティ設定については、“Linkexpress 導入ガイド”を参照してください。
レプリケーションの運用では、差分ログが出力できなくなることを避けるために、トランザクションログファイルと、差分ログファイルを監視する必要があります。
参照
監視方法、および異常発生時の対処方法については、“2.9.4 ログファイルの監視”を参照してください。
Symfoware抽出レプリケーションを行うにあたっては、まずLinkexpress Replication optionのファイルを適切なディスクに配置する必要があります。レプリケーション資源は、Linkexpressのインストール配下には配置しないでください。
Linkexpress Replication optionのファイルのうち、差分ログを蓄積するファイルには以下のものがあります。
トランザクションログファイル
差分ログファイル
抽出データ格納ファイル
これらのファイルは、差分データが発生している間、またはレプリケーション業務が動作した時、頻繁に書込みや読込みを行っています。このため、以下に示す資源と同じディスクに配置することは避けてください。
DBミラーリングシステム連携の場合は、以下に加え“Linkexpress Replication option DBミラーリングシステム連携導入運用ガイド”の“1.4 DBミラーリングシステム連携の設計”も参照してください。
利用者プログラムや他の製品などによるi/o負荷の高いディスク
i/o性能の低いディスク
Symfoware/RDBのテンポラリログファイルやデータベーススペースと同じディスク
また、上記に示すLinkexpress Replication optionの資源同士もできるだけ、ディスクを分けることを推奨します(特にトランザクションログファイルと差分ログファイル)。
OSがWindowsの場合、前記に示すLinkexpress Replication optionの資源を作成するドライブのプロパティとして、"ドライブを圧縮してディスク領域を空ける"を設定しないでください。
ドライブ圧縮を行った場合、通常のI/O処理と比較して性能上のオーバヘッドが発生します。これにより、I/O量に依存してOSリソース不足によるアクセスエラーが発生する可能性があります。
また、前記に示すLinkexpress Replication optionの資源を作成するフォルダのプロパティとして「全般タブ」属性の「詳細設定」である、"圧縮属性または暗号化属性"を設定しないでください。
圧縮属性とした場合、ドライブ圧縮と同様に通常のI/O処理と比較して性能上のオーバヘッドが発生します。これにより、I/O量に依存してOSリソース不足によるアクセスエラーが発生する可能性があります。
暗号化属性とした場合、Linkexpress Replication optionの各資源の作成者(lxreplogコマンドなどの実行ユーザ)とSymfowareサービス起動で動作するSymfoware Serverプロセスの実行者(ユーザ登録されないWindowsシステムユーザ)が異なるため、暗号解除ができずアクセスエラーが発生する可能性があります。
利用者プログラムの設計時における考慮点について説明します。
利用者プログラムの設計においては、Linkexpress Replication optionにおいて、差分ログを取得する処理が動作することを考慮する必要があります。特に以下の場合、差分ログを取得する処理が顕著化し、利用者プログラムの処理性能に影響を与える場合があります。
一定時間内の発生するトランザクション数が膨大な数である場合
大量にデータ更新(UPDATE)を行う場合(特に、列数の多い表に対し、更新する列数が極端に少ない場合)
大量にデータの削除(DELETE)を行う場合
また、Linkexpress Replication optionでは、以下の情報を差分ログとして取得することはできません。
SQL文中に順序を指定した場合におけるSymfoware Serverが管理している順序を採番するための情報
Linkexpress Replication optionのチューニング項目には以下があります。これらは、Linkexpress Replication optionの動作環境ファイルに指定します。
トランザクションログファイルへの書き込みバッファ枚数の指定 (REP_TRFW_BUFF_NUMオペランド)
差分ログ処理単位の指定 (REP_DLF_WRITE_MODEオペランド)
差分ログファイルの書き込み保証処理の並列化の指定 (REP_DLF_SYNC_PNUMオペランド)
有効ログ範囲の指定 (REP_RELLOG_RATEオペランド)
トランザクションログファイル異常時の差分ログ取得停止(REP_TRF_INH_CLOGオペランド、REP_TRF_COFFオペランド)
トランザクションログファイルへの書き込みバッファ枚数をLinkexpress Replication optionの動作環境ファイルのREP_TRFW_BUFF_NUMオペランドで指定します。本バッファを拡張することで、トランザクションログファイルへの書き込みバッファの枯渇削減、トランザクションログファイルへのi/o処理を軽減することができます。
バッファ枚数1000から始めて、利用者プログラムの処理時間、およびトランザクションログファイルへのi/o処理に効果があるまで増やしてみてください。
なお、トランザクションログファイルへのi/o負荷が低い場合、効果のでない場合があります。
バックグラウンド処理における差分ログファイルへの書き込み保証処理の実行単位をLinkexpress Replication optionの動作環境ファイルのREP_DLF_WRITE_MODEオペランドで指定します。本オペランドに“MULTI”を指定することで、適切な単位で差分ログファイルへの書き込み保証処理を行い、バックグラウンド処理が効率的に動作します。
一定時間内に発生するトランザクション数が多い場合(例:最大が数十TPS)に、“MULTI”を指定してください。
なお、“MULTI”を指定した場合、以下の点を考慮する必要があります。
複数のトランザクションをまとめて処理するため、抽出コマンドが差分ログファイルの排他待ちになることがあります。
このため、抽出コマンドを実行するイベントのジョブ結果待ち時間を設定する場合は、この排他待ち時間を抽出コマンド処理時間の最大見積もり値の3倍程度以上に指定されることを推奨します。
複数のトランザクションをまとめて処理するため、トランザクションログファイルのサイズは、大きめに見積もってください。(“SINGLE”を指定した場合と比較して1.5倍程度で見積もりすることを推奨します)
差分ログファイルへの書き込み保証処理の並列数(CPUが必要)をLinkexpress Replication optionの動作環境ファイルのREP_DLF_SYNC_PNUMオペランドで指定します。一度に大量のトランザクションが発生し、かつ複数の差分ログファイルに対して差分ログを取得する場合に効果があります。
以下を目安に見積もります。
REP_DLF_WRITE_MODEオペランドの | REP_DLF_SYNC_PNUMオペランド指定値の |
---|---|
“SINGLE”を指定した場合 | トランザクション内で対象となる差分ログファイル数の最大で見積もります。 |
省略した場合 | |
“MULTI”を指定した場合 | お客様業務単位内で対象となる差分ログファイル数の最大で見積もります。 |
Linkexpress Replication optionでは、Symfoware/RDBのダウンリカバリ処理が発生すると、Linkexpress Replication optionのダウンリカバリ処理を行います。
このダウンリカバリ処理の処理時間は、トランザクションログファイルに差分ログファイルへの転送待ちとなっている差分ログ(リカバリ対象ログと呼びます)の量に依存します。有効ログ範囲の指定は、Linkexpress Replication optionのダウンリカバリ時間をできるだけ一定にしたい時、またはクラスタシステムの切替え時間内にLinkexpress Replication optionのダウンリカバリ処理時間をできるだけ抑えたい場合に指定します。
Linkexpress Replication optionの動作環境ファイルのREP_RELLOG_RATEオペランドで指定します。
考え方を以下に示します。
Linkexpress Replication optionのダウンリカバリ処理時間< Linkexpress Replication optionのダウンリカバリ処理許容時間
以下を目安に見積もってください。
(A)דREP_RELLOG_RATE”指定値÷100÷(B)×(C)< Linkexpress Replication optionのダウンリカバリ処理許容時間(秒)
A:トランザクションログファイルのサイズ(Mバイト)
B:ディスク性能(Mバイト/秒)
C:安全係数(1.5)
なお、本オプションは、リカバリ対象ログ範囲の最新化を最優先で行いますので、利用者プログラムの処理性能に影響があります。
トランザクションログファイルの容量不足や入出力障害が発生すると、複写元データベースを更新するお客様業務が継続できなくなる場合があります(更新SQL文がエラーまたは処理遅延)。このため、トランザクションログファイルを配置するディスクの冗長化や容量監視などの対策が重要となります。
なお、絶対にサービス停止が許されないシステムでは、これらの対策を実施した上で、容量不足や入出力障害が発生した場合に備えて、差分ログの取得を停止することでお客様業務を継続させることを検討してください。
動作環境ファイルのREP_TRF_COFF オペランドを利用することで、トランザクションログファイルが容量不足になりそうな場合に、差分ログの取得を自動的に停止し、お客様業務を継続することが可能です。また、動作環境ファイルのREP_TRF_INH_CLOGオペランドを利用することで、トランザクションログファイルが入出力障害となった場合に、差分ログの取得を停止し、お客様業務を継続することが可能です。以下に機能ごとに説明します。
REP_TRF_COFFオペランド
トランザクションログファイルが容量不足になる場合に備えて、本オペランドにトランザクションログファイルの使用率を指定することで、使用率に達した場合に差分ログの取得を停止して、お客様業務を継続することが可能となります。本オペランドの指定値は、通常の運用中に発生する使用率より大きい値を指定してください。
トランザクションログファイルの使用率が、本オペランドの指定値に到達した場合、その時点で実行中のトランザクションは差分ログ取得停止とはなりません。
このため、トランザクションログファイルの使用率が本オペランドの指定値に到達した時点で実行中のトランザクションに関して、エラーを発生させないために以下を考慮してください。
実行中のトランザクションが出力するログ量により、トランザクションログファイルの使用率が100%に達しないように、トランザクションが出力するログ量を考慮して、本指定値を設定します。なお、指定値を超えた後に発生するトランザクションは、差分ログを取得しないため、エラーにはなりません。
REP_TRF_INH_CLOGオペランド
利用者プログラム実行中にトランザクションログファイルが入出力障害などの理由で閉塞した場合、システムが自動的に差分ログの取得を停止します。
注意
トランザクションログファイルの容量不足または入出力障害などにより、エラーとなったトランザクションは、再実行することを推奨します。(本機能により差分ログが取得されないため、再実行後はエラーにはなりません)
本機能を利用して差分ログの取得を停止した場合は、複写元と複写先のデータベースの一致性を保証できなくなるため、運休日などを利用して、トランザクションログファイル(管理部)の再作成および全複写機能による複写先データベースの再創成を実施してください。再作成の詳細は、2.11.1.5 トランザクションログファイルへの差分ログ停止後の再開を参照してください。
Symfoware/RDBの起動時にトランザクションログファイルが入出力障害となるとSymfoware/RDBの起動が失敗します。お客様業務を優先させる場合は、動作環境ファイルにREPLICATION=OFFを指定した後、Symfoware/RDBの起動を再実行することで、Linkexpress Replication optionを止めて業務を継続することが可能です。
システム構築後の運用テストにおいては、必ずLinkexpress Replication optionの性能情報を取得し、レプリケーションの動作を調査してください。その上でチューニングが必要である場合、Linkexpress Replication optionの性能情報の取得をlxreppdaコマンドによって行い、分析してください。
Linkexpress Replication optionのチューニングについては、“付録H レプリケーションのチューニングについて”を参照してください。