>> はじめに

今月は、SharePlexが誇るレプリケーションの高速化アーキテクチャについての第3弾です。前回は、ターゲット側のPostの処理に負荷がかかって、パフォーマンスの問題があった場合に、Postプロセスを分けて処理する方法をご紹介しました。

しかし、Postプロセスを分けてもパフォーマンス向上が更に必要であったり、Post以外の処理のボトルネックがあった場合には、前回の方法では対応することができません。そのようなケースでは、sp_copを親プロセスとしたSharePlexの処理全体を多重化する方法があります。

>> 複数のSharePlexインスタンスの実行に

Oracleデータベースがマルチ・インスタンスで稼働するのと同じように、SharePlexも1つのマシン上で複数のSharePlexインスタンスを稼働させることが可能です。

詳細については、管理者ガイドの中で「複数のSharePlexインスタンスの実行」という形で、設定方法についての記載があります。

1つのOracleインスタンスに対して、複数のSharePlexインスタンスを使用する場合には、テーブル単位で定義を分けて、全体の処理性能の向上を期待することが可能です。

複数のSharePlexインスタンスを同一マシン上で稼働させるには、ソースとターゲット間の通信に使用するポートを変更する必要があり、その他キューのディレクトリ等も変更する必要があるため、具体的にはSharePlex用の"variable data directory location" (以下、日本語訳の"変数データディレクトリ") を複数用意する必要があることになります。

>> 複数のSharePlexインスタンスの導入方法について

複数回インストールを実行する方法

もっとも簡単な導入方法は、SharePlex用の管理者ユーザ名を作るところから、完全に複数に分けるように設定を行い、複数回インストール実行し、ora_setupによるSharePlex用のOracleユーザ作成も異なるユーザ名を使用することです。この場合には、SharePlexのバイナリ自体が個別のディレクトリに導入され、製品のバージョンアップやパッチ適用時等には、それぞれのユーザ名にて管理する必要があります。

一度インストールしたバイナリを使用し、複数必要なディレクトリだけコピーする方法

こちらは、マニュアル上にも記載のある、インストールは1回だけ実行し、複数必要なSharePlex用の変数データディレクトリは、コピーによって作成するというものです。やや手順が複雑な事から、本講座ではこの手順についてご紹介してみたいと思います。

>> 複数のSharePlexインスタンスをコピーして構築する

前回までの講座により、2つのPostプロセスを使用する方法で、構築されていると思いますので、その状態から複数のSharePlexインスタンス (sp_cop) により、分割して対応する方法を確認していきたいと思います。

まずは、現在の設定を解除する

それには、定義ファイルをdeactivateする必要があります。


sp_ctrl (rhel5sposrc1:2100)> deactivate config ORA_config

本番環境等では、キューの状態等を確認してから行うべきですが、テスト環境のため割愛してあります。次に、定義ファイルを編集します。


sp_ctrl (rhel5sposrc1:2100)> edit config ORA_config

前回の講座で、named post queueを使用した定義をしていますが、今回その代わりに別のSharePlexインスタンスを構築して、同じことをやりたいと思いますので、定義から外します。

編集前


datasource:o.src1 #source tables target tables routing map splex.demo_src splex.demo_dest rhel5spotrg1@o.trg1 splex.demo_dest splex.demo_src rhel5spotrg1:test@o.trg1

編集後


datasource:o.src1 #source tables target tables routing map splex.demo_src splex.demo_dest rhel5spotrg1@o.trg1

最後に、SharePlexのインスタンスをコピーで作成するには、SharePlexが稼働していない状態である必要があるため、ソースおよびターゲットともに、SharePlexインスタンスを落とした状態にします。

ソース側でシャットダウンを実行


sp_ctrl (rhel5sposrc1:2100)> shutdown

ターゲット側でシャットダウンを実行


sp_ctrl (rhel5spotrg1:2100)> shutdown

もう一度確認したい、必要な条件

