1.4. レプリケーションを試してみる

PostgreSQLに同梱されているベンチマークツールのpgbenchを使って、レプリケーション機能を試してみましょう。

    $ pgbench -i -p 11000 test
   

レプリケーションが正しく動いているかどうか確かめるために、直接プライマリとスタンバイサーバに接続して、両方が同じ結果を返すかどうか見てみます。

    $ psql -p 11002 test
    \dt
    List of relations
    Schema |       Name       | Type  |  Owner  
    --------+------------------+-------+---------
    public | pgbench_accounts | table | t-ishii
    public | pgbench_branches | table | t-ishii
    public | pgbench_history  | table | t-ishii
    public | pgbench_tellers  | table | t-ishii
    (4 rows)
    \q
    $ psql -p 11003 test
    \dt
    List of relations
    Schema |       Name       | Type  |  Owner  
    --------+------------------+-------+---------
    public | pgbench_accounts | table | t-ishii
    public | pgbench_branches | table | t-ishii
    public | pgbench_history  | table | t-ishii
    public | pgbench_tellers  | table | t-ishii
    (4 rows)
   

プライマリサーバ(ポート11002)とスタンバイサーバ(ポート11003)は、同一の結果を返しています。 次に、pgbenchをしばらく走らせて、結果を見てみます。

    $ pgbench -p 11000 -T 10 test
    starting vacuum...end.
    transaction type: <builtin: TPC-B (sort of)>
    scaling factor: 1
    query mode: simple
    number of clients: 1
    number of threads: 1
    duration: 10 s
    number of transactions actually processed: 2171
    latency average = 4.692 ms
    tps = 213.147520 (including connections establishing)
    tps = 213.258008 (excluding connections establishing)

    $ psql -p 11002 -c "SELECT sum(abalance) FROM pgbench_accounts" test
    sum   
    --------
    192112
    (1 row)

    $ psql -p 11003 -c "SELECT sum(abalance) FROM pgbench_accounts" test
    sum   
    --------
    192112
    (1 row)
   

ここでも結果は同じでした。