SQLServerがソースDBの時の注意事項【リアルタイムレプリケーションツールDBMoto】

SQLServerはソースデータベースとしてミラーリングまたはシンクロナイゼイションレプリケーションが行なう場合の注意点 (SQLServerの場合のみ)

(1)接続設定

データベースへの接続を設定する時、User IdにDBMoto専用のユーザの指定が必要です。

システムアドミニストレータ (“sa”) のユーザの場合、データベースの管理または他のアプリケーションに使用する可能性があります。この為に、システムアドミニストレータはDBMoto専用にならないので、使用できません。

さらに、システム管理者接続ではレプリケーションのトランザクションログを識別するユーザの十分な情報を提供しません。このために、システム管理者以外の接続が必要になります。そうでないと、DBMotoはそのトランザクションログをシステム管理活動として取り扱って、レプリケーションができません。

(2)トランザクションログ設定

DBRS_DistributionにDistributorをセットアップしおよびトランザクションログをアクセスできるために、
User Idにシステムアドミニストレータのユーザを指定する必要があります。

備考:
SQLServerのの認証を”SQLServer & Windows”に設定する必要があります。
設定方法:
「SQLServer > Local Server > Properties > Security」に行って、
Authenticationオプションで”SQLServer & Windows”を選択します。

コメントする -->

グループレプリケーションにおける同時DBトランザクションの対策【リアルタイムレプリケーションDBMoto】

■2015/05/25記事改訂

レプリケーションコンフリクト(Replication Conflict)の問題を解決するためには、「レプリケーションプロパティ」(Replication Properties)ダイアログで設定を行う必要があります。

  1. 作成したレプリケーショングループを右クリックして、「レプリケーションを編集する」(Edit Replications)を選択する。

  2. レプリケーションプロパティ」(Replication Properties)ダイアログで「優先」(Preferences)を選択して、「競合回避」(Conflict Resolver)のプルダウンメニューから、「Use Script」を選択すると「スクリプト」(Script)ボタンが使用可能になる。

  3. スクリプト」(Script)ボタンをクリックして開く「レプリケーションプロパティ」(Replication Properties)でレプリケーションに対するVB.netコードを作成できます。

    備考: レプリケーションプロパティを編集する前に、レプリケーションを使用不可に設定してレプリケーションを停止すべきです。
    (レプリケーションを右クリックして、「レプリケーションを有効にする」(Enable Replication)のチェックを外す。)

レプリケーションイベントに関して、DBMoto UsersGuide.pdf -> Writing Scriptsを参照してください。

コメントする -->

データベース接続数の制限設定【リアルタイムレプリケーションツールDBMoto】

DBMotoで設定したDBソース又はDBターゲットの接続数を制限するには、「Connection Properties」ダイアログで設定する。
ツリービューでDBソース又はDBターゲットのノードを右クリックして、「Connection Properties」を選択する。
「Connection Properties」ダイアログで「Max Number of Concurrent Connection」に接続数を設定する。  
(デフォールト設定は20になっている。)

参照: DBMoto UsersGuide.pdf -> Connection Properties Dialog

コメントする -->

レコード登録・更新処理に対するコミット・タイミング処理【リアルタイムレプリケーションツールDBMoto】

全レプリケーション・モード(Refresh, Mirroring, Synchronization)におけるコミット・タイミング処理に関しては
下記の2つケースがあります。
(1)データ更新の場合  
→ 1レコード更新毎にコミットがされます。
(2)データ・リフレッシュ(初期インサート)の場合
→ DBMoto デフォルト設定で1レコード・インサート毎にコミットがされますが、レプリケーションの
インサートモード(Insert Mode)にて、ターゲットDBへのレプリケーション処理を最適化することができます。
設定手順:
①レプリケーションを右クリックし、「Replication Properties」に行って、「Preferences」タブに移行します。
②下記図のように項目名「Insert Mode」を探し、設定します。
③コンボボックスリストで「BulkInsert」を選択します。
④「Block Size」も設定することが可能です。基本的に100~200数に設定したら良いです。
  大量データのレプリケーションを行なう場合は、ブロックサイズを減らし、および、
  少量データの場合はブロックサイズを増加することになります。

コメントする -->

SQLServerのCommitについて【リアルタイムレプリケーションツールDBMoto】

【質問1】
DBMotoミラーリング稼働中に、受け側のSQL Server で実行可能な処理の制限は何でしょうか。
通常のSQL による Update Mode でのSelect から Update の処理を実施していると考えて良いですか?特別な禁止事項があれば、ご指摘下さい。

