PostgreSQL 9.0のレプリケーションを使ってみよう

SRA OSS, Inc. 日本支社
佐藤 友章
sato@sraoss.co.jp
2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

1あなたは誰？

2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

2

こんな人に聞いてほしい2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

3

PostgreSQLとは

2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

4

PostgreSQL 9.0とは2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

5

レプリケーションとは2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

6

本日のメニューPostgreSQL 9.0を使ったレプリケーション

2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

7

食材
食材は、できるだけ新鮮なもの（最新のバージョン）を使った
ほうがおいしくいただけます● CentOS 5.5
2つ● PostgreSQL 9.0.1
2つ
● やる気
少々
本日は、ノートPC上にVMware Playerをインストールし、その上にCentOSをインストールしてあります2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

8

できあがりのイメージ
WALレコードの転送

WALセンダ参照

WALレシーバ参照

更新
WALファイルの保存

WALファイルの転送
プライマリサーバ

スタンバイサーバ（primary／192.168.246.130）（standby／192.168.246.131）
192.168.246.0/24

2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

9

下ごしらえ2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

10

下ごしらえ（1）PostgreSQLのインストール
プライマリ／スタンバイサーバでPostgreSQLをソースコード
からビルドしてインストールします● ソースコードを以下のURLからダウンロードします●●

http://www.postgresql.org/ftp/source/v9.0.1/

インストール先はデフォルトのまま/usr/local/pgsqlとします## tartar -xjf-xjf postgresql-9.0.1.tar.bz2
postgresql-9.0.1.tar.bz2 -C-C /usr/local/src/usr/local/src ソースコードを展開
ソースコードを展開## cd
cd /usr/local/src/postgresql-9.0.1/usr/local/src/postgresql-9.0.1## ./configure./configure## makemake worldworld
 ソースコードをビルド
ソースコードをビルド## makemake install-world
install-world インストール
インストール## ls
ls /usr/local/pgsql/usr/local/pgsql
bin
bin include
include lib
lib shareshare

2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

11

下ごしらえ（2）PostgreSQLのスーパーユーザの作成
PostgreSQLのスーパーユーザpostgresを作成します● ユーザIDとグループIDは26とします● ホームディレクトリは/var/lib/pgsqlとします## groupadd
groupadd -g-g 26
26 postgres
postgres postgresグループを作成
postgresグループを作成## useradd
useradd -d-d /var/lib/pgsql/var/lib/pgsql -g-g postgres
postgres -u-u 26
26 postgres
postgres postgresユーザを作成
postgresユーザを作成## passwd

passwd postgres
postgres postgresユーザのパスワードを設定
postgresユーザのパスワードを設定
New
New UNIX
UNIX password:
password: （パスワードを入力）（パスワードを入力）
RetypeRetype new
new UNIX
UNIX password:
password: （もう一度パスワードを入力）（もう一度パスワードを入力）

2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

12

下ごしらえ（3）

環境変数の設定
postgresユーザに切り替わって環境変数を設定します● データベースクラスタの位置は/var/lib/pgsql/dataとします## su
su -- postgres
postgres$$ vimvim ~/.bash_profile~/.bash_profile postgresユーザに切り替わる
postgresユーザに切り替わる

（省略）
（省略）
## User
User specificspecific environment
environment andand startup
startup programs
programs
PATH=/usr/local/pgsql/bin:$PATH:$HOME/bin
PATH=/usr/local/pgsql/bin:$PATH:$HOME/bin
MANPATH=/usr/local/share/man:$MANPATH
MANPATH=/usr/local/share/man:$MANPATH
PGDATA=/var/lib/pgsql/data
PGDATA=/var/lib/pgsql/data
 データベースクラスタの位置を設定
データベースクラスタの位置を設定
exportexport PATH
PATH MANPATH
MANPATH PGDATA
PGDATA$$ .. ~/.bash_profile~/.bash_profile 環境変数の設定を反映
環境変数の設定を反映$$ psql
psql --version--version
 コマンドへのパスが有効になっているかを確認
コマンドへのパスが有効になっているかを確認
psql
psql (PostgreSQL)(PostgreSQL) 9.0.1
9.0.1
contains
contains support
support forfor command-line
command-line editing
editing2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

13

