TOPサーバ構築・運用> PostgresForestにアクセスしてみる
PostgresForest
予習!復習!PostgresForest!

第3回:PostgresForestを動かしてみよう!

著者:NTTデータ  長妻 賢   2007/8/17
前のページ  1  2  3   4  次のページ
PostgresForestにアクセスしてみる

   PostgresForestに同梱されているアプリケーションに「Jpsql」があります。これはPostgresForestのJDBCドライバを使った、コマンドライン上でのSQL発行アプリケーションです。PostgreSQLに同梱されているpsqlの、PostgresForest版だと考えればわかりやすいでしょう。ただしPostgreSQLのpsqlと異なり、DDLの発行はできません。

Jpsqlを使ってSQLを発行してみる

   それでは早速Jpsqlを使ってSQLを発行してみましょう。まずはJpsqlを使ってPostgresForestへ接続します。なお、コマンドの詳細なオプションなどは、マニュアルをご覧ください。

postgres@localhost ~]$ /home/postgres/forestbin/402_1/bin/Jpsql.sh -h localhost -p 5432 -g gsc -d sample -U postgres -W postgres
JAVA:
    /usr/local/java/1.5.0_12/bin/java
(中略)
Connected to PostgreSQL 8.1.9

[1]

   上記のようなプロンプトが表示されれば成功です。

   この状態で先ほど表示しておいたターミナルウィンドウを見ると、定期的にSQLが発行されたことを示すログが表示されるはずです。これは、JDBCドライバからGSCに対するアクセスです。

   続いて実際にSQLを発行し、動きをみてみましょう。以下のSQLを1つずつ入力してみてください。

INSERT INTO customer VALUES (0, 'AAストア', '東京都江東区豊洲123-456'); ← 1
SELECT * FROM customer;← 2
INSERT INTO salesorder VALUES ( 0, 0, '2007-07-20' );← 3
SELECT * FROM salesorder;← 4

   1と2はレプリケーションテーブルへのSQL、3と4はパーティションテーブルへのSQLです。

   1を実行すると、両方のPostgreSQLサーバのターミナルウィンドウに、SQLが届いたログがみえているはずです。

   2を実行した場合は片方のサーバのみに参照SQLが振り分けられる負荷分散の様子が確認できるはずです。また、2のSQLを何度も発行すると、そのたびに実行するPostgreSQLサーバが交互に入れ変わっていることもわかります。

   3と4を実行した場合は、テーブル名がパーティション名に書き変わっている様子をみることができます。また4では両方のPostgreSQLサーバで別のパーティションを並列に検索している様子がわかるはずです。

障害時の動きを見る

   続いてPostgreSQLサーバに障害が起こった時、PostgesForestとしてどのような振る舞いをするか、実際に試してみましょう。

   まずはJpsqlを切断します。Jpsqlを起動したターミナルウィンドウで、CTRL+Cを押すか\qを入力してください。
[14] \q
Now closing the connection
[postgres@localhost ~]$

   さらに2つめのPostgreSQLサーバを立ち上げたターミナルウィンドウで、次のコマンドを入力してPostgreSQLサーバを停止します。

[postgres@localhost ~]$ /home/postgres/forestbin/402_2/bin/forest_ctl -m f stop

   これによってPostgresForestは本来あるべきPostgreSQLサーバに接続できないことになります。この状態で、再度Jpsqlを起動します。

[postgres@localhost ~]$ /home/postgres/forestbin/402_1/bin/Jpsql.sh -h localhost -p 5432 -g gsc -d sample -U postgres -W postgres

   この時1つめのPostgreSQLサーバを起動したターミナルウィンドウ上では、たくさんのログが発行されていますが、その中に次のようなログを見つけることができるはずです。

INSERT INTO forest_brokenlog (serverid, datetime, ・・・
(中略)
・・・'localhost.localdomain/127.0.0.1', 'CONNECT')

   これはPostgresForestが2つめのPostgreSQLサーバに異常があったことを検知して、今後は2つめのPostgreSQLサーバにアクセスしないようにサーバの切り離し処理を行った結果になります。

   この状態で、Jpsqlから参照SQL/更新SQLのどちらを実行しても、まったく問題なく実行できることが確認できるはずです。PostgresForestが1つのPostgreSQLサーバのみで動作し続けているため、ユーザアプリケーションからは障害を認識することなく、何事も無かったようにサービスを継続することができるのです。

※注: 片方のPostgreSQLサーバを落として運用した後、元の状態に復旧するためにはリカバリの処理が必要になります。今回リカバリに関しては解説していませんので、ドキュメントを参照してください。


前のページ  1  2  3   4  次のページ


株式会社NTTデータ 長妻 賢
著者プロフィール
株式会社NTTデータ  長妻 賢
基盤システム事業本部
オープンソース開発センタ 技術開発担当
PostgreSQLを用いた並列分散データベースの研究開発に従事。その後PostgreSQLを使った非常に大規模なシステムの検証などを行う。2006年より、現在のPostgresForest開発チームに加わり、PostgresForestの開発と普及活動を行っている。


INDEX
第3回:PostgresForestを動かしてみよう!
  PostgresForestを実際に動かしてみよう
  PostgresForestの環境構築
PostgresForestにアクセスしてみる
  PostgresForestの活用事例