回答→ SQL ServerはターゲットDBとしての場合は、実行可能な処理の制限は特にありません。
しかし、レプリケーション(ミラーリング)を行なう時、かならずSQLServer Service と SQL Server Agentを起動する必要があります。

【質問2】
この場合、Commit はどの単位で実行されますか?

回答→DBMoto デフォルト設定で1レコード更新毎になっておりますが、
下記の2つコミットタイミングを設定することができます。

(1)”SingleInsert”モード - コミットは1レコード毎に行なっております。
(2)”BulkInsert”と”SimulatedBulk”モード – レコードをグルプしてから、
インサート処理が行なって、コミットされます。

※ 設定に関しては、「Help>Replication Properties Dialog」をご参照ください。

コメントする -->

ミラーリング・サポートDBの拡張【リアルタイムレプリケーションツールDBMoto】

DBMotoは次の3つのレプリケーション・モードをサポートします。

●リフレッシュ
すべてのレコードをスキャンして、レプリケーション

●ミラーリング
ソースのログ/ジャーナル・トリガー・テーブルでレコードされたトランザクションをベースにミラーリング

●シンクロナイゼーション
双方向のミラーリング

拡大図

○ Ver6.11以上でミラーリングが可能なデータベースは下記のデータベースです。

・IBM DB2 (i/iSeries/AS400, UDB and zOS)
・Oracle
・Microsoft SQL Server
・MySQL
・Sybase Adaptive Server Enterprise*
・SQL Anywhere*
・Informix*
・Gupta SQL Base*

*マークはVer6.11から新たにミラーリングをサポートするデータベースです。

コメントする -->

iSeries/AS400 ジャーナル作成と実行について【リアルタイムレプリケーションツールDBMoto】

1.ジャーナルの作成

(1)レシーバの作成
CRTJRNRCV JRNRCV(TDLIBMST/DBRSJ00001) AUT(*ALL)
※ライブラリの指定とレシーバーの名前を設定します。

(2)ジャーナルの作成
CRTJRN JRN(TDLIBMST/DBRSJ) JRNRCV(TDLIBMST/DBRSJ00001) AUT(*ALL)
※ジャーナルの名前を指定します。

(3)複数レプリケーション&テーブルを設定(使用)する場合は、当該コマンドを実行する事により下図の【Read】ボタンを押下したときに、Receiverが自動生成されます。
CHGJRN JRN(TDLIBMST/DBRSJ) JRNRCV(*GEN)

(4)ジャーナルの起動
STRJRNPF FILE(TDLIBMST/SDTZ1) JRN(TDLIBMST/DBRSJ) IMAGES(*BOTH) OMTJRNE(*OPNCLO)
※SDTZ1(テーブル名)
※レプリケーション対象テーブルに対して上記コマンドの実行が必要となります。

【追加参考資料】

(1)新しいジャーナルライブラリの作成
CREATE COLLECTION TDLIBMST1
※TDLIBMST1に含まれる全てのテーブルがジャーナルとなります。

(2)ジャーナルライブラリでないライブラリのジャーナルライブラリ化
CREATE TABLE TDLIBMST1/SDTZ2 AS (SELECT * FROM TDLIBMST/SDTZ2) WITH DATA 

2.ジャーナルの実行

(1)Libray Name/Version は、自動的に生成されます。
  ※名前の変更は、行うことができます。
(2)Savf Fileは、自動的に使用しているAS400のバージョンを認識して、
  [1]プロシジャーの作成

(3)【C:Program FilesHiT SoftwareDBMoto V6ServerFiles】にSave.Fileが存在します。

コメントする -->

DBMoto6.Xでのバージョンアップ方法【リアルタイムレプリケーションツールDBMoto】

MetaDataのバックアップを最初に行います。

(1)ツールバーの【Metadata→Backup Metadata】を選択します。

(2)【Metadata→Backup Metadata】を選択すると、下記フォルダがデフォルトで
   出力されますが、アップグレード処理時は、DBMotoV6フォルダ以外の場所に
   バックアップファイルを格納して下さい。
   ※安全の為に、DBMotoV6フォルダ内の全ファイルをバックアップする事を
    お勧め致します。

(3)バックアップ MetaDataファイルが正常に保存できれば、下記のメッセージが
   出力されます。

(4)バックアップ処理終了後、アップブレードするバージョンのDBMotoインストーラ
   を起動します。

(5)インストーラを起動すると、下記のメッセージが出力されるので、【はい】を押下
   します。

(6)DBMotoインストーラが実行されるので、【Next>】を押下します。

