ベースバックアップとアーカイブログ（9.2.4->9.3.2）
No

概要

対象

ユーザ

1

既存PostgreSQLの設定変更

既存PostgreSQLサーバ

postgres2

PostgreSQLの起動

既存PostgreSQLサーバ

postgres3

PostgreSQLのバージョン確認

既存PostgreSQLサーバ

postgres4

JdbcRunnerのインストール

既存PostgreSQLサーバ

任意

5

検証用データベースの作成

既存PostgreSQLサーバ

postgresコマンド$ vi /home/postgres/data/postgresql.conf
max_wal_senders = （インクリメント）$ vi /home/postgres/data/pg_hba.conf
host replication all [新規PostgreSQLサーバのIPアドレス]

確認 （確認コマンド等）-trust$ pg_ctl start
server starting.

$ pg_ctl status
pg_ctl: server is running (PID: 23121)/usr/local/pgsql/bin/postgres$ psqlpsql (9.2.4)
Type "help" for help.

-postgres=# select version();version-----------------------------------------------------------------------------------------PostgreSQL 9.2.4 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3),
64-bit(1 row)
JdbcRunnerのインストールは、「別紙_01_付帯ツールのインストール手順」を参照して下さい。
$ createdb tpcc
$ psql -l$ export CLASSPATH=$CLASSPATH:JdbcRunnerを展開したディレクトリ/jdbcrunner-1.2.jar

6

検証用データの投入

既存PostgreSQLサーバ

任意

備考

List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges-----------+----------+----------+---------+-------+----------------------postgres | postgres | UTF8 | C|C |template0 | postgres | UTF8 | C| C | =c/postgres+||||| postgres=CTc/postgres
template1 | postgres | UTF8 | C| C | =c/postgres+||||| postgres=CTc/postgres
tpcc| postgres | UTF8 | C|C |(4 rows)$ psql -d tpcc

$ java JR JdbcRunnerを展開したディレクトリ/scripts/tpcc_load.js -jdbcDriver org.postgresql.Driver -jdbcUrl
tpcc=# \djdbc:postgresql://PostgreSQLサーバのIPアドレス:5432/tpcc -jdbcPass postgres -jdbcUser postgres -logDir 任意
List of relationsのログ出力ディレクトリ
Schema | Name | Type | Owner--------+------------+-------+---------public | customer | table | postgres
public | district | table | postgres
public | history | table | postgres
public | item
| table | postgres
public | new_orders | table | postgres
public | order_line | table | postgres
public | orders | table | postgres
public | stock| table | postgres
public | warehouse | table | postgres(9 rows)
検証用データの入力確認のため、以下のSQL文を実行
count-------$ psql tpcc
480000(1 row)=# select count(*) from customer;=# select count(*) from district;count=# select count(*) from history;------=# select count(*) from item;160=# select count(*) from new_orders;(1 row)=# select count(*) from order_line;=# select count(*) from orders;count=# select count(*) from stock;-------=# select count(*) from warehouse;
490069(1 row)count-------100000(1 row)

7

検証用データの件数確認

既存PostgreSQLサーバ

count-------143969(1 row)

postgrescount--------4902352(1 row)count-------489967(1 row)count--------1600000(1 row)

PostgreSQLのインストールは、「別紙_00_PostgreSQLインストール手順」を参照して下さい。
以下ディレクトリにインストール/usr/local/pgsql9.2./configure --prefix=/usr/local/pgsql9.2 --with-libxml

8

PostgreSQL 9.2.4のインストール

新規PostgreSQLサーバ（中間PostgreSQL）-

9

PostgreSQL 9.3.2のインストール

新規PostgreSQLサーバ(新規PostgreSQL)-

count------16(1 row)-※ データベースクラスタは作成しません。

PostgreSQLのインストールは、「別紙_00_PostgreSQLインストール手順」を参照して下さい。

-※ データベースクラスタは作成しません。

中間PostgreSQLサーバ用の設定
新規PostgreSQLサーバ
10 ファイルの作成

postgres

新規PostgreSQLサーバ(新規PostgreSQL)

