Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Remote » チュートリアル:HTTP メッセージシステムを使用したレプリケーションシステムの設定

 

レッスン 4:統合データベースとリモートデータベースにデータを追加しレプリケートする

このレッスンでは、統合データベースとリモートデータベースにデータを追加し、SQL Remote を実行して変更をレプリケートし、両方のデータベースでデータが一致していることを確認します。

 ♦ 統合データベースにデータを追加する
  1. 現在、統合データベース (cons) に接続されていない場合は、次のコマンドを実行します。

    dbisql -c "SERVER=cons;DBN=cons;UID=DBA;PWD=sql"
  2. 統合データベース (cons) で次の文を実行し、追加サンプルデータを従業員テーブルに追加します。

    INSERT INTO employees (first_name, last_name) VALUES ('Javier', 'Spoor');
    COMMIT;
  3. Interactive SQL との接続を切断します。

 ♦ データをリモートデータベースに追加する
  1. 現在、リモートデータベース (rem) に接続されていない場合は、次のコマンドを実行します。

    dbisql -c "SERVER=rem;DBN=rem;UID=DBA;PWD=sql"
  2. リモートデータベース (rem) で次の文を実行し、追加サンプルデータを従業員テーブルに追加します。

    INSERT INTO employees (first_name, last_name) VALUES ('Nelson', 'Kreitzer');
    COMMIT;
  3. Interactive SQL との接続を切断します。

 ♦ 統合データベースとリモートデータベース間で変更をレプリケートする
  1. 統合データベース (cons) で、Message Agent を実行します。

    dbremote -c "SERVER=cons;DBN=cons;UID=DBA;PWD=sql" -qc -v -o c:\tutorial\cons1.txt

    これにより、統合データベース (cons) のトランザクションログがスキャンされ、FILE メッセージシステムを使用してリモートデータベース (rem) のメッセージが生成されます。デバッグメッセージシステムパラメーターは、統合データベースの FILE メッセージシステム用に設定されているため、c:\tutorial\cons1.txt ファイルを見て、メッセージがc:\tutorial\messages\rem ディレクトリに書き込まれていることを示すデバッグメッセージがあることを確認できます。次に例を示します。

    I. 2011-03-25 11:03:31. Processing transactions from active transaction log
    I. 2011-03-25 11:03:31. Sending message to "rem" (0-0000000000-0000550994-0)
    I. 2011-03-25 11:03:31. sopen "c:\tutorial\messages\rem\cons.0"
    I. 2011-03-25 11:03:31. write " c:\tutorial\messages\rem\cons.0"
    I. 2011-03-25 11:03:31. close " c:\tutorial\messages\rem\cons.0"
  2. リモートデータベース (rem) で、Message Agent を実行します。

    dbremote -c "SERVER=rem;DBN=rem;UID=DBA;PWD=sql" -qc -v -o c:\tutorial\rem.txt

    このコマンドは、HTTP メッセージシステムを使用して、統合データベースで生成されたばかりのメッセージを受信して適用します。次に、トランザクションログをスキャンし、メッセージをリモートデータベースに追加された新しいローとともに統合データベースに送り返します。デバッグメッセージシステムパラメーターは、リモートデータベースの HTTP メッセージシステム用に設定されているため、c:\tutorial\rem.txt ファイルを見て、HTTP メッセージシステムが使用されていることを示すデバッグメッセージがあることを確認できます。次に例を示します。

    I. 2011-03-25 11:10:02. Sending message to "cons" (0-0000000000-0000557411-0)
    I. 2011-03-25 11:10:02. HTTPWriteMessage "rem.0"
    I. 2011-03-25 11:10:02. HTTPWriteMessage: success -- filename  "rem.0"
    I. 2011-03-25 11:10:02. HTTPDisconnect
  3. 統合データベース (cons) で、Message Agent を実行します。

    dbremote -c "SERVER=cons;DBN=cons;UID=DBA;PWD=sql" -qc -v -o c:\tutorial\cons2.txt

    このコマンドは、FILE ベースのメッセージシステムを使用してリモートデータベースによって生成されたばかりのメッセージを受信して適用します。

 ♦ 統合データベースとリモートデータベースでデータを確認する
  1. 現在、統合データベース (cons) に接続されていない場合は、次のコマンドを実行します。

    dbisql -c "SERVER=cons;DBN=cons;UID=DBA;PWD=sql"
  2. 統合データベースに 4 ローのデータがすべて含まれていることを確認するには、次の文を実行して従業員テーブルの内容を表示します。

     SELECT * FROM employees;

    クエリは、従業員テーブルから次のデータを返します。ただし、hire_date カラムには、次のテーブルにある値ではなく、そのローを挿入した時間が記載されます。

    employee_id first_name last_name hire_date
    1 Kelly Meloy 2011-03-25 08:27:56.310
    2 Melisa Boysen 2011-03-25 08:27:56.310
    3 Javier Spoor 2011-03-25 08:30:26.110
    102000001 Nelson Kreitzer 2011-03-25 08:31:51.970
  3. Interactive SQL との接続を切断します。

  4. 現在、リモートデータベース (rem) に接続されていない場合は、次のコマンドを実行します。

    dbisql -c "SERVER=rem;DBN=rem;UID=DBA;PWD=sql"

    次の文を実行して従業員テーブルの内容を表示することにより、リモートデータベース (rem) に 4 ローのデータがすべて含まれていることを確認します。

    SELECT * FROM employees;

    クエリは、従業員テーブルから次のデータを返します。ただし、hire_date カラムには、次のテーブルにある値ではなく、そのローを挿入した時間が記載されます。

    employee_id first_name last_name hire_date
    1 Kelly Meloy 2011-03-25 08:27:56.310
    2 Melisa Boysen 2011-03-25 08:27:56.310
    3 Javier Spoor 2011-03-25 08:30:26.110
    102000001 Nelson Kreitzer 2011-03-25 08:31:51.970
  5. Interactive SQL との接続を切断します。

  6. レッスン 5:クリーンアップに進みます。