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 メッセージシステムを使用したレプリケーションシステムの設定

 

レッスン 2:メッセージサーバーの作成

統合データベースをメッセージサーバーとして使用することは可能ですが、このチュートリアルでは、別のデータベースサーバーを使用してメッセージサーバーを実行します。こうすることにより、この 2 つのデータベースサーバー間でメッセージを処理するために実行される作業の量が分散されます。また、統合データベースへの HTTP アクセスを開放していないため、セキュリティのレベルが上がります。

 ♦ メッセージサーバーを作成する
  1. c:\tutorial\msgsrv ディレクトリから次のコマンドを実行して、メッセージサーバーデータベース (msgsrv) を作成します。

    dbinit msgsrv.db
  2. メッセージサーバーを起動します。

    dbeng12 -n msgsrv c:\tutorial\msgsrv\msgsrv.db -xs http(port=8033)

    これは、リモートデータベースからの HTTP 要求を受信し、c:\tutorial\messages ディレクトリに存在するメッセージファイルにアクセスするデータベースサーバーであるため、コマンドラインには -xs http(8033) が必要です。データベースサーバーが起動した時点では Web サービスは定義されていませんが、このレッスンで作成されます。その上、パーソナルデータベースサーバーだけが起動しているため、このコンピューター上の SQL Remote プロセスだけが HTTP を使用してメッセージサーバーと通信できます。生産環境では通常、他のコンピューター上の SQL Remote プロセスも Web サービスにアクセスできるよう、ネットワークサーバーを使用するはずです。 -xs の使用の詳細については、-xs dbeng12/dbsrv12 サーバーオプションを参照してください。

  3. 別のメッセージサーバーを作成する場合、統合データベースのスキーマの多くをそのメッセージサーバーにコピーする必要があります。とりわけ定義されたリモートユーザーとアドレスについての情報などのコピーが必要です。これは手動で行うことができますが、このタスクを行うもっとも簡単な方法は、dbunload ユーティリティを使用して、統合データベースと同じスキーマで新しいデータベースを作成することです。

    dbunload -n -xx -ac "SERVER=msgsrv;DBN=msgsrv;UID=DBA;PWD=sql" -c "SERVER=cons;DBN=cons;UID=DBA;PWD=sql"

    dbunload コマンドで使用されるオプションは、次のことを行います。

    • -n   スキーマだけがアンロードされ、統合データベースのデータはまったくメッセージサーバーに追加されないことを示します。

    • -xx   外部アンロードと再ロードを実行します。これは、両方の関連するデータベースがすでに稼働している場合に必要です。

    • -ac "SERVER=msgsrv;DBN=msgsrv;UID=DBA;PWD=sql"   アンロードの送信先接続を定義します。このレッスンでは、メッセージサーバーです。

    • -c "SERVER=cons;DBN=cons;UID=DBA;PWD=sql"   アンロードの送信元接続を定義します。このレッスンでは、統合データベースです。

  4. Interactive SQL を使用して、DBA 権限を持つユーザーとしてメッセージサーバーデータベース (msgsrv) に接続します。

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

    レッスン 1 では、パブリッシャー (cons) とリモートユーザー (rem) のパスワードを作成しませんでした。そのため、これらのユーザーはいずれも統合データベースにはアクセスできません。メッセージサーバーではこれらのユーザーにパスワードが必要です。なぜなら、リモートユーザーからの HTTP 要求では、リモートデータベースのパブリッシャーおよびメッセージサーバーでの認証用に提供されたパスワードが使用されるためです。メッセージサーバーデータベース (msgsrv) で次の文を実行して、パブリッシャーとリモートユーザーのパスワードを定義します。

    GRANT CONNECT TO cons IDENTIFIED BY cons;
    GRANT CONNECT TO rem IDENTIFIED BY rem;
  5. データベースが最初に初期化されたとき、リモートユーザーからの HTTP 要求を受け付けるのに必要な Web サービスはどれも定義されておらず、メッセージファイルが格納されているディレクトリにデータベースサーバーがアクセスするのを許可する定義はありません。これらのオブジェクトの作成は、誰がすべてのオブジェクトを所有するのかを指定するオプションのパラメーターを持つ sr_add_message_server ストアドプロシージャーの使用により自動化されています。メッセージサーバーデータベース (msgsrv) に次の文を実行して、メッセージサーバーに必要なすべてのオブジェクトを定義し、すべてのオブジェクトが cons ユーザーによって所有されていることを指定します。

    GRANT GROUP TO cons;
    SET REMOTE http OPTION cons.root_directory='c:\\tutorial\\messages';
    CALL sr_add_message_server( 'cons' );
    COMMIT;

    詳細については、sr_add_message_server システムプロシージャーを参照してください。

  6. Interactive SQL との接続を切断します。

  7. レッスン 3:リモートデータベースの作成に進みます。