下ごしらえ（4）SSHの設定プライマリ／スタンバイサーバ間でパスワードなしにWALファ
イルを転送できるようにSSHの設定を行います
primary$
primary$ ssh-keygenssh-keygen
EnterEnter file
file in
in whichwhich toto savesave thethe keykey (/var/lib/pgsql/.ssh/id_rsa
(/var/lib/pgsql/.ssh/id_rsa
):): （何も入力しない）（何も入力しない）
Enter
Enter passphrase
passphrase (empty(empty forfor nono passphrase):
passphrase): （何も入力しない）（何も入力しない）
Enter
Enter same
same passphrase
passphrase again:
again: （何も入力しない）（何も入力しない）
standby$standby$ scp
scp primary:~/.ssh/id_dsa.pub
primary:~/.ssh/id_dsa.pub ~~standby$standby$ mkdir
mkdir -m
-m 0700
0700 ~/.ssh~/.sshstandby$standby$ cat
cat ~/id_dsa.pub~/id_dsa.pub >>>> ~/.ssh/authorized_keys~/.ssh/authorized_keys
standby$chmod
0600~/.ssh/authorized_keys
standby$ chmod 0600 ~/.ssh/authorized_keys
standby$standby$ ssh-keygenssh-keygen
EnterEnter passphrase
passphrase (empty(empty forfor nono passphrase):
passphrase): （何も入力しない）（何も入力しない）
Enter
Enter same
same passphrase
passphrase again:
again: （何も入力しない）（何も入力しない）
primary$
primary$ scp
scp standby:~/.ssh/id_rsa.pub
standby:~/.ssh/id_rsa.pub ~~primary$
primary$ cat
cat ~/id_rsa.pub~/id_rsa.pub >>>> ~/.ssh/authorized_keys~/.ssh/authorized_keys
primary$chmod
0600~/.ssh/authorized_keys
primary$ chmod 0600 ~/.ssh/authorized_keys
2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

14

プライマリサーバのレシピ

2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

15

プライマリサーバのレシピ（1）データベースクラスタの作成
プライマリサーバでデータベースクラスタを作ります● データベースクラスタとはデータベースのデータを入れる
入れ物のことです●●

データベースクラスタの位置は環境変数PGDATAに設定した/var/lib/pgsql/dataディレクトリです

データベースクラスタはinitdbコマンドで作りますprimary$
primary$ initdb
initdb -A-A md5md5 -E-E UTF8
UTF8 --no-locale--no-locale -W-W
Enter
Enter newnew superuser
superuser password:
password: （スーパーユーザのパスワードを入力）（スーパーユーザのパスワードを入力）
Enter
Enter itit again:
again: （もう一度パスワードを入力）（もう一度パスワードを入力）
primary$
primary$ ls
ls $PGDATA$PGDATAPG_VERSION
pg_stat_tmp
PG_VERSION pg_hba.conf
pg_hba.conf
pg_stat_tmp pg_xlog
pg_xlogbase
pg_ident.confbase
pg_ident.conf pg_subtranspg_subtrans postgresql.conf
postgresql.conf
globalpg_multixact
pg_tblspc
globalpg_multixact
pg_tblspc
pg_clog
pg_notify
pg_twophasepg_clog
pg_notify
pg_twophase2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

16

プライマリサーバのレシピ（2）ストリーミングレプリケーションの設定
WALファイルの保存先のディレクトリを作り、設定ファイル
postgresql.confを編集してストリーミングレプリケーションの設定を行います● max_wal_sendersにはスタンバイサーバの数を指定します
primary$
primary$ mkdir
mkdir ~/archive~/archive  WALファイルの保存先のディレクトリを作成
WALファイルの保存先のディレクトリを作成
primary$
primary$ vim
vim $PGDATA/postgresql.conf$PGDATA/postgresql.conf
（抜粋）
（抜粋）
listen_addresseslisten_addresses == '*''*' 接続を監視するIPアドレスを指定
接続を監視するIPアドレスを指定
wal_level
wal_level == hot_standby
hot_standby WALファイルに書き込む情報のレベルを指定
WALファイルに書き込む情報のレベルを指定
archive_modearchive_mode == onon WALファイルを保存するか？
WALファイルを保存するか？
archive_commandarchive_command == 'cp'cp -i-i %p%p /var/lib/pgsql/archive/%f/var/lib/pgsql/archive/%f << /dev/nu
/dev/null'll' WALファイルを保存するコマンドを指定
WALファイルを保存するコマンドを指定
max_wal_senders
max_wal_senders == 11 WALセンダプロセスの数を指定
WALセンダプロセスの数を指定
2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

