DBMoto5でのシンクロナイザーション・ループ制御【リアルタイムレプリケーションツールDBMoto】

DBMoto5ではもう一方のシステムに対して変更が必要なときに、ユーザ名でシンクロナイズするテーブルに変更するかどうか決定します。
DBMoto5でテーブルをシンクロナイズさせるにはそれぞれのシステムでDBMotoだけがしようするユーザを作成する必要があります。

もし、ユーザはOracle1とOracle2の2システムを所有していたとします。
ユーザはDBMotoだけに使用するユーザをそれぞれに設定する必要があります。
両方に「DBMoto」のようなユーザ名でも、Oracle1に「DBMoto1」、
Oracle2に「DBMoto2」でも構いません。

もし、Oracle 1とOracle2にシンクロナイズするテーブルに変更が発生した時、
redoログが変更があったとリードした時に、DBMotoはユーザによってデータベースに接続したときに、ユーザが指定した変更を無視します。
もし、両システムがユーザ「DBMoto」で接続した場合、「DBMoto」ユーザによる
変更は他方のシステムへのシンクロナイズされません。
「DBMoto」以外のユーザでの変更は他方のシステムへシンクロナイズされます。
DBMotoは「DBMoto」ユーザを使用しているので、他方システムへの変更は
「DBMoto」ユーザによって行われ、redoログがその変更をリードした時は
無視されます。

コメントする -->

シンクロナイゼーションについて【リアルタイムレプリケーションツールDBMoto】

Q1)ほぼ同時に同一データに更新があった場合、どうなるのか?
その回避策は?”

A1)DBMoto で Synchronization 時にデータ更新のコンフリクト(*1)が発生した場
合の対応方法としては以下の4種類が用意されています。

1. SourceServerWins :ソース側の更新内容でターゲット側を更新します。
(デフォルト)
2. TargetServerWins :ターゲット側の更新内容でソース側を更新します。
3. FirstComeWins :タイムスタンプの早いものの内容で両テーブルを更新
4. Use Script :DBMotoはイベントを作成するのでユーザーはスクリプ
トで行いたい処理を記述する

(*1) データ更新のコンフリクト
DBMoto はリプリケーションに定義されたインターバルでトランザクションロ
グを読み更新を行います。同一インターバルでソースとターゲットが同一レコー
ドに対して異なる更新が行われていた場合をデータ更新のコンフリクトとみなし
ます。

2つの更新が別のインターバルに入ればOKケースの動作になります。

NGケースのような結果になることはどの設定でもございませんが、
コンフリクトが発生した場合にはテーブルの同一性を保障するために
1~3の設定ではどちらかのトランザクションが捨てられる動作となります。

Q2)スキーマ単位やテーブル単位での単方向レプリケーションは可能か?

A2)テーブル単位のリプリケーションは可能です。
スキーマ単位という定義はありませんが、複数のリプリケーションを作成する
ためのウィザードが用意されています。

Q3)片側で障害が発生した場合に必要なオペレーションは?

A3)短時間の障害であれば接続が復旧し次第リプリケーションが再開されます。
障害のための停止期間が長引き停止期間のトランザクションがトランザク
ションログから消えてしまった場合には、initial refresh (テーブルの
フルコピー) が必要になります。initial refresh には時間が掛かることが
予想されますので、refresh 完了まではどちらの系でも更新を行わないこと
が推奨されます。(refresh中のトランザクションログあふれが懸念されるため)

注意点としては、DBMoto は Refresh を常に ソース→ターゲット という方向
で行います。ソース側DBが障害を起こしその間ターゲット側で更新を行ってい
た場合そのまま refresh を行うとターゲット側の更新内容が消えてしまいま
す。
この場合、ソースとターゲットを逆にした新たなリプリケーションを定義す
る必要があります。

コメントする -->

リフレッシュ・モード vs. ミラーリング・モード【リアルタイムレプリケーションツールDBMoto】

DBMotoのリフレッシュ・モードとミラーリング・モードについての比較は下記のチャートを参考にしてください。

○リフレッシュはテーブル全体のコピーです。