postgres11 pg_upgradeのコンパイル$ vi /home/postgres/.postgres9.2_profile
export PATH=/usr/local/pgsql9.2/bin:$PATH
export MANPATH=/usr/local/pgsql9.2/share/man:$PATHexport LD_LIBRARY_PATH=/usr/local/pgsql9.2/lib:$LD_LIBRARY_PATH
export PGDATA=/home/postgres/data9.2-$ cd /usr/local/src/postgresql-9.3.2/contrib/pg_upgrade$ make-※PostgreSQLインストール時に、contribモジュールもインストールしている場合は、項番12～15の手順は不要# cd /usr/local/src/postgresql-9.3.2/contrib/pg_upgrade# make install# su – postgres$ pg_upgrade -h
pg_upgrade upgrades a PostgreSQL cluster to a different major version.
Usage:pg_upgrade [OPTION]...

12 pg_upgradeのインストール

13

pg_upgrade_supportのコンパイル(省略)新規PostgreSQLサーバ(新規PostgreSQL)

root

新規PostgreSQLサーバ(新規PostgreSQL)

postgres$ cd /usr/local/src/postgresql-9.3.2/contrib/pg_upgrade_support/$ make-ページ 1

ベースバックアップとアーカイブログ（9.2.4->9.3.2）

14

pg_upgrade_supportのインストー 新規PostgreSQLサーバ
ル(新規PostgreSQL)

中間PostgreSQL用データベースク 新規PostgreSQLサーバ
15 ラスタ格納ディレクトリの作成（中間PostgreSQL）

postgres

新規PostgreSQL用データベースク 新規PostgreSQLサーバ
ラスタ格納ディレクトリの作成(新規PostgreSQL)

postgres16# cd /usr/local/src/postgresql-9.3.2/contrib/pg_upgrade_support/# make install-# mkdir /home/postgres/data9.2/# ls -l /home/postgres/data9.2
合計 0# mkdir /home/postgres/data/# ls -l /home/postgres/data
合計 0$ initdb -E UTF-8 --pgdata=/home/postgres/data/ --no-locale$ ls -l /home/postgres/data
合計 88-rw-------. 1 postgres postgres 4 3月 13 19:45 2014 PG_VERSION
drwx------. 5 postgres postgres 4096 3月 13 19:45 2014 basedrwx------. 2 postgres postgres 4096 3月 13 19:45 2014 global
drwx------. 2 postgres postgres 4096 3月 13 19:45 2014 pg_clog(省略)root(データベースクラスタ作成時のオプションは、前バージョンでの値に合わせる)

17 データベースクラスタの作成

新規PostgreSQLサーバ(新規PostgreSQL)

postgres18 ベースバックアップの取得

新規PostgreSQLサーバ（中間PostgreSQL）

postgres19 pg_receivexlogの実行

新規PostgreSQLサーバ（中間PostgreSQL）

postgres20 既存PostgreSQLの停止

既存PostgreSQLサーバ

postgres

新規PostgreSQLサーバ（中間PostgreSQL）

postgres$ source .postgres9.2_profile

21

中間PostgreSQLの起動（差分アーカイブログの適用）

22 中間PostgreSQLの停止

新規PostgreSQLサーバ(中間PostgreSQL)

postgres23 環境変数の設定

新規PostgreSQLサーバ(新規PostgreSQL)

postgres24

pg_upgradeによるデータ移行の可 新規PostgreSQLサーバ
否確認(新規PostgreSQL)

postgres-$ pg_basebackup -h [既存PostgreSQLサーバのIPアドレス] -p 5432 -D /home/postgres/data9.2/ --xlog--progress --verbose
xlog start point: 1/30000020$ pg_receivexlog -D /home/postgres/data9.2/pg_xlog -h [既存PostgreSQLサーバのIPアドレス] --verbose
pg_receivexlog: starting log streaming at 0/A000000 (timeline 1)（受信状態が持続するため、既存PostgreSQLサーバ停止後にCtrl + C等で停止させます）-$ pg_ctl stop
waiting for server to shut down....LOG: received smart shutdown request
LOG: autovacuum launcher shutting down
LOG: shutting down
LOG: database system is shut down
done
server stopped$ pg_ctl start
server starting.