17

プライマリサーバのレシピ（3）クライアント認証の設定
スタンバイサーバからのWALのリクエストを受け付けるため、設定ファイルpg_hba.confを編集してクライアント認証の設定を行います● セキュリティを考えてパスワード認証を行うのがおすすめ● DATABASEにはreplicationを指定します●

replicationはストリーミングレプリケーションの設定を行うための名前です（実際のデータベースではありません）

primary$
primary$ vim
vim $PGDATA/pg_hba.conf$PGDATA/pg_hba.conf
（抜粋）
（抜粋）
## TYPEUSER
TYPE DATABASEDATABASE
USER
local
all
all
local
all
all
host
all
all
host
all
all
host
all
all
host
all
all
host
all
all
host
all
all
host
replication
postgreshost
replication
postgres2010/12/11

CIDR-ADDRESSCIDR-ADDRESS
127.0.0.1/32
127.0.0.1/32::1/128::1/128
192.168.246.0/24
192.168.246.0/24
192.168.246.0/24
192.168.246.0/24

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

METHODMETHOD
md5
md5
md5
md5
md5
md5
md5
md5
md5
md5
18

プライマリサーバのレシピ（4）プライマリサーバの起動
pg_ctlコマンドでプライマリサーバを起動します
primary$
primary$ pg_ctl
pg_ctl startstart プライマリサーバを起動
プライマリサーバを起動
serverserver starting
starting
LOG:
LOG: databasedatabase systemsystem was
was shut
shut down
down at
at 2010-12-11
2010-12-11 11:21:47
11:21:47 JST
JST
LOG:
LOG: autovacuum
autovacuum launcher
launcher started
startedLOG:
databasesystemisready
LOG: database system is ready toto accept
accept connections
connections
primary$
primary$ ps
ps ax
ax || grep
grep postgres
postgres プライマリサーバのプロセスを確認
プライマリサーバのプロセスを確認
31969
SS
0:00
31969 pts/2
pts/2
0:00 /usr/local/pgsql/bin/postgres/usr/local/pgsql/bin/postgres
31970
Ss
0:00
31970 ??
Ss
0:00 postgres:postgres: logger
logger processprocess
31972
Ss
0:00
31972 ??
Ss
0:00 postgres:postgres: writerwriter processprocess
31973
Ss
0:00
31973 ??
Ss
0:00 postgres:postgres: wal
wal writerwriter processprocess
31974
Ss
0:00
31974 ??
Ss
0:00 postgres:postgres: autovacuum
autovacuum launcher
launcher processprocess
31975
Ss
0:00
31975 ??
Ss
0:00 postgres:postgres: archiverarchiver processprocess
31976
Ss
0:00
31976 ??
Ss
0:00 postgres:postgres: stats
stats collector
collector processprocess

2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

19