スケジュールによりリフレッシュを定期的に行うことは可能です。
実際の動作としては一旦ターゲットテーブルの全データを削除し、ソースから全レコードを読んでターゲットに書き込む形になります。

○ミラーリングも実際は最初にリフレッシュを行い、その後更新分のみの変更という2段階になっています。

リフレッシュモードではDBMoto はソースデータベースからデータを読み出して、管理者が規定したマッピングルールに従って変換しターゲットデータベースに書き込みます。
ミラーリングモードではDBMoto は最初にリフレッシュを行い、その後トランザクションログを基にリアルタイムに逐次レプリケーションを実行します。

コメントする -->

Handling errors with SQL Serverについて【リアルタイムレプリケーションツールDBMoto】

Summary:Handling errors when replicating with SQL Server
Topic ID:KBFAQ 1580

DBMoto Enterprise Manager を起動し SQLServer で右クリックして
「Transaction Log…」を選びます。

Transaction Log Settings では以下の2項目をチェックします。

Last read date
72時間以上 Last read data から経っている場合には以下の操作が必要です。
– 右の赤い×をクリックしてlast read date を消します。
– いくつかのトランザクションが消えた可能性があります。もし確かでなければ
replicated tables status を ‘Refresh to run’ に変更します。

Replication stopped
チェックされていたら、チェックをはずします。

コメントする -->

VBScript環境【リアルタイムレプリケーションツールDBMoto】

DBMotoは下記のようなVBScript環境があります。

詳細はDBMotoユーザガイドかHelpファイルの「Global VBScript」を参照ください。

コメントする -->

Mapping Function【リアルタイムレプリケーションツールDBMoto】

DBMotoには下記の図のようなソース・フィールドからターゲット・フィールドへのマッピング機能があります。

詳細はDBMotoユーザガイドかHelpファイルの「Specifing Mapping Functions」を参照ください。

コメントする -->

Oracleでのレプリケーション注意項目【リアルタイムレプリケーションツールDBMoto】

Q1)LONG型の列を含むテーブルもレプリケート可能でしょうか。
(オラクルのレプリケーション・ソフトは、制約があるためできません。)

A1)実際にテストを行い確認しましたが、Oracle の long タイプのリプリケーションは可能です。
Oracle8i の場合には事前に必要な設定があります。

Q2)シーケンスそのものはレプリケート可能でしょうか。
(オラクルではレプリケーションの対象外となっています。)

A2)シーケンスについてはリプリケーションの対象になっておりません。

Q3)その他にレプリケート出来ないオラクルのオブジェクトがありますか?

A3)Oracle DBのうちリプリケーションの対象となるのは table のみです。

コメントする -->

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

Q1)レプリケート先のDBがダウンの場合、更新情報はDBMotoがインストールされているサーバーに蓄積されている時にはどうなりますか?

A1)Continuous Mirroringを行う際に DBMoto はソースDBのトランザクションログを元に更新を行います。
ターゲットDBがダウンしている間は、更新を反映したトランザクションログのポインタのみを保持していて、接続が再開され次第その時点からの更新情報をターゲットに反映します。

Q2)仮にQ1の場合、DBMotoにて蓄積可能な更新情報の件数はどのくらいでしょうか?(先DBサーバーがダウンの場合を想定しています。)

A2)従いまして、保持可能な更新情報はDBMotoではなく、ソースDBの構成
によります。

コメントする -->

DBMoto with Japanese Language Settings(Ver4.1)【リアルタイムレプリケーションツールDBMoto】

Q.
Why don’t the Japanese characters display correctly when I set the system locale to Japanese and run DBMoto?

A.
When using the Japanese language settings, you must change the default font (which is MS Sans Serif, charset Western) of some of the dialogs in DBMoto into a font that can read Japanese. To do that, a new entry must be created in the registry to notify DBMoto.

To use a different font, specifically MS Gothic, charset Japanese:

1. Click on Start > Run… and type ‘regedit’

2. Go to the key: HKEY_CURRENT_USERSoftwareHiT SoftwareDBMotoGeneral

3. Create a new string entry named ‘ShowTableJapaneseCharset’

4. Set its value to ‘-1’

To return to the previous setting, either set this entry to 0 or simply delete it from the registry.

————————————————
Product:
DBMoto

