>> はじめに |
今月は、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する必要があります。
|
本番環境等では、キューの状態等を確認してから行うべきですが、テスト環境のため割愛してあります。次に、定義ファイルを編集します。
|
前回の講座で、named post queueを使用した定義をしていますが、今回その代わりに別のSharePlexインスタンスを構築して、同じことをやりたいと思いますので、定義から外します。
編集前
|
編集後
|
最後に、SharePlexのインスタンスをコピーで作成するには、SharePlexが稼働していない状態である必要があるため、ソースおよびターゲットともに、SharePlexインスタンスを落とした状態にします。
ソース側でシャットダウンを実行
|
ターゲット側でシャットダウンを実行
|
■もう一度確認したい、必要な条件
ここで、今一度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コマンドで退避しておきます。
|
次に、2つ目のインスタンス用に作成したディレクトリで、退避されたデータを展開します。
|
/home/splex/vardir2200として展開されたデータの中に、ポート指定が行われているparamdbというファイルが、/home/splex/vardir2200/data以下にあるので、このファイルを編集して、ポート番号を変更します。
ファイル内のエントリ、変更前
|
ファイル内のエントリ、変更前
|
■設定をアクティブにしたことがある場合
作成した変数ディレクトリごとに、古いキューが含まれている場合があるため、clean_vardir.shを実行し、新しい状態に戻します。スクリプトの後の数字は、Oracleのバージョンを意味しています。
|
また、各変数データディレクトリのrimディレクトリにshstinfo.ipcおよびshmaddr.logファイルがある場合にも、削除します。ちなみに、この2つのファイルは、各変数データディレクトリに対して、sp_copを起動したことがない場合には、ファイル自体存在しません。
|
>> はじめに |
手順が多いため、本内容は2回に分けてお届けしたいと思います。次回は、変数データディレクトリを分けた後で、SharePlex用のOracleアカウント追加と、起動手順、テストを行う方法等をご紹介する予定です。