ここで、今一度UNIX/Linuxシステム上で複数のsp_copインスタンスを実行するのに必要なことを確認しておきます。

  • sp_copプロセス毎に、一意なポート番号と変数データディレクトリ
  • 変数データディレクトリごとの、Oracleユーザアカウント
  • SP_SYS_VARDIR環境変数と-uオプションを使用して、個別にsp_copインスタンスを起動

既に設定されている内容と、追加で設定が必要な内容がありますので、次の内容を想定して手順を確認していきたいと思います。

  • ポート番号
    • 旧: 2100
    • 新: 2200
  • 変数データディレクトリ
    • 旧: /home/splex/vardir
    • 新: /home/splex/vardir2200
  • SP_SYS_VARDIR環境変数
    • 旧: SP_SYS_VARDIR=/home/splex/vardir
    • 新: SP_SYS_VARDIR=/home/splex/vardir2200
  • sp_cop起動方法
    • 旧: $ sp_cop -u 2100
    • 新: $ sp_cop -u 2200

変数データディレクトリを作成するには

最初に既にインストールされたインスタンスの必要ファイルを、tarコマンドで退避しておきます。


[splex@rhel5sposrc1 ~]$ cd /home/splex/vardir [splex@rhel5sposrc1 vardir]$ tar cvf ../splex.tar . ./ ./dump/ ~ 中略 ~ ./state/o.src1-iot.b

次に、2つ目のインスタンス用に作成したディレクトリで、退避されたデータを展開します。


[splex@rhel5sposrc1 ~]$ mkdir /home/splex/vardir2200 [splex@rhel5sposrc1 ~]$ cd /home/splex/vardir2200 [splex@rhel5sposrc1 vardir2200]$ tar xvf /home/splex/splex.tar ./ ./dump/ ~ 中略 ~ ./state/o.src1-iot.b

/home/splex/vardir2200として展開されたデータの中に、ポート指定が行われているparamdbというファイルが、/home/splex/vardir2200/data以下にあるので、このファイルを編集して、ポート番号を変更します。

ファイル内のエントリ、変更前


SP_COP_TPORT 2100 SP_COP_UPORT 2100

ファイル内のエントリ、変更前


SP_COP_TPORT 2200 SP_COP_UPORT 2200

設定をアクティブにしたことがある場合

作成した変数ディレクトリごとに、古いキューが含まれている場合があるため、clean_vardir.shを実行し、新しい状態に戻します。スクリプトの後の数字は、Oracleのバージョンを意味しています。


[splex@rhel5sposrc1 ~]$ cd $SP_BIN [splex@rhel5sposrc1 bin]$ ./clean_vardir.sh 11 Cleaning /home/splex/vardir subdirectories [splex@rhel5sposrc1 bin]$ export SP_SYS_VARDIR=$HOME/vardir2200 [splex@rhel5sposrc1 bin]$ ./clean_vardir.sh 11 Cleaning /home/splex/vardir2200 subdirectories

また、各変数データディレクトリのrimディレクトリにshstinfo.ipcおよびshmaddr.logファイルがある場合にも、削除します。ちなみに、この2つのファイルは、各変数データディレクトリに対して、sp_copを起動したことがない場合には、ファイル自体存在しません。


[splex@rhel5sposrc1 bin]$ cd /home/splex/vardir/rim [splex@rhel5sposrc1 rim]$ ls shmaddr.loc shstinfo.ipc [splex@rhel5sposrc1 rim]$ rm ./shmaddr.loc [splex@rhel5sposrc1 rim]$ rm ./shstinfo.ipc [splex@rhel5sposrc1 rim]$ cd /home/splex/vardir2200/rim [splex@rhel5sposrc1 rim]$ ls shmaddr.loc shstinfo.ipc [splex@rhel5sposrc1 rim]$ rm ./shmaddr.loc [splex@rhel5sposrc1 rim]$ rm ./shstinfo.ipc

 

>> はじめに

手順が多いため、本内容は2回に分けてお届けしたいと思います。次回は、変数データディレクトリを分けた後で、SharePlex用のOracleアカウント追加と、起動手順、テストを行う方法等をご紹介する予定です。