Version:
4.1

Category:
Settings

Last Updated:

Topic ID:
07/07/03

KBFAQ 1455

Summary:
Using DBMoto with Japanese Language Settings

———————————————

コメントする -->

OpenTable【リアルタイムレプリケーションツールDBMoto】

(Q):Create Target Table… で作成したデータをDBMoto (現Syniti Data Replication)上で Open Table… で見ると、フィールド名のみが表示された。

(A):このこと自体は何か設定に問題があることを示しているかもしれません。
Open Table… で表示された画面で Messageを表示してみ
てください。

本来この画面では通常の SQL のコマンドがそのまま実行できるはずです。
ソースとターゲットで実行結果が異なるようでしたら、MySQLのサーバー側
の設定の違いであることも考えられます。

注:Syniti Data Replication) は異種データベース間の双方向に対応したリアルタイムレプリケーション・ツールで、AS/400・Oracle・SQL Server・Db2 LUW・MySQLなど多くのデータベースに対応します。DBの移行・バックアップ・災害対策(BCP)・他システムとの連携にご活用いただけます

コメントする -->

管理者が行う作業に付いて【リアルタイムレプリケーションツールDBMoto】

DBMoto の管理者が行う作業に付いて説明します。

1) フィールドに変更が無い場合
管理者が定期的なリフレッシュをあらかじめスケジュールしておく事で
後は Data Replicator がスケジュールに基づきリフレッシュを実施し、
ターゲットのテーブルにソースのデータを反映します。

2) フィールドに変更があった場合
管理者が何も変更しなければ Data Replicator はそれまでの設定に従っ
てリフレッシュを実行しようとします。フィールドの追加の場合は新し
いフィールドのデータは含まれませんが、正常にリフレッシュは実行さ
れるものと思われます。

フィールドの変更をリプリケーションに反映させるために管理者が行わ
なければならない手順は

① リプリケーションの削除
② ターゲットテーブルの削除
(ターゲットデータベースから削除する必要があります。)
③ ターゲットテーブルの作成
④ リプリケーションの作成
——————————————————

コメントする -->

FAQ【リアルタイムレプリケーションツールDBMoto】

Q)>テーブルがLockしている場合は、どのような振る舞いになるのでしょうか?

A)DBMoto では特にロックの処理をしておりません。
DBに対してREADを行う他のアプリケーションと同様な動作をするとお考えいただけますでしょうか。

Q)稼働環境について
> DBサーバ→DBサーバへレプリケーションを行うにあたり、
> 「DBMoto」自体は、DBサーバ以外のWindowsサーバ上で
> 常時稼動させておくという認識は正しいでしょうか。

A)DBMoto が稼動する Windows マシンでリプリケーションの管理お
よび実行を行うという認識は正しいです。但しこのマシンがソース
またはターゲットのDBサーバーと同一とすることも可能です。
マシンのパワー、DBサーバーの要求、リプリケーションに対する要求
等を加味してマシンの構成をご検討ください。
注意点としてはリプリケーション実行中はメタデータに対するアクセ
スが発生しますので、メタデータはDBMoto マシンからネットワーク
的に近くなるよう構成するようにしてください。

Q)>レプリケーションについて
> 「ミラー・モード」を用いると、リアルタイムの同期が可能と
>  考えていますが、この認識は間違い無いでしょうか?

A)ミラーリング中はソースの変更分を逐次ターゲットに反映してまいり
ますので、分オーダーで同期が可能でございます。(設定により変更
の確認の間隔は調整可能です)

Q)>ソースDBの性能は、ターゲットDBの性能に影響されますか。
>  すなわち、ソースDBのトランザクションの完了は、ターゲット
>  DBへのレプリケートの完了を待つという事でしょうか。
>  (ターゲットDBの性能が悪い場合、ソースDBの処理が
>  引きずられて遅くなる)

A)そのようなことはございません。
DBMotoのリプリケーションはソースDBで完了したトランザクションの
ログに基づいて動作いたしますので、ソースDBの変更とは非同期に行
われます。

