|
Postgres-XC ver 0.9.2 クイックスタート2010年12月現在、最新版はver0.9.3だが、ここではver0.9.2のインストール方法を示す。 gtmのJava版、gtmの多重化版も作成、 さらに 多重化gtmが動くVagrant boxを作成して公開: [Vagrant box| GitHub] したので、興味があればどうぞ。 Postgres-XCは同期マルチマスタ型のPostgreSQLクラスタシステムである。
PGClusterと競合するが、
Postgres-XCの目標は"Write-scalable"の1点で、
現時点でもデータノードが10台程度までは性能がリニアに向上しているとのベンチマークが出されている。
Potgres-XCのダウンロード & インストールダウンロード
Postgres-XCのサイトからダウンロードする。
pgxc_v0_9_2.tar.gz PG-XC_Architecture.pdf PG-XC_pgbench_Tutorial_v0_9_2.pdf PG-XC_DBT1_Tutorial_v0_9_2.pdf PG-XC_InstallManual_v0_9_2.pdf PG-XC_ReferenceManual_v0_9_2.pdf システムドキュメント"PG-XC_pgbench_Tutorial_v0_9_2.pdf"では、サーバ4台でpgbenchを実行するシステム構成が解説されているので、 それに準拠したインストールを行う。 もしも仮想マシンなど用いずに1台だけで雰囲気を確かめたい場合はこちら。 まず、3台の仮想サーバを立ち上げ、/etc/hostsに以下のホスト名を設定する。
各サーバは、いろいろなポートにアクセスされるので適宜アクセス制御すること。 /sbin/iptables -A INPUT -p tcp -s XXX.XXX.XXX.XXX -j ACCEPT /sbin/iptables -A OUTPUT -p tcp -s XXX.XXX.XXX.XXX -j ACCEPT .... インストール3つの仮想サーバ(gtm,coordinator1, coordinator2)で同様の手順でインストールする。 今回は/usr/local/pgxc以下にインストールする。pgbenchもインストールする。 $ tar xvfz pgxc_v0_9_2.tar.gz $ cd pgxc $ export CFLAGS='-O2' $ ./configure --prefix=/usr/local/pgxc $ make && make install $ cd contrib/pgbench $ make && make install 仮想サーバgtmでの準備簡単なところからはじめる。gtmの準備。 ディレクトリを作成する。 cd ~/ mkdir -p co2dn2/gtm mkdir -p co2dn2/gtm/log coordinator1での準備coordinator1には、coordinator、datanode、およびgtm_proxyを設定する。
gtm_proxyの準備gtm_proxy用のディレクトリを作成する。 coordinator1> mkdir /home/postgres/co2dn2/gtm_proxy coordinator1> mkdir /home/postgres/co2dn2/gtm_proxy/log coordinatorの準備coordinatorのデータクラスタを初期化する。 coordinator1> /usr/local/pgxc/bin/initdb -D /home/postgres/co2dn2/coord "~/co2dn2/coord/postgresql.conf"を以下のように編集する。
"~/co2dn2/coord/pg_hba.conf"に以下の行を追加する。"xxx.xxx.xxx.0"は適宜、自身の仮想サーバ間のネット輪ー賣アドレスを記述する。
最後、”"~/co2dn2/coord/pgxc.conf"というファイルを準備する。これはpgxc_ddlというツールのためのファイルである。
datanodeの準備datanodeのデータクラスタを初期化する。 coordinator1> /usr/local/pgxc/bin/initdb -D /home/postgres/co2dn2/datanode 次にdatanodeの設定を行う。"~/co2dn2/datanode/postgresql.conf"を以下のように編集する。
"~/co2dn2/datanode/pg_hba.conf"に以下の行を追加する。"xxx.xxx.xxx.0"は適宜、自身の仮想サーバ間のネット輪ー賣アドレスを記述する。
coordinator2での準備coordinator2でもcoordinator1と同様の設定を行う。
coordinatorとdatanodeを準備する。 $ /usr/local/pgxc/bin/initdb -D /home/postgres/co2dn2/coord $ /usr/local/pgxc/bin/initdb -D /home/postgres/co2dn2/datanode
coordinatorの設定を行う。
システムの初期化
ver0.9.2では、
coordinatorが1台のときにデータベースやテーブルを作成して、
そのcoordinatorのデータを"手動"で複数のcoordinatorで共有できるようにする。
gtmの起動はじめにgtmを起動する。gtmへのアクセスポート番号は"-p"オプションで指定する。 gtm> /usr/local/pgxc/bin/gtm -x 1000 -D /home/postgres/co2dn2/gtm -l /home/postgres/co2dn2/gtm/log/gtmlog -p 16680 & gtm_proxyの起動coordinator1で以下のコマンドを実行する。 coordinator1> /usr/local/pgxc/bin/gtm_proxy -D /home/postgres/co2dn2/gtm_proxy -h localhost -p 6666 -s gtm -t 16680 coordinator2でも同じコマンドを実行する。 coordinator2> /usr/local/pgxc/bin/gtm_proxy -D /home/postgres/co2dn2/gtm_proxy -h localhost -p 6666 -s gtm -t 16680 datanodeの起動次に2つのdatanodeを起動する。 coordinator1で以下のコマンドを実行する。 coordinator1> /usr/local/pgxc/bin/postgres -X -i -p 15432 -D /home/postgres/co2dn2/datanode/ & coordinator2でも同じコマンドを実行する。 coordinator2> /usr/local/pgxc/bin/postgres -X -i -p 15432 -D /home/postgres/co2dn2/datanode/ & coordinatorの起動最後にcoordinatorを起動する。 coordinator1で以下のコマンドを実行する。 coordinator1> /usr/local/pgxc/bin/postgres -C -i -p 5432 -D /home/postgres/co2dn2/coord & coordinator2でも同じコマンドを実行する。 coordinator2> /usr/local/pgxc/bin/postgres -C -i -p 5432 -D /home/postgres/co2dn2/coord & pgbenchのインストールここで、実験用にpgbenchをインストールする。 これからクライアントがアクセスするのはcoordinatorである。 まず、データベースpgbenchを作成する。 coordinator1のcoordinatorにアクセスして"CREATE DATABASE"を実行すると、 coordinator1のdatanodeとcoordinator2のdatanodeにデータベースが作成される。 coordinator1> /usr/local/pgxc/bin/psql template1 -c "CREATE DATABASE pgbench" 次に、pgbenchの各種テーブルをインストールするため、"pgbench -i"を実行する。 coordinator1> /usr/local/pgxc/bin/pgbench -i pgbench 実は、すでにPotgres-XCは稼働している。ここでpgbenchを実行すれば結果を返してくる。 coordinator1> pgbench pgbench しかし、クライアント側からみるとcoordinatorが1台しかなく、マルチマスタではない。 マルチマスタ化いよいよPostgres-XCをマルチマスタ化する。 ver0.9.2からは便利なツールpgxc_ddlが用意されている。 coordinator1で以下のスクリプトを実行する。sshやscpが何度も実行されるので、その都度パスワードを入力する。 coordinator1> export PATH=/usr/local/pgxc/bin:${PATH} coordinator1> pgxc_ddl -D /home/postgres/co2dn2/coord -n 1 スクリプトが終了すると、通常はcoordinator1とcoordinator2のそれぞれのcoordinatorは再起動しているはずだが、 たまにうまくいかない場合がある。そのときはcoordnatorを手動で起動する。 coordinator1> postgres -C -i -p 5432 -D /home/postgres/co2dn2/coord & coordinator2> postgres -C -i -p 5432 -D /home/postgres/co2dn2/coord & クライアントからのアクセスこれでcoordinatorが2台体制になったので、coordinator1とcoordinator2のいずれのcoordinatorにもアクセスできる。 coordinator1> pgbench pgbench -h coordinator2 coordinator2> pgbench pgbench など。 停止システムを停止するには、以下の手順で行う。 coordinator1> /usr/local/pgxc/bin/pg_ctl -D /home/postgres/co2dn2/coord stop coordinator2> /usr/local/pgxc/bin/pg_ctl -D /home/postgres/co2dn2/coord stop coordinator1> /usr/local/pgxc/bin/pg_ctl -D /home/postgres/co2dn2/datanode stop coordinator2> /usr/local/pgxc/bin/pg_ctl -D /home/postgres/co2dn2/datanode stop gtm> /usr/local/pgxc/bin/gtm_ctl stop -S gtm -D /home/postgres/co2dn2/gtm
Last-modified: 2012-10-28
|