$ pg_ctl status
pg_ctl: no server running$ pg_ctl stop
waiting for server to shut down....LOG: received smart shutdown request
LOG: autovacuum launcher shutting down
LOG: shutting down
LOG: database system is shut down
done
server stopped$ pg_ctl status
pg_ctl: no server running$ export PGDATAOLD=/home/postgres/data9.2/$ export PGDATANEW=/home/postgres/data/$ export PGBINOLD=/usr/local/pgsql_9.2/bin/$ export PGBINNEW=/usr/local/pgsql/bin/-$ source .postgres_profile$ date; pg_upgrade -c ;date
2014年 3月 13日 木曜日 20:02:12 JST
Performing Consistency Checks----------------------------Checking cluster versions
ok
Checking database user is a superuser
okChecking for prepared transactions
ok
Checking for reg* system OID user data types
okChecking for contrib/isn with bigint-passing mismatchok
Checking for presence of required libraries
ok
Checking database user is a superuser
okChecking for prepared transactionsok-$ pg_ctl statuspg_ctl: server is running (PID: 23121)/usr/local/pgsql9.2/bin/postgres

pg_receivexlogをここで停止させる*Clusters are compatible*
2014年 3月 13日 木曜日 20:02:16 JST$ date ; pg_upgrade --link ;date
2014年 3月 18日 火曜日 20:12:32 JST
Performing Consistency Checks----------------------------Checking cluster versions
ok
Checking database user is a superuser
okChecking for prepared transactions
ok
Checking for reg* system OID user data types
okChecking for contrib/isn with bigint-passing mismatchokCreating dump of global objects
okCreating dump of database schemas
okChecking for presence of required libraries
ok
Checking database user is a superuser
okChecking for prepared transactions
ok-If pg_upgrade fails after this point, you must re-initdb thenew cluster before continuing.

25

pg_upgradeによるデータ移行(ハードリンクモード)

新規PostgreSQLサーバ(新規PostgreSQL)

postgres

Performing Upgrade-----------------Analyzing all rows in the new clusterokFreezing all rows on the new cluster
ok
Deleting files from new pg_clog
okCopying old pg_clog to new serverokSetting next transaction ID for new cluster
ok
Setting oldest multixact ID on new clusterok
Resetting WAL archives
okSetting frozenxid counters in new cluster
okRestoring global objects in the new clusterokAdding support functions to new cluster
okRestoring database schemas in the new cluster
okRemoving support functions from new clusterokAdding ".old" suffix to old global/pg_controlok
If you want to start the old cluster, you will need to removethe ".old" suffix from /home/postgres/data_9.2/global/pg_control.old.
Because "link" mode was used, the old cluster cannot be safely
started once the new cluster has been started.
Linking user relation files

okSetting next OID for new cluster
Sync data directory to disk
Creating script to analyze new cluster
Creating script to delete old cluster

okokokokUpgrade Complete---------------Optimizer statistics are not transferred by pg_upgrade so,once you start the new server, consider running:
analyze_new_cluster.shRunning this script will delete the old cluster's data files:
delete_old_cluster.sh
2014年 3月 18日 火曜日 20:12:42 JST
2014年 3月 13日 木曜日 20:03:35 JSTページ 2ベースバックアップとアーカイブログ（9.2.4->9.3.2）
26 PostgreSQL起動

新規PostgreSQLサーバ(新規PostgreSQL)

postgres

27 PostgreSQLのバージョン確認

新規PostgreSQLサーバ(新規PostgreSQL)

postgres28 ANALYZEの実施

新規PostgreSQLサーバ(新規PostgreSQL)

postgres$ source /home/postgres/.postgres_profile$ pg_ctl start
server starting$ psqlpsql (9.3.2)
Type "help" for help.
postgres=# select version();

29 VACUUMの実施

新規PostgreSQLサーバ(新規PostgreSQL)

