(5年前に作った)Postgres-XC用の多重化GTMシステムが動くVagrant boxを作ったので公開します。
Postgres-XC用の多重化GTMシステムについては例えば"こちら"を参照。
Requirement
Install
# git clone https://github.com/s-hironobu/mgtm.git
次にAtlasからVagrant boxをダウンロード+登録します。
# cd mgtm # vagrant box add s-hironobu/centos67_32_mgtm4pgxc092
実行
[1] 起動
5つのVMを起動します: mgtm1, mgtm2, mgtm3, node1, node2
# vagrant up
ssh関連で起動に失敗する場合があります。そのときは起動がうまくいかないVMをvagrant destroyで一旦削除し、改めてvagrant upで作成するとうまくいくことが多いです。
[2] 5つのターミナルを作成
5つのターミナルを、以下の図のように生成します。
各ターミナルに vagrant sshでアクセスします。例えばmgtm1には次のようにしてアクセスします。
# vagrant ssh mgtm1 [vagrant@mgtm1 ~]$
[3] GTM起動
mgtm1, mgtm2, mgtm3で mgtm-startコマンドを実行します。
[vagrant@mgtm1 ~]$ mgtm-start
[vagrant@mgtm2 ~]$ mgtm-start
[vagrant@mgtm3 ~]$ mgtm-start
すると、mgtm1に以下のようなメッセージが表示されます。
[vagrant@mgtm1 ~]$ mgtm-start I'm running... I'm LEADER!!!!
[4] XC-nodeの起動
node1とnode2でnode-startコマンドを実行します。
[vagrant@node1 ~]$ node-start I'm ready!!!
[vagrant@node2 ~]$ node-start I'm ready!!!
両方のターミナルに"I'm ready!!!"というメッセージがでれば、それがPostgres-XC準備完了の合図です。
[5] pgbench
node1かnode2でpgbenchを実行します。
[vagrant@node2 ~]$ pgbench
SELECT, UPDATE, INSERT, DELETEなど簡単なSQLも実行できます。(ただし、最初に実行する前にvacuumを実行してください。)
[vagrant@node2 ~]$ psql -c "vacuum" VACUUM [vagrant@node1 ~]$ psql psql (8.4.3) Type "help" for help. pgbench=#
XC version 0.9.2は超基本的なSQLしかサポートしていません。実行できないSQLの場合はシステムがクラッシュします。
GRMクラッシュのシミュレーション
(1) pgbenchを-Tオプションで起動
適当な時間、pgbenchを実行し続けます。
[vagrant@node2 ~]$ pgbench -T 30
GTMとXCの終了
GTMは^Cで終了させます。
[vagrant@mgtm2 ~]$ mgtm-start I'm running... I'm LEADER!!!! ^C
[vagrant@mgtm3 ~]$ mgtm-start I'm running... ^C
node1とnode2でnode-stopコマンドを実行し、関連プロセスを終了します。
[vagrant@node1 ~]$ node-stop
[vagrant@node2 ~]$ node-stop
再実行
もう一度試したい場合は、[3] GTM起動に戻ります。
ベンチマーク
詳しい説明抜きでベンチマーク結果を示します。
"mgtm x 3"は3台のgtm, "mgtm x 2"は2台のgtmが稼働しているときの結果。gtmはXCオリジナルgtmによる結果です。
Memo
簡単にmulti-master open source database clusterの状況をしめします。
- 2015年、Postgres-XCはPostgres-X2に改名しました。相変わらずwrite-scalableが目標です。
- 2014年、XCをベースにしたPostgres-XLがリリースされました。Postgres-XLは大規模なデータに対する効率的なOLAPやOLTPを目指しています。
- 一方、Galera Cluster (MariaDB やMySQL)が技術的にも商業的にも成功しています。GaleraはPostgres-Rとほぼ同様の機構(XC/XLとは全く異なる)のmulti-master database clusterです。