(7)アップグレード準備画面に移行しますので、【Upgrade>】ボタンを押下します。

(8)下記画面が出力されて、アップグレード作業は終了いたします。
   再度、DBMotoを実行して頂いた時には、アップグレードされている状態で
   アップグレード前の設定を使用する事が出来ます。

コメントする -->

DBMOTOライブラリ(DBMOTOLIB):AS/400【リアルタイムレプリケーションツールDBMoto】

DBMOTO ライブラリ(DBMOTOLIB)に関して下記のようにご説明をさせて頂きます。

ミラーリングまたはシンクロナイゼイションレプリケーションを行なう場合は、
トランザクションログを格納および参照するために、
iSeries/AS400にライブラリを作成する必要があります。

これはソースコネクションウィザード(Source Connection Wizard)で
自動的に作成されます。
※デフォルトのライブラリ名は「DBMOTOLIB」になっておりますが、
変更可能です。

もし、別のライブラリを使用する必要があれば、
iSeries/AS400に手動でライブラリを設定することになります。

これに関しては、DBMOTO User’s Guide の下記のトピックスをご参照ください。

【ライブラリセットアップ方法】
(自動):Installing DBMoto for DB2 on System i/iSeries/AS400
(手動):Creating the DB2 Library Manually

コメントする -->

System i/iSeries/AS400上のDB2用DBMotoのインストールについて【リアルタイムレプリケーション】

System i (iSeries/AS400)をミラーリングでのソース・データベースか
シンクロナイゼーションのターゲット・データベースとして使用するときには
System i (iSeries/AS400)に追加のインストール手順が必要です。

これはマニュアルか、DBMoto Enterprise Manager のツールを
使用して行うことができます。
System i (iSeries/AS400)上にDBMOTOLIBと呼ぶ、ライブラリを作成する必要があります。
これにはライト・パーミッションとQSECOFRプリビレッジでのログインが必要です。