プライマリサーバのレシピ（5）ベースバックアップの作成
pg_ctlコマンドでプライマリサーバを立ち上げ、ベースバッ
クアップを作ります● ベースバックアップの作成前にpg_start_backup関
数、作成後にpg_stop_backup関数を実行します● pg_start_backup関数の引数には任意のラベルを指定します（バックアップファイルの絶対パスがおすすめ）
primary$
primary$ mkdir
mkdir ~/backups~/backups  ベースバックアップの保存先のディレクトリを作成
ベースバックアップの保存先のディレクトリを作成
primary$
psql
primary$ psql=#=# SELECTSELECT pg_start_backup('/var/lib/pgsql/backups/data-2010-12-
pg_start_backup('/var/lib/pgsql/backups/data-2010-12-
07.tar.bz2');
07.tar.bz2');
=#
=# \q
\q
primary$
primary$ tar
tar -cjf-cjf ~/backups/data-2010-12-07.tar.bz2~/backups/data-2010-12-07.tar.bz2 -C-C ~~ --excl
--exclude
ude "pg_log/*""pg_log/*" --exclude--exclude "pg_xlog/*""pg_xlog/*" --exclude--exclude postmaster.opts
postmaster.opts --exclude--exclude postmaster.pid
postmaster.pid datadata
primary$
primary$ psql
psql=#=# SELECTSELECT pg_stop_backup();pg_stop_backup();
=#
=# \q
\q
2010/12/11
Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.
20スタンバイサーバのレシピ

2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

21

スタンバイサーバのレシピ（1）ベースバックアップの展開
プライマリサーバからバックアップファイルを転送し、ベース
バックアップを展開します● ベースバックアップの展開後に不要なファイルの削除と、WALファイルのアーカイブ先のディレクトリを作成します
standby$standby$ mkdir
mkdir ~/backups~/backups  ベースバックアップの保存先のディレクトリを作成
ベースバックアップの保存先のディレクトリを作成
standby$standby$ scp
scp primary:~/backups/data-2010-12-07.tar.bz2
primary:~/backups/data-2010-12-07.tar.bz2 ~/backups~/backups
standby$standby$ tar
tar -xjf-xjf ~/backups/data-2010-12-07.tar.bz2~/backups/data-2010-12-07.tar.bz2 -C-C ~~ ベースバックアップを展開
ベースバックアップを展開
standby$standby$ mkdir
mkdir ~/archive~/archive  WALファイルの保存先のディレクトリを作成
WALファイルの保存先のディレクトリを作成

2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

22

スタンバイサーバのレシピ（2）スタンバイサーバの設定
プライマリサーバからWALを受け取ってリカバリを行い、リカ
バリ中に問い合わせを受け付けるようにするため、スタンバイ
サーバの設定を行います
standby$standby$ vim
vim $PGDATA/postgresql.conf$PGDATA/postgresql.conf
（抜粋）
（抜粋）
hot_standby
hot_standby == onon スタンバイ中に問い合わせを受け付けるか？
スタンバイ中に問い合わせを受け付けるか？
standby$standby$ vim
vim $PGDATA/recovery.conf$PGDATA/recovery.conf
standby_modestandby_mode == 'on''on'
 スタンバイサーバとして起動するか？
スタンバイサーバとして起動するか？
primary_conninfo
primary_conninfo == 'host=primary'host=primary user=postgres
user=postgres password=（スーパー
password=（スーパー
ユーザのパスワードを指定）'
ユーザのパスワードを指定）'  プライマリサーバに接続するための情報を指定
プライマリサーバに接続するための情報を指定
restore_command='scp
primary:~/archive/%frestore_command = 'scp primary:~/archive/%f %p'%p' WALファイルからリカバリするコマンドを指定
WALファイルからリカバリするコマンドを指定
trigger_file
trigger_file == '/var/lib/pgsql/trigger''/var/lib/pgsql/trigger' リカバリの完了を指示するためのトリガファイルを指定
リカバリの完了を指示するためのトリガファイルを指定※recovery.confでは値を「'（シングルクォート）」で括る必要があります
2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

23

スタンバイサーバのレシピ（3）スタンバイサーバの起動
これでレプリケーションの準備がすべて整ったので、スタンバ
イサーバを立ち上げてみましょう
standby$
standby$ pg_ctl
pg_ctl startstart スタンバイサーバを起動
スタンバイサーバを起動
serverserver starting
starting
LOG:
LOG: databasedatabase systemsystem was
was interrupted;
interrupted; last
last known
known upup at
at 2010-12
2010-12
-11-11 12:05:49
12:05:49 JSTJST
LOG:
creating
LOG: creating missing
missing WAL
WAL directory
directory "pg_xlog/archive_status""pg_xlog/archive_status"
LOG:
LOG: entering
entering standby
standby mode
mode
scp:
scp: /var/lib/pgsql/archive/000000010000000000000001:/var/lib/pgsql/archive/000000010000000000000001: No
No suchsuch ff
ile
ile oror directory
directory
LOG:
LOG: streaming
streaming replication
replication successfully
successfully connectedconnected toto primaryprimary
LOG:
LOG: redo
redo starts
starts at
at 0/1000020
0/1000020
standby$
standby$ ps
ps ax
ax || grep
grep postgres
postgres スタンバイサーバのプロセスを確認
スタンバイサーバのプロセスを確認
12366
SS
0:00
12366 pts/2
pts/2
0:00 /usr/local/pgsql/bin/postgres/usr/local/pgsql/bin/postgres
12367
Ss
0:00
12367 ??
Ss
0:00 postgres:postgres: logger
logger processprocess
12368
Ss
0:00
recoveri
12368 ??
Ss
0:00 postgres:postgres: startup
startup processprocess
recovering
ng 000000010000000000000001
000000010000000000000001
12371
Rs
0:00
str
12371 ??
Rs
0:00 postgres:postgres: wal
wal receiverreceiver processprocessstr
eaming0/1000120
2010/12/11
Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.
24
eaming 0/1000120
12375
Ss
0:00
12375 ??
Ss
0:00 postgres:postgres: writerwriter processprocessスタンバイサーバのレシピ（4）プライマリサーバの確認
プライマリサーバでログとプロセスを確認します
LOG:
LOG: replication
replication connection
connection authorized:
authorized: user=postgres
user=postgres host=192
host=192.168.246.131.168.246.131 port=52176
port=52176
primary$
primary$ ps
ps ax
ax || grep
grep postgres
postgres プライマリサーバのプロセスを確認
プライマリサーバのプロセスを確認
31969
SS
0:00
31969 pts/2
pts/2
0:00 /usr/local/pgsql/bin/postgres/usr/local/pgsql/bin/postgres
31970
Ss
0:00
31970 ??
Ss
0:00 postgres:postgres: logger
logger processprocess
31972
Ss
0:00
31972 ??
Ss
0:00 postgres:postgres: writerwriter processprocess
31973
Ss
0:00
31973 ??
Ss
0:00 postgres:postgres: wal
wal writerwriter processprocess
31974
Ss
0:00
31974 ??
Ss
0:00 postgres:postgres: autovacuum
autovacuum launcher
launcher proces
proces
ss
31975
Ss
0:00
last
31975 ??
Ss
0:00 postgres:postgres: archiverarchiver processprocesslast wa
wa
ss 000000010000000000000000
000000010000000000000000
31976
Ss
0:00
31976 ??
Ss
0:00 postgres:postgres: stats
stats collector
collector processprocess
32700
Ss
0:00
32700 ??
Ss
0:00 postgres:postgres: wal
wal sendersender processprocess postgre
postgre
ss 192.168.246.131(52176)
192.168.246.131(52176) streaming
streaming 0/10002A0
0/10002A0

2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

25

できあがり2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

26

味見してみよう（1）プライマリサーバへの参照／更新$ createdb -h primary test
$ pgbench -i -h primary test
$ psql -h primary test=# \d
List of relations
Schema |Name| Type | Owner--------+------------------+-------+---------public | pgbench_accounts | table | postgres
public | pgbench_branches | table | postgres
public | pgbench_history | table | postgres
public | pgbench_tellers | table | postgres(4 rows)=# SELECT * FROM pgbench_accounts WHERE aid = 1;
aid | bid | abalance |filler-----+-----+----------+-------------------------------------1 |1 |0 |(1 row)=# UPDATE pgbench_accounts SET abalance = 1 WHERE aid = 1;
UPDATE 1
2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

27

味見してみよう（2）スタンバイサーバへの参照／更新$ psql -h standby test=# \d
List of relations
Schema |Name| Type | Owner--------+------------------+-------+---------public | pgbench_accounts | table | postgres
public | pgbench_branches | table | postgres
public | pgbench_history | table | postgres
public | pgbench_tellers | table | postgres(4 rows)=# SELECT * FROM pgbench_accounts WHERE aid = 1;
aid | bid | abalance |filler-----+-----+----------+-------------------------------------1 |1 |1 |(1 row)=# UPDATE pgbench_accounts SET abalance = 2 WHERE aid = 1;
ERROR: cannot execute UPDATE in a read-only transaction

2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

28

味見してみよう（3）スタンバイサーバ停止中の更新（1）
スタンバイサーバが障害で停止したと想定し、スタンバイサー
バを復旧させてみます● スタンバイサーバサーバのプロセスを強制的に停止します
standby$ ps ax | grep postgres
 プロセスIDを確認
15508 pts/2
S
0:00 /usr/local/pgsql/bin/postgres
15509 ?
Ss
0:00 postgres: logger process
15510 ?
Ss
0:01 postgres: startup process
recovering 000000010000000000000003
15513 ?
Ss
0:00 postgres: writer process
15516 ?
Ss
0:00 postgres: stats collector process
15517 ?
Ss
0:00 postgres: wal receiver processstr
eaming 0/3075D18
standby$ kill -KILL 15508
 プロセスを強制的に停止

2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

29

味見してみよう（4）スタンバイサーバ停止中の更新（2）●

プライマリサーバに更新を行います$ pgbench -i -h primary test
$ pgbench -i -h primary test
$ psql -h primary test=# UPDATE pgbench_accounts SET abalance = 3 WHERE aid = 1;
UPDATE 1=# \q●

スタンバイサーバを起動しなおしますstandby$ pg_ctl start
pg_ctl: another server might be running; trying to start server
anywayserver starting
standby$ psql -h standby test
psql: FATAL: the database system is starting up
standby$ psql -h standby test=# SELECT * FROM pgbench_accounts WHERE aid = 1;
aid | bid | abalance |filler-----+-----+----------+-------------------------------------2010/12/11© 2010 SRA OSS, Inc. Japan All rights reserved.
30
1 |
1 |
3Copyright|(1 row)

味見してみよう（5）プライマリサーバの切り替え（1）プライマリサーバが障害で停止したと想定し、プライマリサー
バを切り替えてみます● プライマリサーバのプロセスを強制的に停止します
primary$ ps ax | grep postgres
 プロセスIDを確認
1274 pts/2
S
0:00 /usr/local/pgsql/bin/postgres
1275 ?
Ss
0:00 postgres: logger process
1277 ?
Ss
0:00 postgres: writer process
1278 ?
Ss
0:00 postgres: wal writer process
1279 ?
Ss
0:00 postgres: autovacuum launcher process
1280 ?
Ss
0:00 postgres: archiver process
last was 000000010000000000000002
1281 ?
Ss
0:00 postgres: stats collector process
1408 ?
Ss
0:00 postgres: wal sender process postgre
s 192.168.246.131(43925) streaming 0/30763F8
primary$ kill -KILL 1274
 プロセスを強制的に停止

2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

31味見してみよう（6）プライマリサーバの切り替え（2）●スタンバイサーバでトリガファイルを作ると、プライマリサー
バとして立ち上がりますstandby$standby$ touch
touch ~/trigger~/trigger  トリガファイルを作成
トリガファイルを作成
LOG:
LOG: trigger
trigger file
file found:found: /var/lib/pgsql/trigger/var/lib/pgsql/trigger
LOG:
LOG: redo
redo done
done at
at 0/30763C00/30763C0
LOG:
LOG: last
last completedcompleted transaction
transaction was
was atat loglog timetime 2010-12-11
2010-12-11 12:
12:
46:57.954065+09
46:57.954065+09
scp:
scp: /var/lib/pgsql/archive/000000010000000000000003:/var/lib/pgsql/archive/000000010000000000000003: No
No suchsuch ff
ile
ile oror directory
directory
scp:
scp: /var/lib/pgsql/archive/00000002.history:/var/lib/pgsql/archive/00000002.history: No
No suchsuch file
file oror dd
irectory
irectory
LOG:
LOG: selected
selected new
new timeline
timeline ID:
ID: 22
scp:
scp: /var/lib/pgsql/archive/00000001.history:/var/lib/pgsql/archive/00000001.history: No
No suchsuch file
file oror dd
irectory
irectory
LOG:
LOG: archivearchive recovery
recovery complete
complete
LOG:
LOG: autovacuum
autovacuum launcher
launcher started
startedLOG:
databasesystemisready
LOG: database system is ready toto accept
accept connections
connections
standby$standby$ psql
psql -h-h standby
standby test
test
=#
SET
abalance=# UPDATEUPDATE pgbench_accounts
pgbench_accounts
SETSRAabalance=All 1
1 WHEREWHERE
aid == 1;
1;
2010/12/11
Copyright © 2010
OSS, Inc. Japan=
rightsreserved. aid
UPDATEUPDATE 1132

ありがとうございました

2010/12/11

Copyright © 2010 SRA OSS, Inc. Japan All rights reserved.

33