Q)> 同時に複数のDBにレプリケーションする事は可能でしょうか。
>
>  例)ソースDBの表Aのレコードが更新されたとき、ターゲットDB①
>    の表Aにリアルタイムでレプリケート、かつ、ターゲットDB②の
>    表Bにも、ソースDBの表Aの一部のデータがレプリケート。

A)DBMoto V4 でのリプリケーションは基本的に逐次処理になりますので、
ターゲットDB①へのリプリケーション完了後、ターゲットDB②へのリプリ
ケーションの実行となります。DBMoto V5 ではMulti-Threadで実行できる
ように変更されております。
複数のターゲットへのリプリケーションは可能でございます。

コメントする -->

レプリケーションの設定【リアルタイムレプリケーションツールDBMoto】

(Q):Data Replicatorを起動し,レプリケーションの設定を設定しても、レプリケーションが行われません。ステータスはずっとアイドルのままです、モードはリフレッシュモードで設定しています。これには何か理由があるのでしょうか?

(A):Replication が有効であるのに実際にデータが書かれないようであるならば
http://blog.goo.ne.jp/hitsw/e/4e83bce0d29c3bdc4c4128583a9d3fea の手順で
お問い合わせください。

ステータスはリプケーション動作が終わればアイドルに戻るので、データが少なければ画面上では変化が無いこともございます。
Processed Records / Failed Records / Total Records / Last Refresh Time は
変化していないでしょうか?
また画像のように結果がエラーになってはいませんか?

コメントする -->

SourceとTarget等の設定について【リアルタイムレプリケーションツールDBMoto】

Q)SourceとTargetを設定するのですが,その他レプリケーションに必要な設定等はありますでしょうか?

A)レプリケーションを開始するまでの非常に大きな流れとしては:

target用のデータベースが無ければ作成する
DBMoto Enterprise Manager で
source connection を作成する
target connection を作成する
source table から target table を作成する(テーブル毎)
source table から replication を定義する(テーブル毎)
Data replicator を起動する

となりますが、詳しくは Helpをご覧ください。

Q)Create Target Table…を実行して、Target側に空のテーブルを作成する事は出来るのですが、レプリケーションの設定を行い、スケジュールの時間が来ても動作しないようです。

A)Enterprise Manager は言わば構成エディタです。実際のレプリケーションを行うエンジンは Data Replicator ですので起動してください。

Q)ミラーリングモードに設定しようとすると添付のファイルのようなダイアログが出ます、これらは評価版による機能制限でしょうか?

A)評価版に機能限定はありません。
ミラーではサポートされないソースを指定していませんか。
(例えば MySQL)

Q)レプリケーションは、Table単位での実行しか出来ないのでしょうか?
データベース単位、又は複数テーブルを一括でスケジュールは出来ないのでしょうか?

A)レプリケーションはtable単位で作成しますが、それらをグループにする
機能がV5で追加されました。

レプリケーション・グループを作成して、リプリケーションを登録して
ください。以後はリプリケーション・グループ単位で設定します。

コメントする -->

レプリケーションエラー時について【リアルタイムレプリケーションツールDBMoto】

Q:エラーが起きた場合、リトライは何回くらいされるのか?

レプリケーションのタイプとエラーに依ります。
例えばINSERTファイルのような単一のレコードでエラーが発生した時はエラーのログを残し、レプリケーションは続行します。

ミラーリング/シンクロナイザーション・モードでは;
接続フェイルのようなシステムに関連するエラーであれば、DBMotoは通常、問題発生時にログを最初に採り、接続ができるまで何度も接続を試みます。

リフレッシュ・モードでは実行はストップします。
ユーザがリフレッシュの再スケージュールをする必要があります。

もし、問題があったときはlog.fileとtraceファイルを必ずお送りください。
インストラクションを下記にリストます。

=====================================================
1. DBMoto log file – located under the installation directory of DBMoto. The
name of the file is called “DBMoto.log”

2. Debug file – It contains more detailed log information. This particular
file need to be activated from the command line. To enable this debug log,
please stop DBMoto first and then run the following command:
“DBMotoDR.exe -interactive -debug”. Then repeat the procedure leading up to
the error. The information will also be placed in the installation directory
of DBMoto. The name of the file is called “DBMoto.trc”

====================================================

コメントする -->