DataExchange の使用
日常作業で DataExchange を使用するためのガイド
以下のトピックでは、日常的に DataExchange を使用するための詳細な情報を提供します。基本概念だけでなく、レプリケーション中に起こり得る一般的なシナリオのいくつかに対処するための手順を追った説明も含まれています。
アクティブ化
アクティブ化とは、レプリケーション用の新規データベースを作成するか、または既存のデータベースを有効にし、そのデータベースをレプリケーション ネットワーク内のサイトに属していると定義付けることにより、レプリケート可能にすることです。アクティブ化はデータベースをサイトに関連付けるため、データベースのアクティブ化とサイトのアクティブ化は同じことを意味します。
Deployment Wizard および dxdeploy コマンド ライン ユーティリティは、配置処理の一部として自動的にレプリケーション データベースのアクティブ化を行います。dxact コマンド ライン ユーティリティは手動によるアクティブ化の方法を提供するだけでなく、スタート データの前処理などのオプションを選択する柔軟性を提供します。ここでの説明では、dxact を使用してサンプル データベースをアクティブ化します。しかし、まず、アクティブ化処理の概念を理解することが重要です。
アクティブ化とデータ ソース名
データベースをアクティブ化すると、DataExchange はアクティブ化されたコピーを指し示す内部システム データ ソース名(DSN)を作成します。これに加えて、DataExchange インストールでは PSQL DataExchange Database Network Analysis(PDDNA)と呼ばれる、内部レプリケーション データベースを作成します。このデータベースは PSQL エクスプローラーのレプリケーション ノードに DNA アイコンと共に表示されます。
注意: 内部 DNA データベース(PDDNA)を変更したり直接使用したりしないでください。DataExchange が正常に動作しなくなります。
第 1 サイトおよびパートナー サイトのアクティブ化
第 1 サイトは、レプリケーション ネットワークの管理に必要な情報を含んでいる特別なサイトです。その他のパートナー サイトをアクティブ化する前に、第 1 サイトをアクティブ化する必要があります。こうすることにより、情報のコピーをどのサイトでも取得することができます。第 1 サイトをアクティブ化したら、パートナー サイトはどのような順でアクティブ化してもかまいません。各パートナー サイト マシンの Deployment Wizard、dxdeploy.exe あるいは dxact.exe を使用してアクティブ化することができます。
ヒント: データベースをアクティブ化するには、レプリケーション エンジンが実行されている必要があります。
可能であれば、各パートナー サイトのマシンは第 1 サイトとの通信を許可するネットワークに既に接続していて、初期レプリケーション セッションをただちに実行できるようにします。ただし、これは強制的なものではありません。初期レプリケーションは後から実行することもできます。Data Synchronization Edition では、パートナー サイトは、第 1 サイトと初期レプリケーションを実行するまで、ほかのパートナー サイトとレプリケートできません。
アクティブ化に成功すると、PSQL Control Center ではレプリケーション ノード アイコンに A という文字が表示され、データベースがアクティブになっていることが示されます。
初期レプリケーションが成功すると、新しくインストールされたサイトは、レプリケーション スケジュールを含むネットワーク内のすべての管理データを完全に認識します。
さらに詳しい情報
各 DataExchange 配置ユーティリティの使用法に関する固有の情報については、
DataExchange のユーティリティとサービスの使用を参照してください。固有の参照情報を次の表に示します。
アクティブ化方法 | 詳細情報 |
---|
Deployment Wizard(Dpwizard.exe) | |
Dxdeploy.exe | |
Dxact.exe | |
►dxact.exe を使用してアクティブ化するには
1 アクティブ化したいサイトのマシンでコマンド プロンプト ウィンドウを開き、dxact.exe を起動します。
2 コマンド プロンプトで、次のようにコマンドを入力します。
dxact demodata /FI
この例では、dxact.exe ユーティリティを使用して第 1 サイトの demodata データベースをアクティブ化します。デフォルトで、dxact.exe からのメッセージは dxact.log ファイルに書き込まれ、画面には表示されません。dxact.exe の実行中に画面上にメッセージを表示させるには、/LOGFILE= オプションを使用します。これを行うには、次のようなコマンドを入力します。
dxact demodata /Logfile= /FI
/FI オプションは、第 1 サイトをアクティブ化することを指定しますが、dxact.exe は常にアクティブ化したいサイトから実行する必要があります。DataExchange ではリモートからのアクティブ化はできません。dxact.exe のオプションの一覧については、
dxact を参照してください。
アクティブ化の基礎についての説明が終わりましたので、次は非アクティブ化と再アクティブ化について説明します。
非アクティブ化
非アクティブ化は、アクティブ化されたデータベースをレプリケーション ネットワークで無効にすることです。
DataExchange のユーティリティとサービスの使用で説明されているように、非アクティブ化には dxdeact ユーティリティを使用します。
データベースを第 1 サイトで非アクティブにすると、PSQL Control Center は第 1 サイトのデータベースをデザイン テンプレートとして表示します。これは、このデータベースがレプリケーション ネットワーク用のデータベースのデザインに使用されたためです。第 1 サイトが非アクティブ化されると、レプリケーション ノード アイコンに T という文字が表示されます。
パートナー サイトが非アクティブ化されると、PSQL Control Center ではそのサイトのデータベース用のレプリケーション ノード アイコンにアクティブ化を示す A という文字は表示されなくなります。
レプリケーションが実行されるまでその他のサイトは非アクティブ化されたサイトを検出しません。したがって、非アクティブ化したサイトに対する処理が失敗します。これは正常な動作で、dre.log ファイルに次のようなエラーメッセージが生成されます。
E 019f 0301-15:46:25 パートナーサイト Partner_Site_2 (サイト番号:00LFLU) はレプリケーション ネットワークから削除されました-ほかのサイトとレプリケートすることはできません。
レプリケーションが失敗すると、レプリケーション ネットワーク上のすべてのサイトが非アクティブ化したサイトを検出できるので、以降のレプリケーションでこのエラーは発生しません。
►dxdeact.exe を使用して非アクティブ化するには
1 非アクティブ化したいサイトのマシンでコマンド プロンプト ウィンドウを開き、dxdeact を起動します。
2 コマンド プロンプトで、次のようにコマンドを入力します。
dxdeact demodata
この例では、dxdeact ユーティリティを使用して demodata データベースを非アクティブ化します。dxdeact からのメッセージはデフォルトで dxdeact.log ファイルに書き込まれ、画面には表示されません。dxdeact の実行中に画面上にメッセージを表示させるには、前に dxact.exe で行ったように /LOGFILE=オプションを使用します。すべての DataExchange ユーティリティで、ログの出力を制御する /LOGFILE= オプションが使用できることを覚えておくと便利です。dxdeact.exe のオプションの一覧については、
dxdeact を参照してください。
再アクティブ化
再アクティブ化は、非アクティブ化されたサイトをレプリケーション用に再度有効にすることです。データベースは再アクティブ化される前に非アクティブ化されている必要があります。再アクティブ化は、アクティブ化のときと同じ方法で dxact ユーティリティを使用するという点で、基本的にアクティブ化と同じです。
第 1 サイトを非アクティブ化した場合、第 1 サイトを再アクティブ化したら手動でレプリケーションを実行する必要があります。第 1 サイトを再アクティブ化したら、各パートナー サイトから第 1 サイトに対してレプリケーション セッションを手動で開始する必要があります。このレプリケーション セッションにより、すべての利用可能なサイトが必ず[レプリケーションの開始]ダイアログに表示されるようになります。
メモ: パートナー サイトを非アクティブ化して再アクティブ化した場合には、レプリケーション セッションを手動で開始する必要はありません。これは、第 1 サイトにのみ適用されます。
第 1 サイトを非アクティブ化した場合、第 1 サイトを再アクティブ化したら手動でレプリケーションを実行する必要があります。第 1 サイトを再アクティブ化したら、各パートナー サイトから第 1 サイトに対してレプリケーション セッションを手動で開始する必要があります。このレプリケーション セッションにより、すべての利用可能なサイトが確実に[レプリケーションの開始]ダイアログへ表示されるようになります。この動作は、パートナー サイトを非アクティブ化して再アクティブ化した場合には不要です。これは、第 1 サイトにのみ適用されます。
アクティブなデータベースに動的テーブルを追加する
DataExchange でデータベースのレプリケーションが設定されたときには存在しなかったテーブルが、アプリケーションによって PSQL データベースに追加されることがあります。DataExchange は、アクティブ化されたデータベースのレプリケートされる一連のテーブルに、これらの新しいテーブルを含めたり、所定の–を除外したりする方法を提供します。テーブルだけがレプリケートされるので、テーブル ファイルのみを含めます。必要があれば任意の種類のファイルを除外することができます。テーブル以外のファイルは除外するしないに関わらずレプリケートされません。
新規テーブルはパターン マッチング アルゴリズムで識別され、glob スタイルのパターンを標準およびディレクトリ式の両方で使用します。アルゴリズムに使用させるファイル パターンを指定します。入力する必要があるのはパターンのみで、これらのデフォルトは空白です。後は DataExchange が自動的に行います。
DataExchange は最初にファイル名を包含するファイルのパターンと比較し、次にファイル名を除外するパターンと比較します。両方の比較をパスしたファイルのみが含められます。たとえば、c:\mydata\*.* を、包含するファイルのパターンとして指定したと仮定します。除外するファイルのパターンとして c:\mydata\*.ddf を指定すると、c:\mydata の拡張子 "ddf" を持つファイル以外全部が包含されます。
ヒント: dxdynpath で使用できる包含および除外パターンの式の詳細については、
式のタイプを参照してください。
テーブルの包含と除外は、データベースを開く API によってテーブルが正常に開かれたときに開始されます。DataExchange は、テーブルがレプリケートされるべきであると認識されたか(つまり、テーブルが今までレプリケーションの対象ではなかったか)どうかを判断します。テーブルが今までレプリケーションの対象ではなく、その名前が除外パターンにのみ一致した場合、DataExchange はそのテーブルに対してレプリケーション動作を一切行いません。今までレプリケーションの対象ではなかったテーブルが除外パターンと一致せず包含パターンと一致した場合、DataExchange はこのテーブルを包含します。テーブルが正常に開いたとき、最初は DataExchange にとって単に新しいテーブルと認識されます。新しいテーブルのデータは即座にはレプリケートされません。
次のレプリケーション処理は(たとえば、スケジュールされたレプリケーションから)、新しいテーブルについてレプリケーションの準備をすることと、それに関するレプリケーション情報をすべてのサイトで同期化することです。2 回目のレプリケーション処理には新しいテーブルが含まれます。つまり、新しいテーブルとの実際のデータのレプリケーションには 2 回のレプリケーション サイクルが必要なので、注意してください。
メモ:動的に作成されたテーブルの包含は、Real-Time Backup レプリケーションのみに適用されます。また、動的に作成されたテーブルは、データベース アプリケーションが実行されているマシン上に存在する必要があります。つまり、テーブルは、データのレプリケート元の場所として働くマシン上に存在する必要があります。
まず始めに
式に不慣れな場合や作業経験が少ない場合は、まず
式のタイプのセクションを読んで、さまざまな種類の式の使用方法について基本的な理解を得られることをお勧めします。
注意: dxdynpath ユーティリティで使用するファイルには、PSQL トランザクション ログで使用するシステム キーが必要であることに注意してください。
包含するファイルのパターン
サンプル データベースの Demodata では、各キャンパスの出席レコードを含むテーブルのセットを毎日自動的に生成します。これは、レプリケーションに含めるべき重要なデータです。dxdynpath を使用して包含パターンを追加し、これらのテーブルもレプリケートされるようにします。テーブル名では、attend<campusid>.mkd, という名前付け規則を使用します。<campusid> は 3 文字のキャンパス コードです。
注意: このトピックの内容は、お使いのアプリケーションがアクティブなデータベースに、動的に新規テーブルを作成する場合にのみ適用されます。この処理は動的に追加されるテーブルへの対処方法としてのみお勧めします。
►新しいテーブルをレプリケーションに含めるには
1 第 1 サイトでコマンド プロンプトを開き、次のコマンドを入力します。
dxdynpath /t=include /pa="dir attend*.mkd" append demodata
2 次のコマンドを入力して、包含パターンを検証してください。
dxdynpath /t=both show demodata
動的テーブルの構成とテスト ユーティリティの名前とバージョンの一覧、および以下のような追加情報を示すメッセージが表示されます。
INCLUDE パターンは "dir attend*.mkd" です
EXCLUDE パターンは "" です
包含する新しいファイルを指定した後でレプリケーションを手動で開始してください。これを行うと、動的テーブルのレプリケーションの準備として必要なレプリケーションの 1 回目のサイクルが完了します。新しいテーブルは、データがレプリケートされるレプリケーションの 2 回目のサイクル(たとえば、スケジュールされたレプリケーション)の準備が整います。
除外するファイルのパターン
これから、サンプル データベースのパターンの式をさらに微調整しましょう。既にすべての attend*.mkd ファイルを包含しましたが、もう 1 つ作成される累積ファイル(attendall.mkd)があります。累積ファイルに含まれる内容はすべて個別のファイルにあるため、実際はこのファイルをレプリケートする必要はありません。したがって、このファイルをパターン マッチングから除外することにします。
►レプリケーションからファイルを除外するには
1 第 1 サイトでコマンド プロンプトを開き、次のコマンドを入力します。
dxdynpath /t=exclude /pa="dir attendall.mkd" append demodata
2 次のコマンドを入力して、除外パターンを検証してください。
dxdynpath /t=both show demodata
動的テーブルの構成とテスト ユーティリティの名前とバージョンの一覧、および以下のような追加情報を示すメッセージが表示されます。
INCLUDE パターンは "dir attend*.mkd" です
EXCLUDE パターンは "dir attendall.mkd" です
これらの簡単な例では、dxdynpath がレプリケートするファイルを判断するためにパターン マッチングをどのように使用するかを示します。dxdynpath の詳細な使用法およびさまざまな種類の式については、
dxdynpathを参照してください。
アクティブ化されたデータベースでテーブル構造を変更する
現在レプリケーション デザインの一部になっているテーブルが構造的に変更されたり、システム キーが更新されたりしたために、これらの変更を他のサイトと同期する必要があるような状況が発生するかもしれません。レプリケーション デザインで捕捉されたこれらの変更が、サイト間で同期され、変更を適所にレプリケートさせることができるかどうか確認する必要があります。
まず始めに
この手順を開始する前に以下の項目を確認することを強くお勧めします。
•レプリケーション スケジュールが現在無効になっていて、ユーザーが誰もシステム上で作業していないことを確認してください。この手順にはデータベースの非アクティブ化が含まれます。非アクティブ化の前にすべてのレプリケーション スケジュールを必ず無効にしてください。
注意: データベースが非アクティブな間はデータベースへの変更は取得されないため、テーブルの変更中はどのデータベース ユーザーまたはアプリケーションもアクティブではないようにすることが重要です。
•各ユーザー テーブルのレコードのシステム キーが、対応するレプリケーション テーブル(PDC という文字列をプレフィックスに持ちます)で明らかになっていることが重要です。これは、レプリケーション ネットワーク内のほかのどのサイトにレコードを送信するべきかを探知するために使用するメカニズムです。正しくないシステムキーによってユーザー テーブルと PDC テーブルの通信が切断されると、レプリケーションが失敗することがあります。詳細については、
PDC レプリケーション テーブルを参照してください。
•第 1 サイトのテーブルで列を追加または削除する場合、パートナー サイトのテーブルにも同じ変更を行うことを忘れないようにしてください。これは、そのテーブルの DDF に両サイトで同じ構造を反映させるためです。
•このマニュアルで説明する手順は、新しくスキーマを変更する前に、レプリケーション ネットワークのすべてのサイトが同期化されているものとします。
この処理を完了させるために必要な高度な手順は以下のとおりです。
PDC テーブルのクローンを作成する
PDC テーブルの空のコピーを使用することは必須ではありませんが、そうすると以下の利点があります。
•新規レコードのみを含むことで PDC テーブルのサイズを削減し、ほかのサイトへの転送時間を短縮することができます。
•dxsynctables は PDC テーブルの既存のレコードを検証する必要がないため、dxsynctables 処理が高速化されます。
►PDC テーブルのクローンを作成するには
1 ユーザー データ内で変更されたテーブルを識別します。通常これは、顧客のプロダクション サイト上にあります。
2 変更されたそれぞれのテーブルのレプリケーション テーブルを見つけます。レプリケーション テーブルは名前に PDC のプレフィックスを持ちます。デフォルトの場所は C:\ProgramData\Actian\PSQL\<データベース名>\DX_<プロジェクト名> です。
3 PSQL BUTIL ユーティリティを使用して PDC テーブルのクローンを作成し、既存のテーブルをクローンで置き換えます。
ヒント: テーブルのクローンを作成する BUTIL ユーティリティの使用法については、PSQL の『Advanced Operations Guide』を参照してください。
第 1 サイトのアクティブ化とテーブルの同期化
1 dxact.exe コマンドを使用して第 1 サイトをアクティブ化します。
dxact /FI <Database_DSN>
たとえば、サンプル データベース Demodata をアクティブ化する場合は、dxact /FI demodata というコマンドになります。
2 変更された各テーブルで、コマンド プロンプトから次のコマンドを実行します。
dxsynctables <テーブル名> <DSN>
メモ:ユーザー テーブルに含まれるレコード数によって、この処理にはいくらかの時間がかかります。テストでは、数百万以上のレコードがある場合、L2 キャッシュを無効にすることにより書き込み時間が短縮され、この処理自体が著しく高速化することを示しています。すべてのテーブルの処理が終わったら L2 を再度有効にしてください。
ファイルをパートナー サイトにコピーしてアクティブ化する
►ファイルをコピーするには
1 最近変更されたユーザー テーブル、および新しく書き込まれた PDC テーブルをレプリケーション ネットワーク上のほかの各サイトの適切なディレクトリにコピーします。既存のテーブルを上書きすることを確認してください。
2 dxact.exe を使用してパートナーサイトをアクティブ化し、/pa[rtneraddress]=<文字列>オプションを使用してレプリケートするサイトを明示します。
たとえば、第 1 サイトのアドレスが SiteA の場合、次のようなコマンドを入力します。
dxact /pa=SiteA <Database_DSN>
レプリケーション セッションの検証
►レプリケーション セッションを検証するには
1 レプリケートした各サイト上で LogFiles ディレクトリを参照します。
このディレクトリは C:\ProgramData\Actian\PSQL\Replication\LogFiles です。
2 dre.log ファイルを開いて、成功またはエラーを示すメッセージを確認します。
3 レプリケーション スケジュールを再度有効にします。
これで、ユーザーがシステムに戻って作業ができるようになりました。