バックアップ・リストア（pg_dump,pg_restore）(9.2.4→9.3.2)
No
1

概要

対象

ユーザ

PostgreSQLの起動

既存PostgreSQLサーバ

postgresコマンド$ 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();version2

PostgreSQLのバージョン確認

既存PostgreSQLサーバ

postgres3

JdbcRunnerのインストール

任意のサーバ

任意

4

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

既存PostgreSQLサーバ-----------------------------------------------------------------------------------------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

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)

postgres$ export CLASSPATH=$CLASSPATH:JdbcRunnerを展開したディレクトリ/jdbcrunner-1.2.jar

5検証用データの投入

任意のサーバ任意$ psql -l$ 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文を実行$ psql -d 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-------490069(1 row)count-------100000(1 row)

6

検証用データの件数確認

既存PostgreSQLサーバ

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

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

7

PostgreSQL 9.3.2のインストール 新規PostgreSQLサーバ-8

新規PostgreSQLの起動

postgres

新規PostgreSQLサーバ

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

-$ pg_ctl start
server starting.

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

-postgres=# select version();9

新規PostgreSQLのバージョン確認 新規PostgreSQLサーバ

versionpostgres-----------------------------------------------------------------------------------------PostgreSQL 9.3.2 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3),
64-bit(1 row)
10 JdbcRunnerのインストール

任意のサーバ任意

11 pg_dumpの実行

新規PostgreSQLサーバ

postgres

JdbcRunnerのインストールは、「別紙_01_付帯ツールのインストール手順」を参照して下さい。
$ date; pg_dump -h [既存PostgreSQLのIPアドレス] -Fc --verbose tpcc > /tmp/[バックアップファイル名] ; date $ date; pg_dump -h [既存PostgreSQLのIPアドレス] -Fc --verbose tpcc >/tmp/postgres_old.dump ; date2014年 2月 20日 木曜日 11:44:32 JST
pg_dump: reading schemas
pg_dump: reading user-defined tables
pg_dump: reading extensions
pg_dump: reading user-defined functions
pg_dump: reading user-defined types
pg_dump: reading procedural languages（中略）
pg_dump: dumping contents of table warehouse
2014年 2月 20日 木曜日 11:46:19 JST$ date ; pg_restore -C --verbose -d postgres /tmp/[バックアップファイル名] ; date

12 pg_restoreの実行

13 VACUUMの実施

14 ANALYZEの実施

新規PostgreSQLサーバ

新規PostgreSQLサーバ

新規PostgreSQLサーバ

postgrespostgrespostgres$ ls -l /tmp/postgres_old.dum
postgres_old.dump$ psql -l
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 tpcc=# \timing
Timing is on.
=# VACUUM VERBOSE;
INFO: vacuuming "pg_catalog.pg_statistic"
INFO: index "pg_statistic_relid_att_inh_index" now contains 422 row versions in 4 pages
DETAIL: 0 index row versions were removed.
0 index pages have been deleted, 0 are currently reusable.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: "pg_statistic": found 0 removable, 422 nonremovable row versions in 18 out of 18 pages（中略）
VACUUM
Time: 45253.710 ms-$ psql tpcc=# \timing
Timing is on.
=# ANALYAE VERBOSE;
INFO: analyzing "pg_catalog.pg_type"
INFO: "pg_type": scanned 8 of 8 pages, containing 352 live rows and 0 dead rows; 352 rows in sample, 352
estimated total rows
INFO: analyzing "public.history"
INFO: "history": scanned 5180 of 5180 pages, containing 480000 live rows and 0 dead rows; 30000 rows insample, 480000 estimated total rows
INFO: analyzing "public.item"（中略）
ANALYZE
Time: 3516.621 ms-

リストア確認のため、以下のSQL文を実行

count-------480000(1 row)$ psql -d 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;-C オプションによって、リストア前にデータベースが作成されます。
左記のコマンドで例示しているpostgresデータベースは、CREATE DATABASE コマンドを実行するために利用するだけですので、pg_restore実行ユーザがアクセスできるデータベースであれば何でもよいです。

count------160(1 row)count-------980138(1 row)count-------100000(1 row)

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

新規PostgreSQLサーバ

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

postgrescount--------4902352(1 row)count-------489967(1 row)count--------1600000(1 row)count------16(1 row)$ export CLASSPATH=$CLASSPATH:JdbcRunnerを展開したディレクトリ/jdbcrunner-1.2.jar

16 JdbcRunnerの実行

任意のサーバ任意# 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: false
Sleep time: 0,0,0,0,0 msec
Throttle: - tps (total)
Debug mode: false
Trace mode
: falseLog directory: /tmp
Parameter 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

ページ 1

デフォルトの900秒では長いため、60秒で処理が終わるように設定を以下のように変更する。
# vi /usr/local/jdbcrunner-1.2/scripts/tpcc.js
var warmupTime = 0;
var measurementTime = 60;

バックアップ・リストア（pg_dump,pg_restore）(9.2.4→9.3.2)

17 既存PostgreSQLの停止

既存PostgreSQLサーバ

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

postgresroot# 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# cd /usr/local/src/postgresql-9.2.4# make uninstall$ pg_ctl status
pg_ctl: no server running# su – postgres$ 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)

ページ 2