1. セットアップ・ファイルからDBMotoをインストール。
2. Enterprise Managerをスタートさせる。
3. metadataテーブルの作成 (DB2/400 以外のデータベース使用を推奨。
4. DB2/400 用のソース接続を作成(シンクロナイゼーションを行なう時はソースまたはターゲット接続)
  接続の設定は「DB2/400 Connection Recommendations」を参照
5. 接続ウィザードの「Setup Info」ステップで、System i (iSeries/AS400)上にDBMOTOLIBライブラリをインストール。
6. FTPステータス・エリアでメッセージを確認
7. プロセスが完了したら、Cancelをクリックし、ダイアログをクローズ。

もし、エラーがレポートされたときは、通常は次のどれかになります。

• ユーザID がSystem i (iSeries/AS400)上のリードオンリーのパーミッションか、
  QSECOFRプリビレッジが無い。
  これはライト・パーミッションとQSECOFRプリビレッジを持った
  System i (iSeries/AS400)ログインで、もう一度プロセスを
  起動させることで解決できます。

• ライブラリかSavefileがすでに System i (iSeries/AS400),上に存在し、
  上書きも削除もできない。
  これはすでに存在するファイルの削除/上書きプリビレッジを持った
  System i (iSeries/AS400)ログインで解決できます。
  System i (iSeries/AS400)ライブラリを完全にインストールできない時は
  DBMOTOLIBライブラリをマニュアルでリストアすることができます。

コメントする -->

ミラーリングの復旧で、リフレッシュ後の開始でエラー【リアルタイムレプリケーションツールDBMoto】

「質問」
ミラーリングの復旧で、リフレッシュ後の開始でエラー:


下記の再開始の手順で、エラーになってしまいました。
何か手順間違いがありますか?

(1) Replications は Refresh用と Mirroring用の2つを設定してある。 (Mirroring は1分間隔)

(2) Mirroring用を Disable、Refresh用を Enable として全件リフレッシュを実行 (正常終了)

(3) Data Replicater を 「Stop Replication Manager」に設定

(4) 停止したことを確認して、Refresh用を Disable、Mirroring用を Enable に設定

(5) Data Replicater を 「Start Replication Manager」

(6) 起動と同時にレプリケーション・エラー (Logファイルを添付)

(7) その後、Sourse DBを更新してみるが、ミラーリングは実行されない。 (タイムスタンプは更新される)

「回答」

OracleのREDOファイルリサイズ後の処理に関してご返答させて頂きます。

ご質問の手順ですと、Refresh用とMirroring用で別けてReplication処理を行っておりますが、Mirroring処理で実行されるInitial Refresh処理と通常のRefresh処理では、処理結果は同じなのですが、DBMotoの内部的な処理が異なります。

その為、リサイズ後の処理としては、下記の様にして下さい。

 1.Data Replicator を 「Stop Replication Manager」に設定
 2.Mirroring Replicationの【Replication Properties】の
   再設定を行う。
   ※イメージを参照

   ①Start Timeの【Now】ボタン押下
   ②【Execute Initial Refresh】チェックボックスのチェック

 3.Data Replicator を 「Start Replication Manager」

コメントする -->

DBMotoが使うスレッド数の算出方法【リアルタイムレプリケーションツールDBMoto】

【質問】
DBMotoが使うスレッド数の算出方法(例:レプリケーション設定と同様)が
ありましたら教えてください。

【回答】
DBMotoが使うスレッド数の算出方法に関しては、
一つのレプリケーション実行は一つのスレッドになっております。

DBMotoが使うスレッド数のオーバーフローを回避することに加え、
レプリケーション処理を最適化するために、DBMotoは下記の方法を
提供しております。

● DBサーバーへの同時接続の最大数の制限
Enterprise Managerで該当するDBサーバーを右クリックし、
「Connection Properties」を選択します。
「Dynamic Properties」の「Max Number of Concurrent
Connection」フィールドに適切な値を指定することが出来ます。

※設定に関しては、下記の「connection_properties.jpg」を
ご参照ください。

● Data Replicatorのスレッド設定
同時スレッドの最大数、スレッドの解除(メモリー使用量の解除)、
スレッドのタスク処理の時間を設定することができます。
メニューの「Tools > Options> Data Replicator」に行って、
スレッドに関しての設定を行なうことが出来ます。

※設定に関しては、下記の「thread_settings.jpg」をご参照ください。

● 複数レプリケーションのグループ化
複数レプリケーションをグループすると、
DBサーバーの接続とトランザクションログのアクセスが最適化されます。

Enterprise Managerの左側ツリービューで項目名「Groups」を右クリックし、
「Add New Group」を選択すると、「Replication Group Wizard」で
新しいグループを作成します。

新規作成されたグループの「Group Properties」で
該当するレプリケーションをグループに追加することができます。

注意点:
(1)レプリケーションを一つのグループにすると、
レプリケーションの実行スケジュールとレプリケーション設定は
同じになります。
(2)DB接続とレプリケーション処理を最適化するために、
グループに含むレプリケーションのソースとターゲットDBを
同じように設定する必要はあります。

上記方法に関しては、DBMoto User’s Guide /Helpの
下記トピックスをご参照ください。

●Managing Multiple Concurrent Replications
●Connection Properties Dialog
●Options – Data Replicator Tab
●Creating a Replication Group
●Managing Performance Using Thread Settings

コメントする -->

保護中: シンクロナイゼーションにおけるコンフリクト回避について【リアルタイムレプリケーションツールDBMoto】

このコンテンツはパスワードで保護されています。閲覧するには以下にパスワードを入力してください。

コメントを読むにはパスワードを入力してください。 -->

1対複数のDBレプリケーションの張り方【リアルタイムレプリケーションツールDBMoto】

(1)Enterprise ManagerでソースDBと2つターゲットDBのそれぞれの接続を作成致します。

(2)ソースDBに設定されているテーブル(ターゲットDBに設定するテーブル)を選択し「Create Table」ウィザードを実行する事によりターゲットDBに当該テーブルを作成致します。

(3)テーブルレプリケーションシナリオに従い、該当するレプリケーションを
作成致します。

※1対多のDBレプリケーションの張り方イメージを参照ください。

コメントする -->

IDENTITYカラム設定のエラーについて【リアルタイムレプリケーションツールDBMoto】

Q:DBMotoの設定、PKの設定を行い、レプリケーションのテストをしているのですが、キー項目にIDENTITYを設定するとエラーになってしまいます。

テーブルのデザインがこのようになっていて、PG上でもインクリメントを必須として動作をしている為、設定を外すことができないのですが、対処の方法はありますか?

A:このエラーの原因としては、IDENTITYカラムが設定されているテーブルの「IDENTITY_INSERT」はOFFになっているため、データインサートはうまくできません。SQL Server上で「IDENTITY_INSERT」をONに設定しても、DBMotoでのレプリケーションのインサートモード(Insert Mode)はデフォルトで「SingleInsert」になっているため、「IDENTITY_INSERT」はOFFに戻ってしまいます。

これを解決するには、該当するレプリケーションを右クリックして「Replication Properties」を選択します。
図に示すように「Insert Mode」を「Bulk Insert」に設定してください。

コメントする -->