postgres$ pg_ctl status
pg_ctl: server is running (PID: 1395)/usr/local/pgsql/bin/postgres-version------------------------------------------------------------------------------------------------------------PostgreSQL 9.3.2 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120
313 (Red Hat 4.4.7-4), 64-bit(1 row)$ psql tcpp=# ANALYAE VERBOSE;
ANALYZE
Time: 3516.621 ms$ psql tpcc
tpcc=# VACUUM VERBOSE;
LOG: checkpoints are occurring too frequently (6 seconds apart)
HINT: Consider increasing the configuration parameter "checkpoint_segments".
LOG: checkpoints are occurring too frequently (3 seconds apart)
HINT: Consider increasing the configuration parameter "checkpoint_segments".
LOG: checkpoints are occurring too frequently (3 seconds apart)
HINT: Consider increasing the configuration parameter "checkpoint_segments".
LOG: checkpoints are occurring too frequently (4 seconds apart)
HINT: Consider increasing the configuration parameter "checkpoint_segments".
LOG: checkpoints are occurring too frequently (13 seconds apart)
HINT: Consider increasing the configuration parameter "checkpoint_segments".
LOG: checkpoints are occurring too frequently (3 seconds apart)
HINT: Consider increasing the configuration parameter "checkpoint_segments".
VACUUM
Time: 45253.710 ms

検証用データの入力確認のため、以下のSQL文を実行$ psql tpcc=# select count(*) from customer;=# select count(*) from district;=# select count(*) from history;=# select count(*) from item;=# select count(*) from new_orders;=# select count(*) from order_line;=# select count(*) from orders;=# select count(*) from stock;=# select count(*) from warehouse;count-------480000(1 row)count------160(1 row)count-------980138(1 row)count-------100000(1 row)

30 検証用データの件数確認

新規PostgreSQLサーバ(新規PostgreSQL)

count-------143969(1 row)

postgrescount--------4902352(1 row)count-------489967(1 row)count--------1600000(1 row)count------16(1 row)

31 JdbcRunnerのインストール

新規PostgreSQLサーバ

任意

32 JdbcRunnerの実行

新規PostgreSQLサーバ

任意

既存PostgreSQLのアンインストー
既存PostgreSQLサーバ
ルroot

33

JdbcRunnerのインストールは、「別紙_01_付帯ツールのインストール手順」を参照して下さい。
$ export CLASSPATH=$CLASSPATH:JdbcRunnerを展開したディレクトリ/jdbcrunner-1.2.jar# java JR /usr/local/src/jdbcrunner-1.2/scripts/tpcc.js -jdbcDriver org.postgresql.Driver-jdbcUrl jdbc:postgresql://localhost:5432/tpcc -jdbcPass postgres -jdbcUser postgres$ java JR JdbcRunnerを展開したディレクトリ/scripts/tpcc.js -jdbcDriver org.postgresql.Driver -jdbcUrl-logDir /tmp
jdbc:postgresql://PostgreSQLサーバのIPアドレス:5432/tpcc -jdbcPass postgres -jdbcUser postgres -logDir 任意 13:48:29 [INFO ] > JdbcRunner 1.2のログ出力ディレクトリ
13:48:29 [INFO ] [Config]
Program start time : 20140220-134828
Script filename: /usr/local/src/jdbcrunner-1.2/scripts/tpcc.js
JDBC driver: org.postgresql.Driver
JDBC URL: jdbc:postgresql://localhost:5432/tpcc
JDBC user: postgres
Warmup time
: 0 sec
Measurement time : 60 sec
Number of tx types : 5
Number of agents : 16
Connection pool size : 16
Statement cache size : 40
Auto commit: falseSleep time
: 0,0,0,0,0 msec
Throttle: - tps (total)
Debug mode
: falseTrace mode: false
Log directory: /tmpParameter 0:0
Parameter 1:0
Parameter 2:0
Parameter 3:0
Parameter 4:0
Parameter 5:0
Parameter 6:0
Parameter 7:0
Parameter 8:0
Parameter 9:0
13:48:30 [INFO ] Tiny TPC-C 1.125,60,62,62 tx
13:48:52 [INFO ] [Progress] 21 sec, 68,61,9,6,4 tps, 677,686,69,68,66 tx（中略）
13:49:32 [INFO ] [Response time (99%tile)] 1122,1045,285,1168,609 msec
13:49:32 [INFO ] [Response time (maximum)] 1476,1548,303,1245,1088 msec
13:49:32 [INFO ] < JdbcRunner SUCCESS# cd /usr/local/src/postgresql-9.2.4# su – postgres# make uninstall$ which psql
/usr/bin/which: no psql in (/usr/local/pgsql/bin:/usr/lib64/qt3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/zookeeper-3.4.5/bin:/usr/local/storm/bin:/home/postgres/bin)

ページ 3