Appendix_Log_PostgreSQL9.4to12.md

Appendix. メジャーバージョンアップのログ
1. 1. PostgreSQL 9.4環境
1. 1.1. PostgreSQL 9.4のインストール
1. 1.1.1. リポジトリをインストール
2. 1.1.2. PostgreSQL 9.4のインストール
3. 1.1.3. データベースクラスタの作成
4. 1.1.4. データベースの起動
2. 1.2. 機能拡張のインストール
1. [1.2.1. pg_dbms_stats](#121-pg_dbms_statsurl_pg_dbms_stats)
2. [1.2.2. pg_hint_plan](#122-pg_hint_planurl_pg_hint_plan)
3. [1.2.3. pgBadger](#123-pgbadgerurl_pgbadger)
4. [1.2.4. pg_repack](#124-pg_repackurl_pg_repack)5. [1.2.5. pg_rman](#125-pg_rmanurl_pg_rman)
6. [1.2.6. pg_statsinfo](#126-pg_statsinfourl_pg_statsinfo)
7. [1.2.7. pg_bulkload](#127-pg_bulkloadurl_pg_bulkload)
3. 1.3. テストデータの投⼊
4. 1.4. メジャーバージョンアップ準備
1. [1.4.1. pg_dbms_stats](#141-pg_dbms_statsurl_pg_dbms_stats)
2. [1.4.2. pg_hint_plan](#142-pg_hint_planurl_pg_hint_plan)
3. [1.4.3. pgBadger](#143-pgbadgerurl_pgbadger)
4. [1.4.4. pg_repack](#144-pg_repackurl_pg_repack)5. [1.4.5. pg_rman](#145-pg_rmanurl_pg_rman)
6. [1.4.6. pg_statsinfo](#146-pg_statsinfourl_pg_statsinfo)
7. [1.4.7. pg_bulkload](#147-pg_bulkloadurl_pg_bulkload)
5. 1.5. データベースクラスタの移⾏準備
1. 1.5.1. pg_dump / pg_restoreの場合
2. 1.5.2. pg_upgradeの場合
2. 2. PostgreSQL 12環境
1. 2.1. PostgreSQL 12のインストール
1. 2.1.1. リポジトリをインストール
2. 2.1.2. PostgreSQL 12のインストール
3. 2.1.3. データベースクラスタの作成
4. 2.1.4. データベースの起動
2. 2.2. データベースの移⾏
1. 2.2.1. 移⾏データの準備
2. 2.2.2. pg_dump / pg_restoreの場合
3. 2.2.3. pg_upgradeの場合
3. 2.3. 機能拡張のインストール
1. [2.3.1. pg_hint_plan](#231-pg_hint_planurl_pg_hint_plan)
2. [2.3.2. pgBadger](#232-pgbadgerurl_pgbadger)
3. [2.3.3. pg_repack](#233-pg_repackurl_pg_repack)
4. [2.3.4. pg_rman](#234-pg_rmanurl_pg_rman)
5. [2.3.5. pg_statsinfo](#235-pg_statsinfourl_pg_statsinfo)
6. [2.3.6. pg_bulkload](#236-pg_bulkloadurl_pg_bulkload)
1 / 72

Appendix_Log_PostgreSQL9.4to12.md

1. PostgreSQL 9.4環境
メジャーバージョンアップ元である、PostgreSQL 9.4環境を構築。

1.1. PostgreSQL 9.4のインストール
1.1.1. リポジトリをインストール[root@node94 yum.repos.d]# yum install
https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhatrepo-latest.noarch.rpm -y
読み込んだプラグイン:fastestmirror, langpacks
pgdg-redhat-repo-latest.noarch.rpm|
6.2 kB 00:00:00/var/tmp/yum-root-GNwwx7/pgdg-redhat-repo-latest.noarch.rpm を調べています: pgdgredhat-repo-42.0-8.noarch/var/tmp/yum-root-GNwwx7/pgdg-redhat-repo-latest.noarch.rpm をインストール済みとして設定しています
依存性の解決をしています--> トランザクションの確認を実⾏しています。
---> パッケージ pgdg-redhat-repo.noarch 0:42.0-8 を インストール--> 依存性解決を終了しました。
依存性を解決しました=========================================================================================================
Package
アーキテクチャーバージョン
リポジトリー
容量=========================================================================================================
インストール中:
pgdg-redhat-repo
noarch
42.0-8/pgdg-redhat-repolatest.noarch
11 k
トランザクションの要約=========================================================================================================
インストール 1 パッケージ
合計容量: 11 k
インストール容量: 11 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中: pgdg-redhat-repo-42.0-8.noarch
1/1
2 / 72

Appendix_Log_PostgreSQL9.4to12.md

検証中
1/1

: pgdg-redhat-repo-42.0-8.noarch

インストール:
pgdg-redhat-repo.noarch 0:42.0-8
完了しました!

1.1.2. PostgreSQL 9.4のインストール[root@node94 yum.repos.d]# yum search postgresql94
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: ty1.mirror.newmediaexpress.com* centosplus: ty1.mirror.newmediaexpress.com* extras: ty1.mirror.newmediaexpress.com* updates: ty1.mirror.newmediaexpress.com======================================= N/S matched: postgresql94=======================================
postgresql94-debuginfo.x86_64 : Debug information for package postgresql94
postgresql94-jdbc-javadoc.noarch : API docs for postgresql94-jdbc
postgresql94-odbc-debuginfo.x86_64 : Debug information for package postgresql94odbc
postgresql94-tcl-debuginfo.x86_64 : Debug information for package postgresql94-tcl
postgresql94.x86_64 : PostgreSQL client programs and libraries
postgresql94-contrib.x86_64 : Contributed source and binaries distributed with
PostgreSQL
postgresql94-devel.x86_64 : PostgreSQL development header files and libraries
postgresql94-docs.x86_64 : Extra documentation for PostgreSQL
postgresql94-jdbc.noarch : JDBC driver for PostgreSQL
postgresql94-libs.x86_64 : The shared libraries required for any PostgreSQL clients
postgresql94-odbc.x86_64 : PostgreSQL ODBC driver
postgresql94-plperl.x86_64 : The Perl procedural language for PostgreSQL
postgresql94-plpython.x86_64 : The Python procedural language for PostgreSQL
postgresql94-pltcl.x86_64 : The Tcl procedural language for PostgreSQL
postgresql94-server.x86_64 : The programs needed to create and run a PostgreSQL
serverpostgresql94-tcl.x86_64 : A Tcl client library for PostgreSQL
postgresql94-test.x86_64 : The test suite distributed with PostgreSQL
Name and summary matches only, use "search all" for everything.
[root@node94 yum.repos.d]# yum install postgresql94-server postgresql94
postgresql94-libs postgresql94-contrib postgresql94-devel -y
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: ty1.mirror.newmediaexpress.com* centosplus: ty1.mirror.newmediaexpress.com* extras: ty1.mirror.newmediaexpress.com* updates: ty1.mirror.newmediaexpress.com
依存性の解決をしています--> トランザクションの確認を実⾏しています。
3 / 72

Appendix_Log_PostgreSQL9.4to12.md---> パッケージ postgresql94.x86_64 0:9.4.26-1PGDG.rhel7 を インストール---> パッケージ postgresql94-contrib.x86_64 0:9.4.26-1PGDG.rhel7 を インストール---> パッケージ postgresql94-devel.x86_64 0:9.4.26-1PGDG.rhel7 を インストール---> パッケージ postgresql94-libs.x86_64 0:9.4.26-1PGDG.rhel7 を インストール---> パッケージ postgresql94-server.x86_64 0:9.4.26-1PGDG.rhel7 を インストール--> 依存性解決を終了しました。
依存性を解決しました=========================================================================================================
Package
アーキテクチャー バージョン
リポジトリー
容量=========================================================================================================
インストール中:
postgresql94
x86_649.4.26-1PGDG.rhel7
pgdg94
1.2 M
postgresql94-contrib
x86_649.4.26-1PGDG.rhel7
pgdg94527 kpostgresql94-devel
x86_649.4.26-1PGDG.rhel7
pgdg94
1.6 M
postgresql94-libs
x86_649.4.26-1PGDG.rhel7
pgdg94217 kpostgresql94-server
x86_649.4.26-1PGDG.rhel7
pgdg94
3.9 M
トランザクションの要約=========================================================================================================
インストール 5 パッケージ
総ダウンロード容量: 7.4 M
インストール容量: 32 M
Downloading packages:
警告: /var/cache/yum/x86_64/7/pgdg94/packages/postgresql94-contrib-9.4.261PGDG.rhel7.x86_64.rpm: ヘッダ ー V4 DSA/SHA1 Signature、鍵 ID 442df0f8: NOKEY
postgresql94-contrib-9.4.26-1PGDG.rhel7.x86_64.rpm の公開鍵がインストールされていません(1/5): postgresql94-contrib-9.4.26-1PGDG.rhel7.x86_64.rpm|
527 kB 00:00:02(2/5): postgresql94-devel-9.4.26-1PGDG.rhel7.x86_64.rpm|
1.6 MB 00:00:01(3/5): postgresql94-9.4.26-1PGDG.rhel7.x86_64.rpm|
1.2 MB 00:00:05(4/5): postgresql94-libs-9.4.26-1PGDG.rhel7.x86_64.rpm|
217 kB 00:00:00(5/5): postgresql94-server-9.4.26-1PGDG.rhel7.x86_64.rpm|
3.9 MB 00:00:10-------------------------------------------------------------------------------------------------------合計
484 kB/s |7.4 MB 00:00:15
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG から鍵を取得中です。
Importing GPG key 0x442DF0F8:
4 / 72

Appendix_Log_PostgreSQL9.4to12.md

Userid: "PostgreSQL RPM Building Project <pgsqlrpms-hackers@pgfoundry.org>"
Fingerprint: 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8
Package: pgdg-redhat-repo-42.0-8.noarch (@/pgdg-redhat-repo-latest.noarch)From: /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中: postgresql94-libs-9.4.26-1PGDG.rhel7.x86_64
1/5
インストール中: postgresql94-9.4.26-1PGDG.rhel7.x86_64
2/5
インストール中: postgresql94-contrib-9.4.26-1PGDG.rhel7.x86_64
3/5
インストール中: postgresql94-server-9.4.26-1PGDG.rhel7.x86_64
4/5
インストール中: postgresql94-devel-9.4.26-1PGDG.rhel7.x86_64
5/5
検証中: postgresql94-contrib-9.4.26-1PGDG.rhel7.x86_64
1/5
検証中: postgresql94-server-9.4.26-1PGDG.rhel7.x86_64
2/5
検証中: postgresql94-9.4.26-1PGDG.rhel7.x86_64
3/5
検証中: postgresql94-devel-9.4.26-1PGDG.rhel7.x86_64
4/5
検証中: postgresql94-libs-9.4.26-1PGDG.rhel7.x86_64
5/5
インストール:postgresql94.x86_64 0:9.4.26-1PGDG.rhel7
0:9.4.26-1PGDG.rhel7
postgresql94-devel.x86_64 0:9.4.26-1PGDG.rhel7
0:9.4.26-1PGDG.rhel7
postgresql94-server.x86_64 0:9.4.26-1PGDG.rhel7

postgresql94-contrib.x86_64
postgresql94-libs.x86_64

完了しました!

1.1.3. データベースクラスタの作成[root@node94 ~]# PGSETUP_INITDB_OPTIONS="--encoding=UTF8 --no-locale" /usr/pgsql9.4/bin/postgresql94-setup initdb
Initializing database ... OK

1.1.4. データベースの起動[root@node94 ~]# systemctl enable postgresql-9.4
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql9.4.service to /usr/lib/systemd/system/postgresql-9.4.service.

5 / 72

Appendix_Log_PostgreSQL9.4to12.md[root@node94 ~]# systemctl start postgresql-9.4[root@node94 ~]# systemctl status postgresql-9.4● postgresql-9.4.service - PostgreSQL 9.4 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-9.4.service; enabled; vendor
preset: disabled)
Active: active (running) since ⽇ 2020-04-05 17:50:33 JST; 10s ago
Docs: https://www.postgresql.org/docs/9.4/static/
Process: 5721 ExecStart=/usr/pgsql-9.4/bin/pg_ctl start -D ${PGDATA} -s -w -t 300(code=exited, status=0/SUCCESS)
Process: 5715 ExecStartPre=/usr/pgsql-9.4/bin/postgresql94-check-db-dir ${PGDATA}(code=exited, status=0/SUCCESS)
Main PID: 5724 (postgres)Tasks: 7
CGroup: /system.slice/postgresql-9.4.service├─5724 /usr/pgsql-9.4/bin/postgres -D /var/lib/pgsql/9.4/data├─5725 postgres: logger process├─5727 postgres: checkpointer process├─5728 postgres: writer process├─5729 postgres: wal writer process├─5730 postgres: autovacuum launcher process└─5731 postgres: stats collector process
4⽉ 05 17:50:32 node94 systemd[1]: Starting PostgreSQL 9.4 database server...
4⽉ 05 17:50:32 node94 pg_ctl[5721]: < 2020-04-05 17:50:32.262 JST >LOG:
redirecting log output...cess
4⽉ 05 17:50:32 node94 pg_ctl[5721]: < 2020-04-05 17:50:32.262 JST >HINT: Future
log output wil...og".
4⽉ 05 17:50:33 node94 systemd[1]: Started PostgreSQL 9.4 database server.
Hint: Some lines were ellipsized, use -l to show in full.

1.2. 機能拡張のインストール
1.2.1. pg_dbms_stats
インストール[postgres@node94 extensions]$ tar xzvf
/media/sf_share/media/postgresql/extensions/pg_dbms_stats-REL1_3_7.tar.gz
pg_dbms_stats-REL1_3_7/
pg_dbms_stats-REL1_3_7/.gitignore
pg_dbms_stats-REL1_3_7/COPYRIGHT
pg_dbms_stats-REL1_3_7/ChangeLog
pg_dbms_stats-REL1_3_7/ChangeLog.ja
pg_dbms_stats-REL1_3_7/Makefile
pg_dbms_stats-REL1_3_7/README.installcheck
pg_dbms_stats-REL1_3_7/SPECS/
pg_dbms_stats-REL1_3_7/SPECS/pg_dbms_stats91.spec
pg_dbms_stats-REL1_3_7/SPECS/pg_dbms_stats92.spec
pg_dbms_stats-REL1_3_7/SPECS/pg_dbms_stats93.spec
pg_dbms_stats-REL1_3_7/SPECS/pg_dbms_stats94.spec
pg_dbms_stats-REL1_3_7/SPECS/pg_dbms_stats95.spec
6 / 72

Appendix_Log_PostgreSQL9.4to12.md

pg_dbms_stats-REL1_3_7/SPECS/pg_dbms_stats96.spec
pg_dbms_stats-REL1_3_7/doc/
pg_dbms_stats-REL1_3_7/doc/export_effective_stats-9.1.sql.sample
pg_dbms_stats-REL1_3_7/doc/export_effective_stats-9.2.sql.sample
pg_dbms_stats-REL1_3_7/doc/export_effective_stats-9.3.sql.sample
pg_dbms_stats-REL1_3_7/doc/export_effective_stats-9.4.sql.sample
pg_dbms_stats-REL1_3_7/doc/export_effective_stats-9.5.sql.sample
pg_dbms_stats-REL1_3_7/doc/export_effective_stats-9.6.sql.sample
pg_dbms_stats-REL1_3_7/doc/export_plain_stats-9.1.sql.sample
pg_dbms_stats-REL1_3_7/doc/export_plain_stats-9.2.sql.sample
pg_dbms_stats-REL1_3_7/doc/export_plain_stats-9.3.sql.sample
pg_dbms_stats-REL1_3_7/doc/export_plain_stats-9.4.sql.sample
pg_dbms_stats-REL1_3_7/doc/export_plain_stats-9.5.sql.sample
pg_dbms_stats-REL1_3_7/doc/export_plain_stats-9.6.sql.sample
pg_dbms_stats-REL1_3_7/doc/objects-ja.html
pg_dbms_stats-REL1_3_7/doc/pg_dbms_stats-ja.html
pg_dbms_stats-REL1_3_7/doc/pg_dbms_stats-ja.png
pg_dbms_stats-REL1_3_7/doc/style.css
pg_dbms_stats-REL1_3_7/dump.c
pg_dbms_stats-REL1_3_7/expected/
pg_dbms_stats-REL1_3_7/expected/.gitignore
pg_dbms_stats-REL1_3_7/expected/init-9.1.out
pg_dbms_stats-REL1_3_7/expected/init-9.2.out
pg_dbms_stats-REL1_3_7/expected/init-9.3.out
pg_dbms_stats-REL1_3_7/expected/init-9.4.out
pg_dbms_stats-REL1_3_7/expected/init-9.5.out
pg_dbms_stats-REL1_3_7/expected/init-9.6.out
pg_dbms_stats-REL1_3_7/expected/init-common.out
pg_dbms_stats-REL1_3_7/expected/ut-9.1.out
pg_dbms_stats-REL1_3_7/expected/ut-9.2.out
pg_dbms_stats-REL1_3_7/expected/ut-9.3.out
pg_dbms_stats-REL1_3_7/expected/ut-9.4.out
pg_dbms_stats-REL1_3_7/expected/ut-9.5.out
pg_dbms_stats-REL1_3_7/expected/ut-9.6.out
pg_dbms_stats-REL1_3_7/expected/ut-common.out
pg_dbms_stats-REL1_3_7/ext_scripts/
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.0--1.3.2-9.1.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.0--1.3.2-9.2.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.0--1.3.2-9.3.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.2--1.3.3-9.1.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.2--1.3.3-9.2.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.2--1.3.3-9.3.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.3--1.3.4-9.1.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.3--1.3.4-9.2.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.3--1.3.4-9.3.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.4--1.3.5-9.1.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.4--1.3.5-9.2.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.4--1.3.5-9.3.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.5--1.3.6-9.1.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.5--1.3.6-9.2.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.5--1.3.6-9.3.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.6--1.3.7-9.1.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.6--1.3.7-9.2.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.6--1.3.7-9.3.sql
7 / 72

Appendix_Log_PostgreSQL9.4to12.md

pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.6--1.3.7-9.4.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.7-9.1.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.7-9.2.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.7-9.3.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.7-9.4.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.7-9.5.sql
pg_dbms_stats-REL1_3_7/ext_scripts/pg_dbms_stats--1.3.7-9.6.sql
pg_dbms_stats-REL1_3_7/import.c
pg_dbms_stats-REL1_3_7/input/
pg_dbms_stats-REL1_3_7/input/ut-fdw.csv
pg_dbms_stats-REL1_3_7/input/ut_fdw_init.source
pg_dbms_stats-REL1_3_7/input/ut_imp_exp-9.1.source
pg_dbms_stats-REL1_3_7/input/ut_imp_exp-9.2.source
pg_dbms_stats-REL1_3_7/input/ut_imp_exp-9.3.source
pg_dbms_stats-REL1_3_7/input/ut_imp_exp-9.4.source
pg_dbms_stats-REL1_3_7/input/ut_imp_exp-9.5.source
pg_dbms_stats-REL1_3_7/input/ut_imp_exp-9.6.source
pg_dbms_stats-REL1_3_7/output/
pg_dbms_stats-REL1_3_7/output/ut_fdw_init.source
pg_dbms_stats-REL1_3_7/output/ut_imp_exp-9.1.source
pg_dbms_stats-REL1_3_7/output/ut_imp_exp-9.2.source
pg_dbms_stats-REL1_3_7/output/ut_imp_exp-9.3.source
pg_dbms_stats-REL1_3_7/output/ut_imp_exp-9.4.source
pg_dbms_stats-REL1_3_7/output/ut_imp_exp-9.5.source
pg_dbms_stats-REL1_3_7/output/ut_imp_exp-9.6.source
pg_dbms_stats-REL1_3_7/pg_dbms_stats.c
pg_dbms_stats-REL1_3_7/pg_dbms_stats.control
pg_dbms_stats-REL1_3_7/pg_dbms_stats.h
pg_dbms_stats-REL1_3_7/regress.conf
pg_dbms_stats-REL1_3_7/sql/
pg_dbms_stats-REL1_3_7/sql/.gitignore
pg_dbms_stats-REL1_3_7/sql/init-9.1.sql
pg_dbms_stats-REL1_3_7/sql/init-9.2.sql
pg_dbms_stats-REL1_3_7/sql/init-9.3.sql
pg_dbms_stats-REL1_3_7/sql/init-9.4.sql
pg_dbms_stats-REL1_3_7/sql/init-9.5.sql
pg_dbms_stats-REL1_3_7/sql/init-9.6.sql
pg_dbms_stats-REL1_3_7/sql/init-common.sql
pg_dbms_stats-REL1_3_7/sql/ut-9.1.sql
pg_dbms_stats-REL1_3_7/sql/ut-9.2.sql
pg_dbms_stats-REL1_3_7/sql/ut-9.3.sql
pg_dbms_stats-REL1_3_7/sql/ut-9.4.sql
pg_dbms_stats-REL1_3_7/sql/ut-9.5.sql
pg_dbms_stats-REL1_3_7/sql/ut-9.6.sql
pg_dbms_stats-REL1_3_7/sql/ut-common.sql[postgres@node94 extensions]$ cd pg_dbms_stats-REL1_3_7/[postgres@node94 pg_dbms_stats-REL1_3_7]$ makegcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing fwrapv -fexcess-precision=standard -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gccswitches -m64 -mtune=generic -fPIC -I. -I./ -I/usr/pgsql-9.4/include/server I/usr/pgsql-9.4/include/internal -D_GNU_SOURCE -I/usr/include/libxml2 8 / 72

Appendix_Log_PostgreSQL9.4to12.md

I/usr/include -c -o pg_dbms_stats.o pg_dbms_stats.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing fwrapv -fexcess-precision=standard -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gccswitches -m64 -mtune=generic -fPIC -I. -I./ -I/usr/pgsql-9.4/include/server I/usr/pgsql-9.4/include/internal -D_GNU_SOURCE -I/usr/include/libxml2 I/usr/include -c -o dump.o dump.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing fwrapv -fexcess-precision=standard -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gccswitches -m64 -mtune=generic -fPIC -I. -I./ -I/usr/pgsql-9.4/include/server I/usr/pgsql-9.4/include/internal -D_GNU_SOURCE -I/usr/include/libxml2 I/usr/include -c -o import.o import.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing fwrapv -fexcess-precision=standard -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gccswitches -m64 -mtune=generic -fPIC -shared -o pg_dbms_stats.so pg_dbms_stats.o
dump.o import.o -L/usr/pgsql-9.4/lib -Wl,--as-needed -L/usr/lib64 -Wl,--as-needed-Wl,-rpath,'/usr/pgsql-9.4/lib',--enable-new-dtags
cp ext_scripts/pg_dbms_stats--1.3.6--1.3.7-9.4.sql pg_dbms_stats--1.3.6--1.3.7.sql
cp ext_scripts/pg_dbms_stats--1.3.7-9.4.sql pg_dbms_stats--1.3.7.sql[postgres@node94 pg_dbms_stats-REL1_3_7]$ su
パスワード:[root@node94 pg_dbms_stats-REL1_3_7]# make install/usr/bin/mkdir -p '/usr/pgsql-9.4/lib'/usr/bin/mkdir -p '/usr/pgsql-9.4/share/extension'/usr/bin/mkdir -p '/usr/pgsql-9.4/share/extension'/usr/bin/mkdir -p '/usr/pgsql-9.4/doc/extension'/usr/bin/install -c -m 755 pg_dbms_stats.so '/usr/pgsql-9.4/lib/pg_dbms_stats.so'/usr/bin/install -c -m 644 pg_dbms_stats.control '/usr/pgsql-9.4/share/extension/'/usr/bin/install -c -m 644 pg_dbms_stats--1.3.6--1.3.7.sql pg_dbms_stats--1.3.7.sql'/usr/pgsql-9.4/share/extension/'/usr/bin/install -c -m 644 doc/export_effective_stats-9.4.sql.sample
doc/export_plain_stats-9.4.sql.sample '/usr/pgsql-9.4/doc/extension/'

データベースへの登録
ここでは、テストのために専⽤のデータベースを作成し、そこに登録する。
[postgres@node94 ~]$ createdb dbms_stats[postgres@node94 ~]$ psql -d dbms_stats
psql (9.4.26)"help" でヘルプを表⽰します.
dbms_stats=# CREATE EXTENSION pg_dbms_stats
dbms_stats-# ;CREATE EXTENSION
dbms_stats=# \dx
9 / 72

Appendix_Log_PostgreSQL9.4to12.md

インストール済みの拡張の⼀覧
名前| バージョン | スキーマ |説明---------------+------------+------------+-------------------------------------pg_dbms_stats | 1.3.7| dbms_stats | stabilize plans by fixing statistics
plpgsql| 1.0| pg_catalog | PL/pgSQL procedural language(2 ⾏)
dbms_stats=#

パラメーター修正

shared_preload_libraries = 'pg_dbms_stats'# (change requires restart)

⽣成されるスキーマ

dbms_stats=# \dt dbms_stats.*
リレーションの⼀覧
スキーマ |
名前|型| 所有者------------+-----------------------+----------+---------dbms_stats | backup_history| テーブル | postgres
dbms_stats | column_stats_backup| テーブル | postgres
dbms_stats | column_stats_locked| テーブル | postgres
dbms_stats | relation_stats_backup | テーブル | postgres
dbms_stats | relation_stats_locked | テーブル | postgres(5 ⾏)
dbms_stats=# \dv dbms_stats.*
リレーションの⼀覧
スキーマ |
名前|型| 所有者------------+--------------------------+--------+---------dbms_stats | column_stats_effective| ビュー | postgres
dbms_stats | relation_stats_effective | ビュー | postgres
dbms_stats | stats| ビュー | postgres(3 ⾏)
dbms_stats=# \di dbms_stats.*
リレーションの⼀覧
スキーマ |
名前|型| 所有者 |
テーブル------------+----------------------------+--------------+----------+---------------------dbms_stats | backup_history_pkey| インデックス | postgres | backup_history
dbms_stats | column_stats_backup_pkey| インデックス | postgres |column_stats_backup
dbms_stats | column_stats_locked_pkey| インデックス | postgres |column_stats_locked
dbms_stats | relation_stats_backup_pkey | インデックス | postgres |relation_stats_backup
dbms_stats | relation_stats_locked_pkey | インデックス | postgres |relation_stats_locked(5 ⾏)
10 / 72

Appendix_Log_PostgreSQL9.4to12.md

dbms_stats=# \ds dbms_stats.*
リレーションの⼀覧
スキーマ |
名前|型| 所有者------------+-----------------------+------------+---------dbms_stats | backup_history_id_seq | シーケンス | postgres(1 ⾏)

1.2.2. pg_hint_plan
インストール[postgres@node94 extensions]$ tar xzvf
/media/sf_share/media/postgresql/extensions/pg_hint_plan-REL94_1_1_5.tar.gz
pg_hint_plan-REL94_1_1_5/
pg_hint_plan-REL94_1_1_5/.gitignore
pg_hint_plan-REL94_1_1_5/COPYRIGHT
pg_hint_plan-REL94_1_1_5/COPYRIGHT.postgresql
pg_hint_plan-REL94_1_1_5/Makefile
pg_hint_plan-REL94_1_1_5/SPECS/
pg_hint_plan-REL94_1_1_5/SPECS/pg_hint_plan94.spec
pg_hint_plan-REL94_1_1_5/core.c
pg_hint_plan-REL94_1_1_5/data/
pg_hint_plan-REL94_1_1_5/data/data.csv
pg_hint_plan-REL94_1_1_5/doc/
pg_hint_plan-REL94_1_1_5/doc/hint_list-ja.html
pg_hint_plan-REL94_1_1_5/doc/hint_list.html
pg_hint_plan-REL94_1_1_5/doc/pg_hint_plan-ja.html
pg_hint_plan-REL94_1_1_5/doc/pg_hint_plan.html
pg_hint_plan-REL94_1_1_5/doc/style.css
pg_hint_plan-REL94_1_1_5/expected/
pg_hint_plan-REL94_1_1_5/expected/.gitignore
pg_hint_plan-REL94_1_1_5/expected/R_sample.out
pg_hint_plan-REL94_1_1_5/expected/base_plan.out
pg_hint_plan-REL94_1_1_5/expected/init.out
pg_hint_plan-REL94_1_1_5/expected/pg_hint_plan.out
pg_hint_plan-REL94_1_1_5/expected/ut-A.out
pg_hint_plan-REL94_1_1_5/expected/ut-G.out
pg_hint_plan-REL94_1_1_5/expected/ut-J.out
pg_hint_plan-REL94_1_1_5/expected/ut-L.out
pg_hint_plan-REL94_1_1_5/expected/ut-R.out
pg_hint_plan-REL94_1_1_5/expected/ut-S.out
pg_hint_plan-REL94_1_1_5/expected/ut-T.out
pg_hint_plan-REL94_1_1_5/expected/ut-fini.out
pg_hint_plan-REL94_1_1_5/expected/ut-init.out
pg_hint_plan-REL94_1_1_5/input/
pg_hint_plan-REL94_1_1_5/input/ut-fdw.source
pg_hint_plan-REL94_1_1_5/make_join_rel.c
pg_hint_plan-REL94_1_1_5/normalize_query.hpg_hint_plan-REL94_1_1_5/output/
pg_hint_plan-REL94_1_1_5/output/ut-fdw.source
pg_hint_plan-REL94_1_1_5/pg_hint_plan--1.1.2--1.1.3.sql
11 / 72

Appendix_Log_PostgreSQL9.4to12.md

pg_hint_plan-REL94_1_1_5/pg_hint_plan--1.1.3--1.1.4.sql
pg_hint_plan-REL94_1_1_5/pg_hint_plan--1.1.4--1.1.5.sql
pg_hint_plan-REL94_1_1_5/pg_hint_plan--1.1.5.sql
pg_hint_plan-REL94_1_1_5/pg_hint_plan.c
pg_hint_plan-REL94_1_1_5/pg_hint_plan.control
pg_hint_plan-REL94_1_1_5/pg_stat_statements.c
pg_hint_plan-REL94_1_1_5/sql/
pg_hint_plan-REL94_1_1_5/sql/.gitignore
pg_hint_plan-REL94_1_1_5/sql/base_plan.sql
pg_hint_plan-REL94_1_1_5/sql/init.sql
pg_hint_plan-REL94_1_1_5/sql/maskout.sh
pg_hint_plan-REL94_1_1_5/sql/pg_hint_plan.sql
pg_hint_plan-REL94_1_1_5/sql/ut-A.sql
pg_hint_plan-REL94_1_1_5/sql/ut-G.sql
pg_hint_plan-REL94_1_1_5/sql/ut-J.sql
pg_hint_plan-REL94_1_1_5/sql/ut-L.sql
pg_hint_plan-REL94_1_1_5/sql/ut-R.sql
pg_hint_plan-REL94_1_1_5/sql/ut-S.sql
pg_hint_plan-REL94_1_1_5/sql/ut-T.sql
pg_hint_plan-REL94_1_1_5/sql/ut-fini.sql
pg_hint_plan-REL94_1_1_5/sql/ut-init.sql[postgres@node94 extensions]$ cd pg_hint_plan-REL94_1_1_5/[postgres@node94 pg_hint_plan-REL94_1_1_5]$ makegcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing fwrapv -fexcess-precision=standard -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gccswitches -m64 -mtune=generic -fPIC -I. -I./ -I/usr/pgsql-9.4/include/server I/usr/pgsql-9.4/include/internal -D_GNU_SOURCE -I/usr/include/libxml2 I/usr/include -c -o pg_hint_plan.o pg_hint_plan.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing fwrapv -fexcess-precision=standard -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gccswitches -m64 -mtune=generic -fPIC -L/usr/pgsql-9.4/lib -Wl,--as-needed L/usr/lib64 -Wl,--as-needed -Wl,-rpath,'/usr/pgsql-9.4/lib',--enable-new-dtags Wl,--build-id -shared -o pg_hint_plan.so pg_hint_plan.o[postgres@node94 pg_hint_plan-REL94_1_1_5]$ su
パスワード:[root@node94 pg_hint_plan-REL94_1_1_5]# make install/usr/bin/mkdir -p '/usr/pgsql-9.4/share/extension'/usr/bin/mkdir -p '/usr/pgsql-9.4/share/extension'/usr/bin/mkdir -p '/usr/pgsql-9.4/lib'/usr/bin/install -c -m 644 pg_hint_plan.control '/usr/pgsql-9.4/share/extension/'/usr/bin/install -c -m 644 pg_hint_plan--1.1.5.sql pg_hint_plan--1.1.4--1.1.5.sql
pg_hint_plan--1.1.3--1.1.4.sql pg_hint_plan--1.1.2--1.1.3.sql '/usr/pgsql9.4/share/extension/'/usr/bin/install -c -m 755 pg_hint_plan.so '/usr/pgsql-9.4/lib/'

12 / 72

Appendix_Log_PostgreSQL9.4to12.md

データベースへの登録
ここでは、テストのために専⽤のデータベースを作成し、そこに登録する。
[postgres@node94 ~]$ createdb hint_plan[postgres@node94 ~]$ psql -d hint_plan
psql (9.4.26)"help" でヘルプを表⽰します.
hint_plan=# CREATE EXTENSION pg_hint_plan;
CREATE EXTENSION
hint_plan=# \dx
インストール済みの拡張の⼀覧
名前| バージョン | スキーマ |説明--------------+------------+------------+-----------------------------pg_hint_plan | 1.1.5| hint_plan |plpgsql| 1.0| pg_catalog | PL/pgSQL procedural language(2 ⾏)

パラメーター修正
postgresql.confを修正
shared_preload_libraries = 'pg_dbms_stats, pg_hint_plan'

⽣成されるスキーマ

hint_plan=# \dn
スキーマ⼀覧
名前| 所有者-----------+---------hint_plan | postgres
public| postgres(2 ⾏)
hint_plan=# \d hint_plan.*
テーブル "hint_plan.hints"
列
|
型
|
修飾語
-------------------+---------+------------------------------------------------------------id| integer | not null default
nextval('hint_plan.hints_id_seq'::regclass)norm_query_string | text
| not null
application_name | text
| not nullhints
| text| not null
インデックス:"hints_pkey" PRIMARY KEY, btree (id)"hints_norm_and_app" UNIQUE, btree (norm_query_string, application_name)13 / 72

Appendix_Log_PostgreSQL9.4to12.md

1.2.3. pgBadger
インストール[root@node94 ~]# yum --showduplicates search pgbadger
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: ty1.mirror.newmediaexpress.com* centosplus: ty1.mirror.newmediaexpress.com* extras: ty1.mirror.newmediaexpress.com* updates: ty1.mirror.newmediaexpress.com========================================= N/S matched: pgbadger=========================================
pgbadger-10.2-1.rhel7.noarch : A fast PostgreSQL log analyzer
pgbadger-10.3-1.rhel7.noarch : A fast PostgreSQL log analyzer
pgbadger-11.0-1.rhel7.noarch : A fast PostgreSQL log analyzer
pgbadger-11.1-1.rhel7.noarch : A fast PostgreSQL log analyzer[root@node94 ~]# yum install pgbadger-10.2-1.rhel7.noarch
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: ty1.mirror.newmediaexpress.com* centosplus: ty1.mirror.newmediaexpress.com* extras: ty1.mirror.newmediaexpress.com* updates: ty1.mirror.newmediaexpress.com
pgdg94
3.6 kB 00:00:00
依存性の解決をしています--> トランザクションの確認を実⾏しています。
---> パッケージ pgbadger.noarch 0:10.2-1.rhel7 を インストール--> 依存性の処理をしています: perl-Text-CSV_XS のパッケージ: pgbadger-10.2-1.rhel7.noarch--> トランザクションの確認を実⾏しています。
---> パッケージ perl-Text-CSV_XS.x86_64 0:1.00-3.el7 を インストール--> 依存性解決を終了しました。

|

依存性を解決しました=========================================================================================================
Package
アーキテクチャーバージョン
リポジトリー
容量=========================================================================================================
インストール中:
pgbadgernoarch
10.2-1.rhel7
pgdg94321 k
依存性関連でのインストールをします:
perl-Text-CSV_XS
x86_641.00-3.el7
base
78 k
トランザクションの要約===================================================================================
14 / 72

Appendix_Log_PostgreSQL9.4to12.md======================
インストール 1 パッケージ (+1 個の依存関係のパッケージ)
総ダウンロード容量: 399 k
インストール容量: 1.5 M
Is this ok [y/d/N]: y
Downloading packages:(1/2): perl-Text-CSV_XS-1.00-3.el7.x86_64.rpm|
78 kB 00:00:00(2/2): pgbadger-10.2-1.rhel7.noarch.rpm|
321 kB 00:00:02-------------------------------------------------------------------------------------------------------合計
156 kB/s |399 kB 00:00:02
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中: perl-Text-CSV_XS-1.00-3.el7.x86_64
1/2
インストール中: pgbadger-10.2-1.rhel7.noarch
2/2
検証中: perl-Text-CSV_XS-1.00-3.el7.x86_64
1/2
検証中: pgbadger-10.2-1.rhel7.noarch
2/2
インストール:
pgbadger.noarch 0:10.2-1.rhel7
依存性関連をインストールしました:
perl-Text-CSV_XS.x86_64 0:1.00-3.el7
完了しました!
[postgres@node94 ~]$ pgbadger --version
pgBadger version 10.2

データベースへの登録なし
パラメーター修正

log_min_duration_statement = 0
log_line_prefix = '%t [%p]:[%l-1]'
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
15 / 72

Appendix_Log_PostgreSQL9.4to12.md

log_temp_files = 0
log_autovacuum_min_duration = 0
log_error_verbosity = default

⽣成されるスキーマなし
動作確認[postgres@node94 pg_log]$ pgbadger -f stderr postgresql-Tue.log
LOG: Ok, generating html report... 990 bytes of 990 (100.00%), queries: 0, events:
0

1.2.4. pg_repack
インストール[root@node94 ~]# yum --showduplicates search pg_repack
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: ty1.mirror.newmediaexpress.com* centosplus: ty1.mirror.newmediaexpress.com* extras: ty1.mirror.newmediaexpress.com* updates: ty1.mirror.newmediaexpress.com======================================== N/S matched: pg_repack=========================================
pg_repack94-debuginfo-1.4.1-1.rhel7.x86_64 : Debug information for package
pg_repack94
pg_repack94-debuginfo-1.4.2-1.rhel7.x86_64 : Debug information for package
pg_repack94
pg_repack94-1.4.3-1.rhel7.x86_64 : Reorganize tables in PostgreSQL databases
without any locks
pg_repack94-1.4.4-1.rhel7.x86_64 : Reorganize tables in PostgreSQL databases
without any locks
pg_repack94-1.4.5-1.rhel7.x86_64 : Reorganize tables in PostgreSQL databases
without any locks[root@node94 ~]# yum install pg_repack94-1.4.3-1.rhel7.x86_64
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: ty1.mirror.newmediaexpress.com* centosplus: ty1.mirror.newmediaexpress.com* extras: ty1.mirror.newmediaexpress.com* updates: ty1.mirror.newmediaexpress.com
base
3.6 kB 00:00:00
centosplus
2.9 kB 00:00:00
extras
16 / 72|||

Appendix_Log_PostgreSQL9.4to12.md

2.9 kB 00:00:00
updates
2.9 kB 00:00:00
依存性の解決をしています--> トランザクションの確認を実⾏しています。
---> パッケージ pg_repack94.x86_64 0:1.4.3-1.rhel7 を インストール--> 依存性解決を終了しました。

|

依存性を解決しました=========================================================================================================
Package
アーキテクチャーバージョン
リポジトリー
容量=========================================================================================================
インストール中:
pg_repack94
x86_64
1.4.3-1.rhel7
pgdg9484 k
トランザクションの要約=========================================================================================================
インストール 1 パッケージ
総ダウンロード容量: 84 k
インストール容量: 230 k
Is this ok [y/d/N]: y
Downloading packages:
pg_repack94-1.4.3-1.rhel7.x86_64.rpm
84 kB 00:00:02
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中: pg_repack94-1.4.3-1.rhel7.x86_64
1/1
検証中: pg_repack94-1.4.3-1.rhel7.x86_64
1/1
インストール:
pg_repack94.x86_64 0:1.4.3-1.rhel7
完了しました!

データベースへの登録
ここでは、テストのために専⽤のデータベースを作成し、そこに登録します。
[postgres@node94 ~]$ createdb repack[postgres@node94 ~]$ psql -d repack
17 / 72|

Appendix_Log_PostgreSQL9.4to12.md

psql (9.4.26)"help" でヘルプを表⽰します.
repack=# CREATE EXTENSION pg_repack;
CREATE EXTENSION
repack=# \dx
インストール済みの拡張の⼀覧
名前| バージョン | スキーマ |説明-----------+------------+------------+------------------------------------------------------------pg_repack | 1.4.3| public| Reorganize tables in PostgreSQL databaseswith minimal locks
plpgsql| 1.0| pg_catalog | PL/pgSQL procedural language(2 ⾏)

パラメーター修正なし
⽣成されるスキーマ

repack=# \dn
スキーマ⼀覧
名前 | 所有者--------+---------public | postgres
repack | postgres(2 ⾏)
repack=# \d repack.*
ビュー "repack.primary_keys"
列| 型 | 修飾語------------+-----+-------indrelid| oid |
indexrelid | oid |ビュー "repack.tables"
列| 型 | 修飾語-------------------+------+-------relname| text |relid| oid |
reltoastrelid| oid |
reltoastidxid| oid |
schemaname| name |pkid| oid |ckid
| oid |
create_pktype| text |create_log| text |create_trigger| text |enable_trigger| text |create_table_1| text |18 / 72

Appendix_Log_PostgreSQL9.4to12.md

tablespace_orig| text |create_table_2| text |copy_data| text |alter_col_storage | text |drop_columns| text |delete_log| text |lock_table| text |ckey| text |sql_peek| text |sql_insert| text |sql_delete| text |sql_update| text |sql_pop| text |動作確認[postgres@node94 ~]$ pg_repack -d repack -e
LOG: (query) SET search_path TO pg_catalog, pg_temp
LOG: (query) SET search_path TO pg_catalog, pg_temp
LOG: (query) select repack.version(), repack.version_sql()
LOG: (query) SET statement_timeout = 0
LOG: (query) SET search_path = pg_catalog, pg_temp, public
LOG: (query) SET client_min_messages = warning
LOG: (query) SELECT t.*, coalesce(v.tablespace, t.tablespace_orig) as
tablespace_dest FROM repack.tables t, (VALUES (quote_ident($1::text))) as v
(tablespace) WHERE pkid IS NOT NULL ORDER BY t.relname, t.schemaname
LOG:(param:0) = (null)

1.2.5. pg_rman
インストール[root@node94 extensions]# rpm -ivh pg_rman-1.3.3-1.pg94.rhel7.x86_64.rpm
準備しています...
################################# [100%]
更新中 / インストール中...
1:pg_rman-1.3.3-1.pg94.rhel7################################# [100%][postgres@node94 ~]$ pg_rman --version
pg_rman 1.3.3

データベースへの登録なし
パラメーター修正

log_directory = 'pg_log'
wal_level = archive
19 / 72

Appendix_Log_PostgreSQL9.4to12.md

archive_mode = onarchive_command = 'cp %p /var/lib/pgsql/9.4/archive/%f'

⽣成されるスキーマなし
動作確認
バックアップカタログの初期化と、設定ファイルへいくつかパラメーターを追記します（パラメーターの値は⼀例です）。
[postgres@node94 ~]$ pg_rman init -B /var/lib/pgsql/9.4/backups -D $PGDATA -A/var/lib/pgsql/9.4/archive
INFO: ARCLOG_PATH is set to '/var/lib/pgsql/9.4/archive'
INFO: SRVLOG_PATH is set to '/var/lib/pgsql/9.4/data/pg_log'[postgres@node94 backups]$ cat pg_rman.ini
ARCLOG_PATH='/var/lib/pgsql/9.4/archive'
SRVLOG_PATH='/var/lib/pgsql/9.4/data/pg_log'
BACKUP_MODE = F
COMPRESS_DATA = YES
KEEP_ARCLOG_FILES = 10
KEEP_DATA_GENERATIONS = 3
KEEP_SRVLOG_FILES = 10
バックアップ実⾏。
[postgres@node94 ~]$ pg_rman backup -v -B /var/lib/pgsql/9.4/backups========================================
backup start---------------------------------------# configuration
BACKUP_MODE=FULL
FULL_BACKUP_ON_ERROR=false
WITH_SERVERLOG=false
COMPRESS_DATA=true---------------------------------------INFO: copying database files(1/1536) PG_VERSION compressed 12 (300.00% of 4)(2/1536) backup_label compressed 158 (71.82% of 220)(3/1536) base directory(4/1536) base/1 directory(5/1536) base/1/12791 compressed 39557 (30.18% of 131072)
...
（省略）
...
(1532/1536) postgresql.auto.conf compressed 91 (103.41% of 88)(1533/1536) postgresql.conf compressed 6598 (31.40% of 21011)
20 / 72

Appendix_Log_PostgreSQL9.4to12.md(1534/1536) postgresql.conf.org compressed 6545 (31.23% of 20955)(1535/1536) postmaster.opts compressed 61 (103.39% of 59)(1536/1536) postmaster.pid compressed 90 (93.75% of 96)
database backup completed(read: 42778153 write: 4956932)================================================================================
INFO: copying archived WAL files(1/6) 000000010000000000000001 compressed 2111297 (12.58% of 16777216)(2/6) 000000010000000000000002 compressed 26990 (0.16% of 16777216)(3/6) 000000010000000000000002.00000028.backup compressed 174 (55.06% of 316)
(4/6) 000000010000000000000003 compressed 26951 (0.16% of 16777216)(5/6) 000000010000000000000004 compressed 26989 (0.16% of 16777216)(6/6) 000000010000000000000004.00000028.backup compressed 173 (54.75% of 316)
archived WAL backup completed(read: 67109496 write: 2192574)========================================
all backup completed(read: 109887649 write: 7149506)========================================
INFO: backup complete
INFO: Please execute 'pg_rman validate' to verify the files are correctly copied.
INFO: start deleting old archived WAL files from ARCLOG_PATH (keep files = 10)
INFO: start deleting old backup (keep generations = 3)
INFO: does not include the backup just taken========================================
delete online WAL backup========================================
delete symbolic link in archive directory

1.2.6. pg_statsinfo
インストール[root@node94 extensions]# rpm -ivh pg_statsinfo-3.2.1-1.pg94.rhel7.x86_64.rpm
準備しています...
################################# [100%]
更新中 / インストール中...
1:pg_statsinfo-3.2.1-1.pg94.rhel7 ################################# [100%][root@node94 extensions]# rpm -qs pg_statsinfo
通常/usr/pgsql-9.4/bin/archive_pglog.sh
通常/usr/pgsql-9.4/bin/pg_statsinfo
通常/usr/pgsql-9.4/bin/pg_statsinfod
通常/usr/pgsql-9.4/lib/pg_statsinfo.so
通常/usr/pgsql-9.4/share/contrib/pg_statsinfo.sql
通常/usr/pgsql-9.4/share/contrib/pg_statsrepo.sql
通常/usr/pgsql-9.4/share/contrib/pg_statsrepo_alert.sql
通常/usr/pgsql-9.4/share/contrib/uninstall_pg_statsinfo.sql
通常/usr/pgsql-9.4/share/contrib/uninstall_pg_statsrepo.sql

データベースへの登録なし
21 / 72

Appendix_Log_PostgreSQL9.4to12.md

パラメーター修正
ここでは、最⼩限のパラメーター修正にとどめる。
postgresql.conf
shared_preload_libraries = 'pg_dbms_stats, pg_hint_plan, pg_statsinfo'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_min_messages = info
pg_hba.conf# TYPE
local

DATABASE
all

USER
postgres

ADDRESSMETHOD
ident

⽣成されるスキーマ
postgresデータベースに、statsinfoとstatsrepoというスキーマが⽣成される。 スキーマ内に、表などのオブジェクトが多数⽣成される。 下記はその抜粋。
postgres=# \dn
スキーマ⼀覧
名前| 所有者-----------+---------public| postgres
statsinfo | postgres
statsrepo | postgres(3 ⾏)
postgres=# \dt statsrepo.*
リレーションの⼀覧
スキーマ |
名前|型| 所有者-----------+--------------------+----------+---------statsrepo | activity| テーブル | postgres
statsrepo | alert| テーブル | postgres
statsrepo | alert_message| テーブル | postgres
statsrepo | archive| テーブル | postgres
statsrepo | autoanalyze| テーブル | postgres
statsrepo | autoanalyze_cancel | テーブル | postgres
statsrepo | autovacuum| テーブル | postgres
statsrepo | autovacuum_cancel | テーブル | postgres
statsrepo | checkpoint| テーブル | postgres
statsrepo | column| テーブル | postgres
statsrepo | cpu| テーブル | postgres
statsrepo | database| テーブル | postgres
statsrepo | device| テーブル | postgres
statsrepo | function| テーブル | postgres
statsrepo | index| テーブル | postgres
22 / 72

Appendix_Log_PostgreSQL9.4to12.md

statsrepo | inherits
statsrepo | instancestatsrepo | loadavg
statsrepo | lockstatsrepo | log
statsrepo | memory
statsrepo | planstatsrepo | profilestatsrepo | replication
statsrepo | rolestatsrepo | schemastatsrepo | settingstatsrepo | snapshotstatsrepo | statement
statsrepo | tablestatsrepo | tablespacestatsrepo | xact
statsrepo | xlog
(33 ⾏)| テーブル | postgres| テーブル | postgres| テーブル | postgres| テーブル | postgres| テーブル | postgres| テーブル | postgres| テーブル | postgres| テーブル | postgres| テーブル | postgres| テーブル | postgres| テーブル | postgres| テーブル | postgres| テーブル | postgres| テーブル | postgres| テーブル | postgres| テーブル | postgres| テーブル | postgres| テーブル | postgres

postgres=# \dv statsrepo.*
リレーションの⼀覧
スキーマ | 名前|型| 所有者-----------+---------+--------+---------statsrepo | indexes | ビュー | postgres
statsrepo | tables | ビュー | postgres(2 ⾏)
postgres=# \ds statsrepo.*
リレーションの⼀覧
スキーマ |
名前|型| 所有者-----------+---------------------+------------+---------statsrepo | instance_instid_seq | シーケンス | postgres
statsrepo | snapshot_snapid_seq | シーケンス | postgres
(2 ⾏)

動作確認

[root@node94 extensions]# ps -ef | grep pg_statsinfod | grep -v grep
postgres 26386 26370 0 05:54 ?
00:00:52 /usr/pgsql-9.4/bin/pg_statsinfod
26369

1.2.7. pg_bulkload
インストール[root@node94 extensions]# rpm -ivh pg_bulkload-3.1.8-1.pg94.rhel7.x86_64.rpm
準備しています...
################################# [100%]
更新中 / インストール中...
1:pg_bulkload-3.1.8-1.pg94.rhel7################################# [100%]
23 / 72

Appendix_Log_PostgreSQL9.4to12.md[root@node94 extensions]# rpm -qs pg_bulkload
通常/usr/pgsql-9.4/bin/pg_bulkload
通常/usr/pgsql-9.4/bin/postgresql
通常/usr/pgsql-9.4/lib/pg_bulkload.so
通常/usr/pgsql-9.4/share/contrib/pg_bulkload.sql
通常/usr/pgsql-9.4/share/contrib/sample_bin.ctl
通常/usr/pgsql-9.4/share/contrib/sample_csv.ctl
通常/usr/pgsql-9.4/share/contrib/uninstall_pg_bulkload.sql
通常/usr/pgsql-9.4/share/extension/pg_bulkload--1.0.sql
通常/usr/pgsql-9.4/share/extension/pg_bulkload--unpackaged--1.0.sql
通常/usr/pgsql-9.4/share/extension/pg_bulkload.control

データベースへの登録
ここでは、テストのために専⽤のデータベースを作成し、そこに登録する。
[postgres@node94 ~]$ createdb bulkload[postgres@node94 ~]$ psql -d bulkload;
psql (9.4.26)"help" でヘルプを表⽰します.
bulkload=# CREATE EXTENSION pg_bulkload;
CREATE EXTENSION
bulkload=# \dx
インストール済みの拡張の⼀覧
名前| バージョン | スキーマ |説明-------------+------------+------------+---------------------------------------------------------------pg_bulkload | 1.0| public| pg_bulkload is a high speed data loading
utility for PostgreSQL
plpgsql| 1.0| pg_catalog | PL/pgSQL procedural language(2 ⾏)

パラメーター修正なし。
⽣成されるスキーマ
スキーマはpublicが利⽤され、ファンクションが1個作られる。
bulkload=# \dn
スキーマ⼀覧
名前 | 所有者--------+---------public | postgres(1 ⾏)
24 / 72

Appendix_Log_PostgreSQL9.4to12.md

bulkload=# \df
関数⼀覧-[ RECORD 1 ]--+------------------------------------------------------------------------------------スキーマ| public
名前| pg_bulkload
結果のデータ型 | record
引数のデータ型 | options text[], OUT skip bigint, OUT count bigint, OUT parse_errors
bigint, OUT duplicate_new bigint, OUT duplicate_old bigint, OUT system_time double
precision, OUT user_time double precision, OUT duration double precision型| normal（通常）1.3. テストデータの投⼊
テストデータとして、pgbenchでデータを投⼊する。 スケールを200に設定することで、約3GBのデータベー
スクラスタになる。
[postgres@node94 ~]$ pgbench -i -q -s 200 bench
NOTICE: table "pgbench_history" does not exist, skipping
NOTICE: table "pgbench_tellers" does not exist, skipping
NOTICE: table "pgbench_accounts" does not exist, skipping
NOTICE: table "pgbench_branches" does not exist, skipping
creating tables...
1589900 of 20000000 tuples (7%) done (elapsed 5.23 s, remaining 60.59 s).
3118400 of 20000000 tuples (15%) done (elapsed 10.01 s, remaining 54.22 s).
4683100 of 20000000 tuples (23%) done (elapsed 15.01 s, remaining 49.09 s).
6179200 of 20000000 tuples (30%) done (elapsed 20.00 s, remaining 44.73 s).
7754200 of 20000000 tuples (38%) done (elapsed 25.01 s, remaining 39.50 s).
9248000 of 20000000 tuples (46%) done (elapsed 30.00 s, remaining 34.88 s).
10770500 of 20000000 tuples (53%) done (elapsed 35.15 s, remaining 30.12 s).
12325400 of 20000000 tuples (61%) done (elapsed 40.02 s, remaining 24.92 s).
13834300 of 20000000 tuples (69%) done (elapsed 45.00 s, remaining 20.06 s).
15440700 of 20000000 tuples (77%) done (elapsed 50.24 s, remaining 14.84 s).
16963600 of 20000000 tuples (84%) done (elapsed 55.01 s, remaining 9.85 s).
18459600 of 20000000 tuples (92%) done (elapsed 60.07 s, remaining 5.01 s).
19873300 of 20000000 tuples (99%) done (elapsed 65.01 s, remaining 0.41 s).
20000000 of 20000000 tuples (100%) done (elapsed 65.31 s, remaining 0.00 s).
vacuum...
set primary keys...
done.

postgres=# SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM
pg_database;datname| pg_size_pretty------------+---------------template1 | 6828 kB
template0 | 6705 kB
postgres| 7988 kB
dbms_stats | 7140 kB
25 / 72

Appendix_Log_PostgreSQL9.4to12.md

hint_plan
repackstatsinfo
bulkload
bench
(9 ⾏)

| 6884 kB| 6868 kB| 6828 kB| 6828 kB| 2998 MB

1.4. メジャーバージョンアップ準備
データベースクラスタ移⾏の前に、各機能拡張のアンインストールを実施します。 なお、アンインストールにともなうパラメーターの修正は、最⼩限の修正にとどめています。

1.4.1. pg_dbms_stats
アンインストール[postgres@node94 pg_dbms_stats-REL1_3_7]$ su
パスワード:[root@node94 pg_dbms_stats-REL1_3_7]# make uninstall
rm -f '/usr/pgsql-9.4/lib/pg_dbms_stats.so'
rm -f '/usr/pgsql-9.4/share/extension'/pg_dbms_stats.control
rm -f '/usr/pgsql-9.4/share/extension'/pg_dbms_stats--1.3.6--1.3.7.sql '/usr/pgsql9.4/share/extension'/pg_dbms_stats--1.3.7.sql
rm -f '/usr/pgsql-9.4/doc/extension'/doc/export_effective_stats-9.4.sql.sample'/usr/pgsql-9.4/doc/extension'/doc/export_plain_stats-9.4.sql.sample[root@node94 pg_dbms_stats-REL1_3_7]# exit
exit

[postgres@node94 pg_dbms_stats-REL1_3_7]$ psql -d dbms_stats
psql (9.4.26)"help" でヘルプを表⽰します.
dbms_stats=# DROP EXTENSION pg_dbms_stats;
DROP EXTENSION
dbms_stats=# DROP SCHEMA dbms_stats;
DROP SCHEMA
dbms_stats=# \q

パラメーター修正
shared_preload_librariesパラメーターから、pg_dbms_statsを削除する。

1.4.2. pg_hint_plan
アンインストール[postgres@node94 pg_hint_plan-REL94_1_1_5]$ su
パスワード:
26 / 72

Appendix_Log_PostgreSQL9.4to12.md[root@node94 pg_hint_plan-REL94_1_1_5]# make uninstall
rm -f '/usr/pgsql-9.4/share/extension'/pg_hint_plan.control
rm -f '/usr/pgsql-9.4/share/extension'/pg_hint_plan--1.1.5.sql '/usr/pgsql9.4/share/extension'/pg_hint_plan--1.1.4--1.1.5.sql '/usr/pgsql9.4/share/extension'/pg_hint_plan--1.1.3--1.1.4.sql '/usr/pgsql9.4/share/extension'/pg_hint_plan--1.1.2--1.1.3.sql
rm -f '/usr/pgsql-9.4/lib'/pg_hint_plan.so[root@node94 pg_hint_plan-REL94_1_1_5]# exit
exit

[postgres@node94 pg_hint_plan-REL94_1_1_5]$ psql -d hint_plan
psql (9.4.26)"help" でヘルプを表⽰します.
hint_plan=# DROP EXTENSION pg_hint_plan;
DROP EXTENSION
hint_plan=# DROP SCHEMA hint_plan;
DROP SCHEMA
hint_plan=# \q

パラメーター修正
shared_preload_librariesパラメーターから、pg_hint_planを削除する。

1.4.3. pgBadger
アンインストール[root@node94 ~]# yum remove pgbadger-10.2-1.rhel7.noarch
読み込んだプラグイン:fastestmirror, langpacks
依存性の解決をしています--> トランザクションの確認を実⾏しています。
---> パッケージ pgbadger.noarch 0:10.2-1.rhel7 を 削除--> 依存性解決を終了しました。
依存性を解決しました======================================================================================================
Package
アーキテクチャーバージョン
リポジトリー
容量======================================================================================================
削除中:
pgbadgernoarch
10.2-1.rhel7@pgdg94
1.3 M
トランザクションの要約======================================================================================================
27 / 72

Appendix_Log_PostgreSQL9.4to12.md

削除

1 パッケージ

インストール容量: 1.3 M
上記の処理を⾏います。よろしいでしょうか？ [y/N]yDownloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告: RPMDB は yum 以外で変更されました。
削除中: pgbadger-10.2-1.rhel7.noarch
1/1
検証中: pgbadger-10.2-1.rhel7.noarch
1/1
削除しました:pgbadger.noarch 0:10.2-1.rhel7
完了しました!

パラメーター修正
今回は修正しません。

1.4.4. pg_repack
アンインストール[postgres@node94 ~]$ psql -d repack
psql (9.4.26)"help" でヘルプを表⽰します.
repack=# DROP EXTENSION pg_repack;
DROP EXTENSION
repack=# \q[root@node94 ~]# yum remove pg_repack94-1.4.3-1.rhel7.x86_64
読み込んだプラグイン:fastestmirror, langpacks
依存性の解決をしています--> トランザクションの確認を実⾏しています。
---> パッケージ pg_repack94.x86_64 0:1.4.3-1.rhel7 を 削除--> 依存性解決を終了しました。
依存性を解決しました======================================================================================================
Package
アーキテクチャーバージョン
リポジトリー
容量28 / 72

Appendix_Log_PostgreSQL9.4to12.md======================================================================================================
削除中:
pg_repack94
x86_64
1.4.3-1.rhel7@pgdg94230 k
トランザクションの要約======================================================================================================
削除 1 パッケージ
インストール容量: 230 k
上記の処理を⾏います。よろしいでしょうか？ [y/N]yDownloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
削除中: pg_repack94-1.4.3-1.rhel7.x86_64
1/1
検証中: pg_repack94-1.4.3-1.rhel7.x86_64
1/1
削除しました:pg_repack94.x86_64 0:1.4.3-1.rhel7
完了しました!

パラメーター修正なし。

1.4.5. pg_rman
アンインストール[root@node94 ~]# rpm -qs pg_rman-1.3.3-1.pg94.rhel7.x86_64
通常/usr/pgsql-9.4/bin/pg_rman[root@node94 ~]# rpm -e pg_rman-1.3.3-1.pg94.rhel7.x86_64[root@node94 ~]# rpm -qs pg_rman-1.3.3-1.pg94.rhel7.x86_64
パッケージ pg_rman-1.3.3-1.pg94.rhel7.x86_64 はインストールされていません。

パラメーター修正
今回はそのまま。
バックアップカタログやバックアップファイル
今回はそのまま。
29 / 72

Appendix_Log_PostgreSQL9.4to12.md

1.4.6. pg_statsinfo
パラメーター修正
shared_preload_librariesパラメーターから、pg_statsinfoを削除し、PostgreSQLサーバーを再起動する。
アンインストール[postgres@node94 9.4]$ psql -d postgres -f /usr/pgsql9.4/share/contrib/uninstall_pg_statsinfo.sql
psql:/usr/pgsql-9.4/share/contrib/uninstall_pg_statsinfo.sql:7: NOTICE: drop
cascades to 19 other objects
DETAIL: drop cascades to function statsinfo.array_agg(anyelement)
drop cascades to function statsinfo.sample()
drop cascades to function statsinfo.activity()
drop cascades to function statsinfo.long_xact()
drop cascades to function statsinfo.snapshot(text)
drop cascades to function statsinfo.snapshot()
drop cascades to function statsinfo.maintenance(timestamp with time zone)
drop cascades to function statsinfo.tablespaces()
drop cascades to view statsinfo.tablespaces
drop cascades to function statsinfo.start(integer)
drop cascades to function statsinfo.stop(integer)
drop cascades to type statsinfo.cpustats_type
drop cascades to function statsinfo.cpustats(statsinfo.cpustats_type)
drop cascades to function statsinfo.cpustats()
drop cascades to function statsinfo.devicestats()
drop cascades to function statsinfo.loadavg()
drop cascades to function statsinfo.memory()
drop cascades to function statsinfo.profile()
drop cascades to function statsinfo.last_xact_activity()
DROP SCHEMA[postgres@node94 9.4]$ psql -d postgres -f /usr/pgsql9.4/share/contrib/uninstall_pg_statsrepo.sql
psql:/usr/pgsql-9.4/share/contrib/uninstall_pg_statsrepo.sql:7: NOTICE:
cascades to 122 other objects
DETAIL: drop cascades to type statsrepo.elevel
drop cascades to table statsrepo.instancedrop cascades to table statsrepo.snapshot
drop cascades to table statsrepo.tablespace
drop cascades to table statsrepo.databasedrop cascades to table statsrepo.schema
drop cascades to table statsrepo."table"
drop cascades to table statsrepo.index
drop cascades to table statsrepo."column"
drop cascades to table statsrepo.activity
drop cascades to table statsrepo.xact
drop cascades to table statsrepo.setting
drop cascades to table statsrepo.role
drop cascades to table statsrepo.inherits
30 / 72dropAppendix_Log_PostgreSQL9.4to12.md

drop cascades to table statsrepo.statement
drop cascades to table statsrepo.plan
drop cascades to table statsrepo.function
drop cascades to table statsrepo.autovacuum
drop cascades to table statsrepo.autoanalyze
drop cascades to table statsrepo.autovacuum_cancel
drop cascades to table statsrepo.autoanalyze_cancel
drop cascades to table statsrepo.checkpoint
drop cascades to table statsrepo.cpu
drop cascades to table statsrepo.device
drop cascades to table statsrepo.loadavg
drop cascades to table statsrepo.memory
drop cascades to table statsrepo.profile
drop cascades to table statsrepo.lock
drop cascades to table statsrepo.replication
drop cascades to table statsrepo.xlog
drop cascades to table statsrepo.alert_message
drop cascades to table statsrepo.archive
drop cascades to table statsrepo.log
drop cascades to function statsrepo.del_snapshot(bigint)
drop cascades to function statsrepo.del_snapshot(timestamp with time zone)
drop cascades to function statsrepo.del_repolog(timestamp with time zone)
drop cascades to function statsrepo.get_version()drop cascades to function statsrepo.page_size()
drop cascades to function statsrepo.tps(numeric,interval)
drop cascades to function statsrepo.div(numeric,numeric)drop cascades to function statsrepo.sub(anyelement,anyelement)
drop cascades to function statsrepo.convert_hex(text)
drop cascades to function statsrepo.xlog_location_diff(text,text,bigint)
drop cascades to function statsrepo.pg_size_pretty(bigint)
drop cascades to function statsrepo.array_unique(anyarray)
drop cascades to function statsrepo.array_accum(anyarray)
drop cascades to view statsrepo.tables
drop cascades to view statsrepo.indexes
drop cascades to function statsrepo.pg_fillfactor(text[],oid)drop cascades to function statsrepo.get_information(text,text)
drop cascades to function statsrepo.get_repositorydb_setting()
drop cascades to function statsrepo.get_table_option(text)
drop cascades to function statsrepo.get_snapshot_list(bigint)
drop cascades to function statsrepo.get_snapshot_list_refine(bigint)
drop cascades to function statsrepo.get_min_snapid(text,text,timestamp without timezone,timestamp without time zone)
drop cascades to function statsrepo.get_max_snapid(text,text,timestamp without timezone,timestamp without time zone)
drop cascades to function statsrepo.get_min_snapid2(text,timestamp without timezone,timestamp without time zone)
drop cascades to function statsrepo.get_max_snapid2(text,timestamp without timezone,timestamp without time zone)
drop cascades to function statsrepo.get_summary(bigint,bigint)
drop cascades to function statsrepo.get_dbstats(bigint,bigint)
drop cascades to function statsrepo.get_xact_tendency(bigint,bigint)
drop cascades to function statsrepo.get_xact_tendency_report(bigint,bigint)
drop cascades to function statsrepo.get_dbsize_tendency(bigint,bigint)
drop cascades to function statsrepo.get_dbsize_tendency_report(bigint,bigint)
31 / 72

Appendix_Log_PostgreSQL9.4to12.md

drop cascades to function statsrepo.get_recovery_conflicts(bigint,bigint)
drop cascades to function statsrepo.get_proc_ratio(bigint,bigint)
drop cascades to function statsrepo.get_proc_tendency(bigint,bigint)
drop cascades to function statsrepo.get_proc_tendency_report(bigint,bigint)
drop cascades to function statsrepo.get_xlog_tendency(bigint,bigint)
drop cascades to function statsrepo.get_xlog_stats(bigint,bigint)
drop cascades to function statsrepo.get_cpu_usage(bigint,bigint)
drop cascades to function statsrepo.get_cpu_usage_tendency(bigint,bigint)
drop cascades to function statsrepo.get_cpu_usage_tendency_report(bigint,bigint)
drop cascades to function statsrepo.get_cpu_loadavg_tendency(bigint,bigint)
drop cascades to function statsrepo.get_io_usage(bigint,bigint)
drop cascades to function statsrepo.get_io_usage_tendency_report(bigint,bigint)
drop cascades to function statsrepo.get_loadavg_tendency(bigint,bigint)
drop cascades to function statsrepo.get_memory_tendency(bigint,bigint)
drop cascades to function statsrepo.get_disk_usage_tablespace(bigint,bigint)
drop cascades to function statsrepo.get_disk_usage_table(bigint,bigint)
drop cascades to function statsrepo.get_long_transactions(bigint,bigint)
drop cascades to function statsrepo.get_heavily_updated_tables(bigint,bigint)
drop cascades to function statsrepo.get_heavily_accessed_tables(bigint,bigint)
drop cascades to function statsrepo.get_low_density_tables(bigint,bigint)
drop cascades to function statsrepo.get_flagmented_tables(bigint,bigint)
drop cascades to function statsrepo.get_checkpoint_activity(bigint,bigint)
drop cascades to function statsrepo.get_autovacuum_activity(bigint,bigint)
drop cascades to function statsrepo.get_autovacuum_activity2(bigint,bigint)
drop cascades to function statsrepo.get_autoanalyze_stats(bigint,bigint)
drop cascades to function statsrepo.get_modified_row_ratio(bigint,bigint,integer)
drop cascades to function statsrepo.get_query_activity_functions(bigint,bigint)
drop cascades to function statsrepo.get_query_activity_statements(bigint,bigint)
drop cascades to function statsrepo.get_query_activity_plans(bigint,bigint)
drop cascades to function statsrepo.get_query_activity_plans_report(bigint,bigint)
drop cascades to function statsrepo.get_lock_activity(bigint,bigint)
drop cascades to function statsrepo.get_replication_activity(bigint,bigint)
drop cascades to function statsrepo.get_replication_delays(bigint,bigint)
drop cascades to function statsrepo.get_setting_parameters(bigint,bigint)
drop cascades to function statsrepo.get_schema_info_tables(bigint,bigint)
drop cascades to function statsrepo.get_schema_info_indexes(bigint,bigint)
and 22 other objects (see server log for list)
DROP SCHEMA[root@node94 ~]# rpm -e pg_statsinfo-3.2.1-1.pg94.rhel7.x86_64[root@node94 ~]# rpm -qs pg_statsinfo-3.2.1-1.pg94.rhel7.x86_64
パッケージ pg_statsinfo-3.2.1-1.pg94.rhel7.x86_64 はインストールされていません。

1.4.7. pg_bulkload
アンインストール[postgres@node94 9.4]$ psql -d bulkload
psql (9.4.26)"help" でヘルプを表⽰します.
32 / 72

Appendix_Log_PostgreSQL9.4to12.md

bulkload=# DROP EXTENSION pg_bulkload;
DROP EXTENSION
bulkload=# \q[root@node94 ~]# rpm -e pg_bulkload-3.1.8-1.pg94.rhel7.x86_64[root@node94 ~]# rpm -qs pg_bulkload-3.1.8-1.pg94.rhel7.x86_64
パッケージ pg_bulkload-3.1.8-1.pg94.rhel7.x86_64 はインストールされていません。

パラメーター修正なし。

1.5. データベースクラスタの移⾏準備
今回は、参考までにtimeで処理時間を計測してみます。

1.5.1. pg_dump / pg_restoreの場合
移⾏対象は、benchデータベースのみという想定。
[postgres@node94 dump]$ time pg_dump -Fc -f bench.dump bench
real
0m26.418s
user
0m20.784s
sys 0m0.901s[postgres@node94 dump]$ ls -l bench.dump-rw-rw-r-- 1 postgres postgres 56672582 4⽉ 11 18:54 bench.dump
今回検証に利⽤する約3GBのデータベースbenchの場合、約55MBのダンプファイルが30秒弱で⽣成されました。 これを、新サーバーに転送します。

1.5.2. pg_upgradeの場合
データベースクラスタを新サーバーへ移⾏するため、ここではtarで圧縮することにします。 こちらは、データベースクラスタ全体を対象にします。
[root@node94 ~]# systemctl stop postgresql-9.4[postgres@node94 data]$ cd $PGDATA/..
[postgres@node94 9.4]$ time tar -cvzf ~/dump/pgdata94.tar.gz data
data/
data/pg_xlog/
data/pg_xlog/archive_status/
data/pg_xlog/archive_status/000000010000000000000004.00000028.backup.done
data/pg_xlog/archive_status/0000000100000000000000A0.done...
（省略）
33 / 72

Appendix_Log_PostgreSQL9.4to12.md...
data/postgresql.conf.org
data/pg_hba.conf
data/pg_statsinfo.pid
data/pg_statsinfo.control
data/postgresql.conf
real
1m13.859s
user
1m7.344s
sys 0m9.772s[postgres@node94 9.4]$ ls -l ~/dump/pgdata94.tar.gz-rw-rw-r-- 1 postgres postgres 210726843 4⽉ 11 19:13/home/postgres/dump/pgdata94.tar.gz
今回検証に利⽤する約3GBのデータベースbenchの場合、約200MBのtarファイルが1分少々で⽣成されました。 これを、新サーバーに転送します。

2. PostgreSQL 12環境
メジャーバージョンアップ先のPostgreSQL 12環境の構築で実施する作業の詳細。

2.1. PostgreSQL 12のインストール
2.1.1. リポジトリをインストール[root@node94 yum.repos.d]# yum install
https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhatrepo-latest.noarch.rpm -y
読み込んだプラグイン:fastestmirror, langpacks
pgdg-redhat-repo-latest.noarch.rpm|
6.3 kB 00:00:00/var/tmp/yum-root-Qk5LXX/pgdg-redhat-repo-latest.noarch.rpm を調べています: pgdgredhat-repo-42.0-9.noarch/var/tmp/yum-root-Qk5LXX/pgdg-redhat-repo-latest.noarch.rpm をインストール済みとして設定しています
依存性の解決をしています--> トランザクションの確認を実⾏しています。
---> パッケージ pgdg-redhat-repo.noarch 0:42.0-9 を インストール--> 依存性解決を終了しました。
依存性を解決しました=========================================================================================================
Package
アーキテクチャーバージョン
リポジトリー
容量=========================================================================================================
34 / 72

Appendix_Log_PostgreSQL9.4to12.md

インストール中:
pgdg-redhat-repo
latest.noarch

noarch10 k42.0-9/pgdg-redhat-repo-

トランザクションの要約=========================================================================================================
インストール 1 パッケージ
合計容量: 10 k
インストール容量: 10 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中: pgdg-redhat-repo-42.0-9.noarch
1/1
検証中: pgdg-redhat-repo-42.0-9.noarch
1/1
インストール:
pgdg-redhat-repo.noarch 0:42.0-9
完了しました!
JIT関連のために下記もインストールします。
[root@node94 yum.repos.d]# yum install epel-release -y
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: ty1.mirror.newmediaexpress.com* centosplus: ty1.mirror.newmediaexpress.com* extras: ty1.mirror.newmediaexpress.com* updates: ty1.mirror.newmediaexpress.com
依存性の解決をしています--> トランザクションの確認を実⾏しています。
---> パッケージ epel-release.noarch 0:7-11 を インストール--> 依存性解決を終了しました。
依存性を解決しました=========================================================================================================
Package
アーキテクチャーバージョン
リポジトリー
容量=========================================================================================================
インストール中:
epel-releasenoarch7-11
extras15 k

35 / 72

Appendix_Log_PostgreSQL9.4to12.md

トランザクションの要約=========================================================================================================
インストール 1 パッケージ
総ダウンロード容量: 15 k
インストール容量: 24 k
Downloading packages:
epel-release-7-11.noarch.rpm
15 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中: epel-release-7-11.noarch
1/1
検証中: epel-release-7-11.noarch
1/1|

インストール:epel-release.noarch 0:7-11
完了しました!
[root@node94 yum.repos.d]# yum install centos-release-scl -y
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel/x86_64/metalink
9.1 kB 00:00:00* base: ty1.mirror.newmediaexpress.com* centosplus: ty1.mirror.newmediaexpress.com* epel: ftp.iij.ad.jp* extras: ty1.mirror.newmediaexpress.com* updates: ty1.mirror.newmediaexpress.com
epel
4.7 kB 00:00:00(1/3): epel/x86_64/group_gz
95 kB 00:00:00(2/3): epel/x86_64/updateinfo
1.0 MB 00:00:01(3/3): epel/x86_64/primary_db
6.8 MB 00:00:02
依存性の解決をしています--> トランザクションの確認を実⾏しています。
---> パッケージ centos-release-scl.noarch 0:2-3.el7.centos を インストール--> 依存性の処理をしています: centos-release-scl-rh のパッケージ: centos-release-scl-23.el7.centos.noarch--> トランザクションの確認を実⾏しています。
---> パッケージ centos-release-scl-rh.noarch 0:2-3.el7.centos を インストール--> 依存性解決を終了しました。

|

|
|
|
|

依存性を解決しました===================================================================================
36 / 72

Appendix_Log_PostgreSQL9.4to12.md======================
Package
アーキテクチャー バージョン
リポジトリー
容量=========================================================================================================
インストール中:
centos-release-scl
noarch2-3.el7.centos
extras12 k
依存性関連でのインストールをします:
centos-release-scl-rh
noarch2-3.el7.centos
extras
12 k
トランザクションの要約=========================================================================================================
インストール 1 パッケージ (+1 個の依存関係のパッケージ)
総ダウンロード容量: 24 k
インストール容量: 39 k
Downloading packages:(1/2): centos-release-scl-2-3.el7.centos.noarch.rpm|
12 kB 00:00:00(2/2): centos-release-scl-rh-2-3.el7.centos.noarch.rpm|
12 kB 00:00:00-------------------------------------------------------------------------------------------------------合計
64 kB/s |24 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中: centos-release-scl-rh-2-3.el7.centos.noarch
1/2
インストール中: centos-release-scl-2-3.el7.centos.noarch
2/2
検証中: centos-release-scl-2-3.el7.centos.noarch
1/2
検証中: centos-release-scl-rh-2-3.el7.centos.noarch
2/2
インストール:centos-release-scl.noarch 0:2-3.el7.centos
依存性関連をインストールしました:
centos-release-scl-rh.noarch 0:2-3.el7.centos
完了しました!
[root@node94 yum.repos.d]# yum install llvm-toolset-7 llvm-toolset-7-llvm-devel
llvm5.0 -y
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: ty1.mirror.newmediaexpress.com
37 / 72

Appendix_Log_PostgreSQL9.4to12.md* centos-sclo-rh: ty1.mirror.newmediaexpress.com* centos-sclo-sclo: ty1.mirror.newmediaexpress.com* centosplus: ty1.mirror.newmediaexpress.com* epel: nrt.edge.kernel.org* extras: ty1.mirror.newmediaexpress.com* updates: ty1.mirror.newmediaexpress.com
centos-sclo-rh|
3.0 kB 00:00:00
centos-sclo-sclo|
3.0 kB 00:00:00(1/2): centos-sclo-sclo/x86_64/primary_db|
284 kB 00:00:00(2/2): centos-sclo-rh/x86_64/primary_db|
4.2 MB 00:00:00
依存性の解決をしています--> トランザクションの確認を実⾏しています。
---> パッケージ llvm-toolset-7.x86_64 0:5.0.1-4.el7 を インストール--> 依存性の処理をしています: llvm-toolset-7-llvm = 5.0.1 のパッケージ: llvm-toolset-75.0.1-4.el7.x86_64--> 依存性の処理をしています: llvm-toolset-7-lldb = 5.0.1 のパッケージ: llvm-toolset-75.0.1-4.el7.x86_64--> 依存性の処理をしています: llvm-toolset-7-clang = 5.0.1 のパッケージ: llvm-toolset-75.0.1-4.el7.x86_64--> 依存性の処理をしています: llvm-toolset-7-runtime のパッケージ: llvm-toolset-7-5.0.14.el7.x86_64--> 依存性の処理をしています: llvm-toolset-7-python-lit のパッケージ: llvm-toolset-7-5.0.14.el7.x86_64---> パッケージ llvm-toolset-7-llvm-devel.x86_64 0:5.0.1-8.el7 を インストール--> 依存性の処理をしています: llvm-toolset-7-llvm-libs = 5.0.1-8.el7 のパッケージ: llvmtoolset-7-llvm-devel-5.0.1-8.el7.x86_64--> 依存性の処理をしています: libLLVM-5.0.so(LLVM_5.0)(64bit) のパッケージ: llvm-toolset-7llvm-devel-5.0.1-8.el7.x86_64--> 依存性の処理をしています: libLLVM-5.0.so()(64bit) のパッケージ: llvm-toolset-7-llvmdevel-5.0.1-8.el7.x86_64---> パッケージ llvm5.0.x86_64 0:5.0.1-7.el7 を インストール--> 依存性の処理をしています: llvm5.0-libs(x86-64) = 5.0.1-7.el7 のパッケージ: llvm5.05.0.1-7.el7.x86_64--> トランザクションの確認を実⾏しています。
---> パッケージ llvm-toolset-7-clang.x86_64 0:5.0.1-4.el7 を インストール--> 依存性の処理をしています: llvm-toolset-7-clang-libs(x86-64) = 5.0.1-4.el7 のパッケージ:
llvm-toolset-7-clang-5.0.1-4.el7.x86_64--> 依存性の処理をしています: libclang.so.5(LLVM_5.0)(64bit) のパッケージ: llvm-toolset-7clang-5.0.1-4.el7.x86_64--> 依存性の処理をしています: libclangToolingCore.so.5()(64bit) のパッケージ: llvm-toolset7-clang-5.0.1-4.el7.x86_64--> 依存性の処理をしています: libclangTooling.so.5()(64bit) のパッケージ: llvm-toolset-7clang-5.0.1-4.el7.x86_64--> 依存性の処理をしています: libclangStaticAnalyzerFrontend.so.5()(64bit) のパッケージ:
llvm-toolset-7-clang-5.0.1-4.el7.x86_64--> 依存性の処理をしています: libclangSerialization.so.5()(64bit) のパッケージ: llvmtoolset-7-clang-5.0.1-4.el7.x86_64--> 依存性の処理をしています: libclangRewriteFrontend.so.5()(64bit) のパッケージ: llvmtoolset-7-clang-5.0.1-4.el7.x86_64--> 依存性の処理をしています: libclangRewrite.so.5()(64bit) のパッケージ: llvm-toolset-738 / 72

Appendix_Log_PostgreSQL9.4to12.md

clang-5.0.1-4.el7.x86_64--> 依存性の処理をしています: libclangParse.so.5()(64bit) のパッケージ: llvm-toolset-7clang-5.0.1-4.el7.x86_64--> 依存性の処理をしています: libclangLex.so.5()(64bit) のパッケージ: llvm-toolset-7-clang5.0.1-4.el7.x86_64--> 依存性の処理をしています: libclangIndex.so.5()(64bit) のパッケージ: llvm-toolset-7clang-5.0.1-4.el7.x86_64--> 依存性の処理をしています: libclangFrontendTool.so.5()(64bit) のパッケージ: llvm-toolset7-clang-5.0.1-4.el7.x86_64--> 依存性の処理をしています: libclangFrontend.so.5()(64bit) のパッケージ: llvm-toolset-7clang-5.0.1-4.el7.x86_64--> 依存性の処理をしています: libclangFormat.so.5()(64bit) のパッケージ: llvm-toolset-7clang-5.0.1-4.el7.x86_64--> 依存性の処理をしています: libclangDriver.so.5()(64bit) のパッケージ: llvm-toolset-7clang-5.0.1-4.el7.x86_64--> 依存性の処理をしています: libclangCodeGen.so.5()(64bit) のパッケージ: llvm-toolset-7clang-5.0.1-4.el7.x86_64--> 依存性の処理をしています: libclangBasic.so.5()(64bit) のパッケージ: llvm-toolset-7clang-5.0.1-4.el7.x86_64--> 依存性の処理をしています: libclangAST.so.5()(64bit) のパッケージ: llvm-toolset-7-clang5.0.1-4.el7.x86_64--> 依存性の処理をしています: libclang.so.5()(64bit) のパッケージ: llvm-toolset-7-clang5.0.1-4.el7.x86_64---> パッケージ llvm-toolset-7-lldb.x86_64 0:5.0.1-4.el7 を インストール---> パッケージ llvm-toolset-7-llvm.x86_64 0:5.0.1-8.el7 を インストール---> パッケージ llvm-toolset-7-llvm-libs.x86_64 0:5.0.1-8.el7 を インストール---> パッケージ llvm-toolset-7-python2-lit.noarch 0:0.5.1-1.el7 を インストール---> パッケージ llvm-toolset-7-runtime.x86_64 0:5.0.1-4.el7 を インストール---> パッケージ llvm5.0-libs.x86_64 0:5.0.1-7.el7 を インストール--> トランザクションの確認を実⾏しています。
---> パッケージ llvm-toolset-7-clang-libs.x86_64 0:5.0.1-4.el7 を インストール--> 依存性の処理をしています: llvm-toolset-7-libomp(x86-64) >= 5.0.1 のパッケージ: llvmtoolset-7-clang-libs-5.0.1-4.el7.x86_64--> 依存性の処理をしています: llvm-toolset-7-compiler-rt(x86-64) >= 5.0.1 のパッケージ:
llvm-toolset-7-clang-libs-5.0.1-4.el7.x86_64--> 依存性の処理をしています: devtoolset-7-libstdc++-devel のパッケージ: llvm-toolset-7clang-libs-5.0.1-4.el7.x86_64--> 依存性の処理をしています: devtoolset-7-gcc-c++ のパッケージ: llvm-toolset-7-clang-libs5.0.1-4.el7.x86_64--> トランザクションの確認を実⾏しています。
---> パッケージ devtoolset-7-gcc-c++.x86_64 0:7.3.1-5.16.el7 を インストール--> 依存性の処理をしています: devtoolset-7-gcc = 7.3.1-5.16.el7 のパッケージ: devtoolset-7gcc-c++-7.3.1-5.16.el7.x86_64--> 依存性の処理をしています: devtoolset-7-runtime のパッケージ: devtoolset-7-gcc-c++-7.3.15.16.el7.x86_64---> パッケージ devtoolset-7-libstdc++-devel.x86_64 0:7.3.1-5.16.el7 を インストール---> パッケージ llvm-toolset-7-compiler-rt.x86_64 0:5.0.1-2.el7 を インストール---> パッケージ llvm-toolset-7-libomp.x86_64 0:5.0.1-2.el7 を インストール--> トランザクションの確認を実⾏しています。
---> パッケージ devtoolset-7-gcc.x86_64 0:7.3.1-5.16.el7 を インストール--> 依存性の処理をしています: devtoolset-7-binutils >= 2.22.52.0.1 のパッケージ: devtoolset7-gcc-7.3.1-5.16.el7.x86_64---> パッケージ devtoolset-7-runtime.x86_64 0:7.1-4.el7 を インストール--> トランザクションの確認を実⾏しています。
39 / 72

Appendix_Log_PostgreSQL9.4to12.md---> パッケージ devtoolset-7-binutils.x86_64 0:2.28-11.el7 を インストール--> 依存性解決を終了しました。
依存性を解決しました=========================================================================================================
Package
アーキテクチャーバージョン
リポジトリー
容量=========================================================================================================
インストール中:
llvm-toolset-7
x86_645.0.1-4.el7
centossclo-rh
3.9 k
llvm-toolset-7-llvm-devel
x86_645.0.1-8.el7
centossclo-rh
2.3 M
llvm5.0
x86_645.0.1-7.el7
epel
2.6 M
依存性関連でのインストールをします:
devtoolset-7-binutils
x86_642.28-11.el7
centossclo-rh
5.3 M
devtoolset-7-gcc
x86_647.3.1-5.16.el7
centossclo-rh
29 M
devtoolset-7-gcc-c++x86_647.3.1-5.16.el7
centossclo-rh
11 M
devtoolset-7-libstdc++-devel
x86_647.3.1-5.16.el7
centossclo-rh
2.5 M
devtoolset-7-runtime
x86_64
7.1-4.el7
centossclo-rh
20 k
llvm-toolset-7-clang
x86_645.0.1-4.el7
centossclo-rh
545 k
llvm-toolset-7-clang-libs
x86_645.0.1-4.el7
centossclo-rh
13 M
llvm-toolset-7-compiler-rt
x86_645.0.1-2.el7
centossclo-rh
1.7 M
llvm-toolset-7-libomp
x86_645.0.1-2.el7
centossclo-rh
246 k
llvm-toolset-7-lldb
x86_645.0.1-4.el7
centossclo-rh
5.0 M
llvm-toolset-7-llvm
x86_645.0.1-8.el7
centossclo-rh
2.6 M
llvm-toolset-7-llvm-libs
x86_645.0.1-8.el7
centossclo-rh
13 M
llvm-toolset-7-python2-lit
noarch
0.5.1-1.el7
centossclo-rh
99 k
llvm-toolset-7-runtime
x86_645.0.1-4.el7
centossclo-rh
1.1 M
llvm5.0-libs
x86_645.0.1-7.el7
epel
13 M
トランザクションの要約=========================================================================================================
40 / 72

Appendix_Log_PostgreSQL9.4to12.md

インストール

3 パッケージ (+15 個の依存関係のパッケージ)

総ダウンロード容量: 104 M
インストール容量: 350 M
Downloading packages:
警告: /var/cache/yum/x86_64/7/centos-sclo-rh/packages/devtoolset-7-runtime-7.14.el7.x86_64.rpm: ヘッダー V4 RSA/SHA1 Signature、鍵 ID f2ee9d55: NOKEY
devtoolset-7-runtime-7.1-4.el7.x86_64.rpm の公開鍵がインストールされていません(1/18): devtoolset-7-runtime-7.1-4.el7.x86_64.rpm|
20 kB 00:00:00(2/18): llvm-toolset-7-5.0.1-4.el7.x86_64.rpm|
3.9 kB 00:00:00(3/18): devtoolset-7-binutils-2.28-11.el7.x86_64.rpm|
5.3 MB 00:00:01(4/18): devtoolset-7-gcc-c++-7.3.1-5.16.el7.x86_64.rpm|
11 MB 00:00:03(5/18): llvm-toolset-7-compiler-rt-5.0.1-2.el7.x86_64.rpm|
1.7 MB 00:00:00(6/18): llvm-toolset-7-libomp-5.0.1-2.el7.x86_64.rpm|
246 kB 00:00:00(7/18): llvm-toolset-7-clang-5.0.1-4.el7.x86_64.rpm|
545 kB 00:00:04(8/18): llvm-toolset-7-clang-libs-5.0.1-4.el7.x86_64.rpm|
13 MB 00:00:04(9/18): llvm-toolset-7-lldb-5.0.1-4.el7.x86_64.rpm|
5.0 MB 00:00:02(10/18): llvm-toolset-7-llvm-devel-5.0.1-8.el7.x86_64.rpm|
2.3 MB 00:00:00(11/18): llvm-toolset-7-python2-lit-0.5.1-1.el7.noarch.rpm|
99 kB 00:00:00(12/18): llvm-toolset-7-llvm-libs-5.0.1-8.el7.x86_64.rpm|
13 MB 00:00:02(13/18): llvm-toolset-7-runtime-5.0.1-4.el7.x86_64.rpm|
1.1 MB 00:00:01(14/18): devtoolset-7-libstdc++-devel-7.3.1-5.16.el7.x86_64.rpm|
2.5 MB 00:00:10
警告: /var/cache/yum/x86_64/7/epel/packages/llvm5.0-5.0.1-7.el7.x86_64.rpm: ヘッダー V3
RSA/SHA256 Signature、鍵 ID 352c64e5: NOKEY
llvm5.0-5.0.1-7.el7.x86_64.rpm の公開鍵がインストールされていません(15/18): llvm5.0-5.0.1-7.el7.x86_64.rpm|
2.6 MB 00:00:02(16/18): llvm-toolset-7-llvm-5.0.1-8.el7.x86_64.rpm|
2.6 MB 00:00:06(17/18): llvm5.0-libs-5.0.1-7.el7.x86_64.rpm|
13 MB 00:00:04(18/18): devtoolset-7-gcc-7.3.1-5.16.el7.x86_64.rpm|
29 MB 00:00:22-------------------------------------------------------------------------------------------------------合計
4.7 MB/s |104 MB 00:00:22
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo から鍵を取得中です。
Importing GPG key 0xF2EE9D55:
Userid: "CentOS SoftwareCollections SIG
41 / 72

Appendix_Log_PostgreSQL9.4to12.md(https://wiki.centos.org/SpecialInterestGroup/SCLo) <security@centos.org>"
Fingerprint: c4db d535 b1fb ba14 f8ba 64a8 4eb8 4e71 f2ee 9d55
Package: centos-release-scl-rh-2-3.el7.centos.noarch (@extras)
From: /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 から鍵を取得中です。
Importing GPG key 0x352C64E5:
Userid: "Fedora EPEL (7) <epel@fedoraproject.org>"
Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5
Package: epel-release-7-11.noarch (@extras)
From: /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中: llvm-toolset-7-runtime-5.0.1-4.el7.x86_64
1/18
インストール中: llvm5.0-libs-5.0.1-7.el7.x86_64
2/18
インストール中: llvm-toolset-7-llvm-libs-5.0.1-8.el7.x86_64
3/18
インストール中: devtoolset-7-runtime-7.1-4.el7.x86_64
4/18
インストール中: devtoolset-7-libstdc++-devel-7.3.1-5.16.el7.x86_64
5/18
インストール中: llvm-toolset-7-llvm-5.0.1-8.el7.x86_64
6/18
インストール中: devtoolset-7-binutils-2.28-11.el7.x86_64
7/18
インストール中: llvm-toolset-7-libomp-5.0.1-2.el7.x86_64
8/18
インストール中: llvm-toolset-7-python2-lit-0.5.1-1.el7.noarch
9/18
インストール中: llvm-toolset-7-compiler-rt-5.0.1-2.el7.x86_64
10/18
インストール中: llvm-toolset-7-llvm-devel-5.0.1-8.el7.x86_64
11/18
インストール中: llvm5.0-5.0.1-7.el7.x86_64
12/18
インストール中: devtoolset-7-gcc-7.3.1-5.16.el7.x86_64
13/18
インストール中: devtoolset-7-gcc-c++-7.3.1-5.16.el7.x86_64
14/18
インストール中: llvm-toolset-7-clang-libs-5.0.1-4.el7.x86_64
15/18
インストール中: llvm-toolset-7-lldb-5.0.1-4.el7.x86_64
16/18
インストール中: llvm-toolset-7-clang-5.0.1-4.el7.x86_64
17/18
インストール中: llvm-toolset-7-5.0.1-4.el7.x86_64
18/18
検証中
: devtoolset-7-gcc-7.3.1-5.16.el7.x86_64
1/18
検証中: llvm-toolset-7-lldb-5.0.1-4.el7.x86_64
2/18
42 / 72

Appendix_Log_PostgreSQL9.4to12.md

検証中
3/18
検証中
4/18
検証中
5/18
検証中
6/18
検証中
7/18
検証中
8/18
検証中
9/18
検証中
10/18
検証中
11/18
検証中
12/18
検証中
13/18
検証中
14/18
検証中
15/18
検証中
16/18
検証中
17/18
検証中
18/18

: devtoolset-7-runtime-7.1-4.el7.x86_64: llvm-toolset-7-runtime-5.0.1-4.el7.x86_64: llvm-toolset-7-clang-5.0.1-4.el7.x86_64: llvm-toolset-7-libomp-5.0.1-2.el7.x86_64: llvm-toolset-7-llvm-5.0.1-8.el7.x86_64: llvm5.0-libs-5.0.1-7.el7.x86_64: devtoolset-7-binutils-2.28-11.el7.x86_64: llvm-toolset-7-llvm-libs-5.0.1-8.el7.x86_64: llvm-toolset-7-clang-libs-5.0.1-4.el7.x86_64: llvm-toolset-7-python2-lit-0.5.1-1.el7.noarch: llvm-toolset-7-compiler-rt-5.0.1-2.el7.x86_64: devtoolset-7-gcc-c++-7.3.1-5.16.el7.x86_64: llvm-toolset-7-llvm-devel-5.0.1-8.el7.x86_64: llvm5.0-5.0.1-7.el7.x86_64: llvm-toolset-7-5.0.1-4.el7.x86_64: devtoolset-7-libstdc++-devel-7.3.1-5.16.el7.x86_64

インストール:llvm-toolset-7.x86_64 0:5.0.1-4.el7
0:5.0.1-8.el7
llvm5.0.x86_64 0:5.0.1-7.el7llvm-toolset-7-llvm-devel.x86_64

依存性関連をインストールしました:
devtoolset-7-binutils.x86_64 0:2.28-11.el7
5.16.el7
devtoolset-7-gcc-c++.x86_64 0:7.3.1-5.16.el7
devel.x86_64 0:7.3.1-5.16.el7
devtoolset-7-runtime.x86_64 0:7.1-4.el7
0:5.0.1-4.el7
llvm-toolset-7-clang-libs.x86_64 0:5.0.1-4.el7
rt.x86_64 0:5.0.1-2.el7
llvm-toolset-7-libomp.x86_64 0:5.0.1-2.el7
0:5.0.1-4.el7
llvm-toolset-7-llvm.x86_64 0:5.0.1-8.el7
0:5.0.1-8.el7
llvm-toolset-7-python2-lit.noarch 0:0.5.1-1.el7
0:5.0.1-4.el7
llvm5.0-libs.x86_64 0:5.0.1-7.el743 / 72

devtoolset-7-gcc.x86_64 0:7.3.1devtoolset-7-libstdc++llvm-toolset-7-clang.x86_64
llvm-toolset-7-compilerllvm-toolset-7-lldb.x86_64
llvm-toolset-7-llvm-libs.x86_64
llvm-toolset-7-runtime.x86_64

Appendix_Log_PostgreSQL9.4to12.md

完了しました!

2.1.2. PostgreSQL 12のインストール[root@node94 yum.repos.d]# yum search postgresql12
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: ty1.mirror.newmediaexpress.com* centosplus: ty1.mirror.newmediaexpress.com* extras: ty1.mirror.newmediaexpress.com* updates: ty1.mirror.newmediaexpress.com======================================= N/S matched: postgresql12=======================================
postgresql12.x86_64 : PostgreSQL client programs and libraries
postgresql12-contrib.x86_64 : Contributed source and binaries distributed with
PostgreSQL
postgresql12-devel.x86_64 : PostgreSQL development header files and libraries
postgresql12-docs.x86_64 : Extra documentation for PostgreSQL
postgresql12-libs.x86_64 : The shared libraries required for any PostgreSQL clients
postgresql12-llvmjit.x86_64 : Just-in-time compilation support for PostgreSQL
postgresql12-odbc.x86_64 : PostgreSQL ODBC driver
postgresql12-plperl.x86_64 : The Perl procedural language for PostgreSQL
postgresql12-plpython.x86_64 : The Python procedural language for PostgreSQL
postgresql12-plpython3.x86_64 : The Python3 procedural language for PostgreSQL
postgresql12-pltcl.x86_64 : The Tcl procedural language for PostgreSQL
postgresql12-server.x86_64 : The programs needed to create and run a PostgreSQL
serverpostgresql12-test.x86_64 : The test suite distributed with PostgreSQL
Name and summary matches only, use "search all" for everything.
[root@node94 yum.repos.d]# yum install postgresql12-server postgresql12
postgresql12-libs postgresql12-contrib postgresql12-devel postgresql12-llvmjit -y
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: ty1.mirror.newmediaexpress.com* centos-sclo-rh: ty1.mirror.newmediaexpress.com* centos-sclo-sclo: ty1.mirror.newmediaexpress.com* centosplus: ty1.mirror.newmediaexpress.com* epel: mirrors.aliyun.com* extras: ty1.mirror.newmediaexpress.com* updates: ty1.mirror.newmediaexpress.com
依存性の解決をしています--> トランザクションの確認を実⾏しています。
---> パッケージ postgresql12.x86_64 0:12.2-2PGDG.rhel7 を インストール---> パッケージ postgresql12-contrib.x86_64 0:12.2-2PGDG.rhel7 を インストール---> パッケージ postgresql12-devel.x86_64 0:12.2-2PGDG.rhel7 を インストール--> 依存性の処理をしています: libicu-devel のパッケージ: postgresql12-devel-12.22PGDG.rhel7.x86_64---> パッケージ postgresql12-libs.x86_64 0:12.2-2PGDG.rhel7 を インストール---> パッケージ postgresql12-llvmjit.x86_64 0:12.2-2PGDG.rhel7 を インストール
44 / 72

Appendix_Log_PostgreSQL9.4to12.md---> パッケージ postgresql12-server.x86_64 0:12.2-2PGDG.rhel7 を インストール--> トランザクションの確認を実⾏しています。
---> パッケージ libicu-devel.x86_64 0:50.2-4.el7_7 を インストール--> 依存性の処理をしています: libicu(x86-64) = 50.2-4.el7_7 のパッケージ: libicu-devel-50.24.el7_7.x86_64--> トランザクションの確認を実⾏しています。
---> パッケージ libicu.x86_64 0:50.2-3.el7 を 更新---> パッケージ libicu.x86_64 0:50.2-4.el7_7 を アップデート--> 依存性解決を終了しました。
依存性を解決しました=========================================================================================================
Package
アーキテクチャー バージョン
リポジトリー
容量=========================================================================================================
インストール中:
postgresql12
x86_6412.2-2PGDG.rhel7
pgdg12
1.6 M
postgresql12-contrib
x86_6412.2-2PGDG.rhel7
pgdg12608 kpostgresql12-devel
x86_6412.2-2PGDG.rhel7
pgdg122.2 M
postgresql12-libs
x86_6412.2-2PGDG.rhel7
pgdg12367 kpostgresql12-llvmjit
x86_6412.2-2PGDG.rhel7
pgdg12
9.4 M
postgresql12-server
x86_6412.2-2PGDG.rhel7
pgdg12
4.9 M
依存性関連でのインストールをします:libicu-devel
x86_6450.2-4.el7_7
updates703 k
依存性関連での更新をします:libicux86_6450.2-4.el7_7
updates
6.9 M
トランザクションの要約=========================================================================================================
インストール 6 パッケージ (+1 個の依存関係のパッケージ)
更新( 1 個の依存関係のパッケージ)
総ダウンロード容量: 27 M
Downloading packages:
No Presto metadata available for updates(1/8): libicu-50.2-4.el7_7.x86_64.rpm
6.9 MB 00:00:01(2/8): libicu-devel-50.2-4.el7_7.x86_64.rpm
703 kB 00:00:01
warning: /var/cache/yum/x86_64/7/pgdg12/packages/postgresql12-12.22PGDG.rhel7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY
postgresql12-12.2-2PGDG.rhel7.x86_64.rpm の公開鍵がインストールされていません
45 / 72||

Appendix_Log_PostgreSQL9.4to12.md(3/8): postgresql12-12.2-2PGDG.rhel7.x86_64.rpm|
1.6 MB 00:00:04(4/8): postgresql12-devel-12.2-2PGDG.rhel7.x86_64.rpm|
2.2 MB 00:00:03(5/8): postgresql12-contrib-12.2-2PGDG.rhel7.x86_64.rpm|
608 kB 00:00:08(6/8): postgresql12-libs-12.2-2PGDG.rhel7.x86_64.rpm|
367 kB 00:00:01(7/8): postgresql12-server-12.2-2PGDG.rhel7.x86_64.rpm|
4.9 MB 00:00:11(8/8): postgresql12-llvmjit-12.2-2PGDG.rhel7.x86_64.rpm|
9.4 MB 00:00:15-------------------------------------------------------------------------------------------------------合計
1.1 MB/s |27 MB 00:00:23
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG から鍵を取得中です。
Importing GPG key 0x442DF0F8:
Userid: "PostgreSQL RPM Building Project <pgsqlrpms-hackers@pgfoundry.org>"
Fingerprint: 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8
Package: pgdg-redhat-repo-42.0-9.noarch (@/pgdg-redhat-repo-latest.noarch)From: /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中: postgresql12-libs-12.2-2PGDG.rhel7.x86_64
1/9
更新します
: libicu-50.2-4.el7_7.x86_64
2/9
インストール中: postgresql12-12.2-2PGDG.rhel7.x86_64
3/9
インストール中: postgresql12-server-12.2-2PGDG.rhel7.x86_64
4/9
インストール中: libicu-devel-50.2-4.el7_7.x86_64
5/9
インストール中: postgresql12-devel-12.2-2PGDG.rhel7.x86_64
6/9
インストール中: postgresql12-llvmjit-12.2-2PGDG.rhel7.x86_64
7/9
インストール中: postgresql12-contrib-12.2-2PGDG.rhel7.x86_64
8/9
整理中: libicu-50.2-3.el7.x86_64
9/9
検証中: postgresql12-contrib-12.2-2PGDG.rhel7.x86_64
1/9
検証中: postgresql12-server-12.2-2PGDG.rhel7.x86_64
2/9
検証中: postgresql12-devel-12.2-2PGDG.rhel7.x86_64
3/9
検証中: postgresql12-12.2-2PGDG.rhel7.x86_64
4/9
検証中: postgresql12-llvmjit-12.2-2PGDG.rhel7.x86_64
5/9
46 / 72

Appendix_Log_PostgreSQL9.4to12.md

検証中
6/9
検証中
7/9
検証中
8/9
検証中
9/9

: libicu-devel-50.2-4.el7_7.x86_64: libicu-50.2-4.el7_7.x86_64: postgresql12-libs-12.2-2PGDG.rhel7.x86_64: libicu-50.2-3.el7.x86_64

インストール:postgresql12.x86_64 0:12.2-2PGDG.rhel7
0:12.2-2PGDG.rhel7
postgresql12-devel.x86_64 0:12.2-2PGDG.rhel7
0:12.2-2PGDG.rhel7
postgresql12-llvmjit.x86_64 0:12.2-2PGDG.rhel7
0:12.2-2PGDG.rhel7

postgresql12-contrib.x86_64
postgresql12-libs.x86_64
postgresql12-server.x86_64

依存性関連をインストールしました:
libicu-devel.x86_64 0:50.2-4.el7_7
依存性を更新しました:
libicu.x86_64 0:50.2-4.el7_7
完了しました!

2.1.3. データベースクラスタの作成[root@node94 ~]# PGSETUP_INITDB_OPTIONS="--encoding=UTF8 --no-locale" /usr/pgsql12/bin/postgresql-12-setup initdb
Initializing database ... OK

2.1.4. データベースの起動[root@node94 ~]# systemctl enable postgresql-12
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql12.service to /usr/lib/systemd/system/postgresql-12.service.
[root@node94 ~]# systemctl start postgresql-12[root@node94 ~]# systemctl status postgresql-12● postgresql-12.service - PostgreSQL 12 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-12.service; enabled; vendor
preset: disabled)
Active: active (running) since ⼟ 2020-04-11 21:20:45 JST; 10s ago
Docs: https://www.postgresql.org/docs/12/static/
Process: 5140 ExecStartPre=/usr/pgsql-12/bin/postgresql-12-check-db-dir ${PGDATA}(code=exited, status=0/SUCCESS)
Main PID: 5146 (postmaster)
Tasks: 8
CGroup: /system.slice/postgresql-12.service
47 / 72

Appendix_Log_PostgreSQL9.4to12.md├─5146 /usr/pgsql-12/bin/postmaster -D /var/lib/pgsql/12/data/├─5148 postgres: logger├─5150 postgres: checkpointer├─5151 postgres: background writer├─5152 postgres: walwriter├─5153 postgres: autovacuum launcher├─5154 postgres: stats collector└─5155 postgres: logical replication launcher
4⽉ 11 21:20:45 node12 systemd[1]: Starting PostgreSQL 12 database server...
4⽉ 11 21:20:45 node12 postmaster[5146]: 2020-04-11 21:20:45.636 JST [5146] LOG:
starting Postg...-bit
4⽉ 11 21:20:45 node12 postmaster[5146]: 2020-04-11 21:20:45.636 JST [5146] LOG:
listening on I...5432
4⽉ 11 21:20:45 node12 postmaster[5146]: 2020-04-11 21:20:45.636 JST [5146] LOG:
listening on I...5432
4⽉ 11 21:20:45 node12 postmaster[5146]: 2020-04-11 21:20:45.640 JST [5146] LOG:
listening on U...432"
4⽉ 11 21:20:45 node12 postmaster[5146]: 2020-04-11 21:20:45.647 JST [5146] LOG:
listening on U...432"
4⽉ 11 21:20:45 node12 postmaster[5146]: 2020-04-11 21:20:45.677 JST [5146] LOG:
redirecting lo...cess
4⽉ 11 21:20:45 node12 postmaster[5146]: 2020-04-11 21:20:45.677 JST [5146] HINT:
Future log ou...og".
4⽉ 11 21:20:45 node12 systemd[1]: Started PostgreSQL 12 database server.
Hint: Some lines were ellipsized, use -l to show in full.

2.2. データベースの移⾏
2.2.1. 移⾏データの準備
移⾏元サーバー（Node94）にあるPostgreSQL 9.4のデータを、移⾏先サーバー（Node12）にコピーします。
[postgres@node12 ~]$ mkdir dump; cd dump
[postgres@node12 dump]$ scp postgres@node94:/home/postgres/dump/bench.dump .
postgres@node94's password:
bench.dump
100%
39.4MB/s
00:01

54MB

[postgres@node12 dump]$ scp postgres@node94:/home/postgres/dump/pgdata94.tar.gz .
postgres@node94's password:
pgdata94.tar.gz
100% 201MB
41.0MB/s
00:04[postgres@node12 dump]$ ls -l
合計 261136-rw-rw-r-- 1 postgres postgres 56672582-rw-rw-r-- 1 postgres postgres 210726843

4⽉ 11 21:37 bench.dump
4⽉ 11 21:39 pgdata94.tar.gz

48 / 72

Appendix_Log_PostgreSQL9.4to12.md

2.2.2. pg_dump / pg_restoreの場合
事前確認
ダンプファイルの内容は、-lオプションで表⽰できます。 必要であれば、この情報を編集し、-Lでリストア
順などを制御することも可能です。
[postgres@node12 ~]$ pg_restore -l ~/dump/bench.dump;; Archive created at 2020-04-11 18:53:50 JST;
dbname: bench;
TOC Entries: 20;
Compression: -1;
Dump Version: 1.13-0;
Format: CUSTOM;
Integer: 4 bytes;
Offset: 8 bytes;
Dumped from database version: 9.4.26;
Dumped by pg_dump version: 9.4.26;;; Selected TOC Entries:;
6; 2615 2200 SCHEMA - public postgres
2938; 0 0 COMMENT - SCHEMA public postgres
2939; 0 0 ACL - SCHEMA public postgres
1; 3079 12779 EXTENSION - plpgsql
2940; 0 0 COMMENT - EXTENSION plpgsql
175; 1259 17205 TABLE public pgbench_accounts postgres
176; 1259 17208 TABLE public pgbench_branches postgres
173; 1259 17199 TABLE public pgbench_history postgres
174; 1259 17202 TABLE public pgbench_tellers postgres
2930; 0 17205 TABLE DATA public pgbench_accounts postgres
2931; 0 17208 TABLE DATA public pgbench_branches postgres
2928; 0 17199 TABLE DATA public pgbench_history postgres
2929; 0 17202 TABLE DATA public pgbench_tellers postgres
2816; 2606 17217 CONSTRAINT public pgbench_accounts_pkey postgres
2818; 2606 17213 CONSTRAINT public pgbench_branches_pkey postgres
2814; 2606 17215 CONSTRAINT public pgbench_tellers_pkey postgres

pg_restore実⾏
今回は、まずデータベースを作成し、そこにデータをリストアします。
[postgres@node12 ~]$ createdb -T template0 bench[postgres@node12 ~]$ time pg_restore -d bench ~/dump/bench.dump
pg_restore: TOC処理中:
pg_restore: TOCエントリ6; 2615 2200 SCHEMA public postgres から
pg_restore: エラー: could not execute query: ERROR: schema "public" already exists
Command was: CREATE SCHEMA public;
49 / 72

Appendix_Log_PostgreSQL9.4to12.md

pg_restore: 警告: リストア中に無視されたエラー数: 1
real
1m40.446s
user
0m2.375s
sys 0m1.457s
publicスキーマが重複している警告が表⽰されていますが、今回は、これは問題ありません。1分40秒程度でリストアが完了しました。 このときのサーバーログは下記のとおりです。 サーバーパラメーターはデフォル
トのままなので、チェックポイントについてのメッセージがでています。 実際にはこれらのパラメーターを調整したうえでリストアしたほうが移⾏時間の観点からもおすすめです。
ERROR: schema "public" already exists
STATEMENT: CREATE SCHEMA public;
LOG: checkpoints are occurring too frequently (24 seconds apart)
HINT: Consider increasing the configuration parameter "max_wal_size".
LOG: checkpoints are occurring too frequently (25 seconds apart)
HINT: Consider increasing the configuration parameter "max_wal_size".
これで、データ移⾏は完了です。 実際には、データが正しく移⾏されたことを検証する作業にはいります。
今回は省略します。

2.2.3. pg_upgradeの場合
PostgreSQL 9.4のインストール
pg_upgradeを利⽤するには、メジャーバージョンアップ元のバイナリが必要です。
[root@node12 yum.repos.d]# yum install postgresql94-server -y
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: ftp.riken.jp* centos-sclo-rh: ftp.riken.jp* centos-sclo-sclo: ftp.riken.jp* centosplus: ftp.riken.jp* epel: nrt.edge.kernel.org* extras: ftp.riken.jp* updates: ftp.riken.jp
依存性の解決をしています--> トランザクションの確認を実⾏しています。
---> パッケージ postgresql94-server.x86_64 0:9.4.26-1PGDG.rhel7 を インストール--> 依存性の処理をしています: postgresql94-libs(x86-64) = 9.4.26-1PGDG.rhel7 のパッケージ:
postgresql94-server-9.4.26-1PGDG.rhel7.x86_64--> 依存性の処理をしています: postgresql94(x86-64) = 9.4.26-1PGDG.rhel7 のパッケージ:
postgresql94-server-9.4.26-1PGDG.rhel7.x86_64--> 依存性の処理をしています: postgresql94 = 9.4.26-1PGDG.rhel7 のパッケージ: postgresql94server-9.4.26-1PGDG.rhel7.x86_64--> トランザクションの確認を実⾏しています。
---> パッケージ postgresql94.x86_64 0:9.4.26-1PGDG.rhel7 を インストール---> パッケージ postgresql94-libs.x86_64 0:9.4.26-1PGDG.rhel7 を インストール
50 / 72

Appendix_Log_PostgreSQL9.4to12.md--> 依存性解決を終了しました。
依存性を解決しました=========================================================================================================
Package
アーキテクチャー バージョン
リポジトリー
容量=========================================================================================================
インストール中:
postgresql94-server
x86_649.4.26-1PGDG.rhel7
pgdg94
3.9 M
依存性関連でのインストールをします:
postgresql94
x86_649.4.26-1PGDG.rhel7
pgdg94
1.2 M
postgresql94-libs
x86_649.4.26-1PGDG.rhel7
pgdg94217 k
トランザクションの要約=========================================================================================================
インストール 1 パッケージ (+2 個の依存関係のパッケージ)
総ダウンロード容量: 5.3 M
インストール容量: 23 M
Downloading packages:(1/3): postgresql94-libs-9.4.26-1PGDG.rhel7.x86_64.rpm|
217 kB 00:00:02(2/3): postgresql94-9.4.26-1PGDG.rhel7.x86_64.rpm|
1.2 MB 00:00:03(3/3): postgresql94-server-9.4.26-1PGDG.rhel7.x86_64.rpm|
3.9 MB 00:00:08-------------------------------------------------------------------------------------------------------合計
512 kB/s |5.3 MB 00:00:10
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中: postgresql94-libs-9.4.26-1PGDG.rhel7.x86_64
1/3
インストール中: postgresql94-9.4.26-1PGDG.rhel7.x86_64
2/3
インストール中: postgresql94-server-9.4.26-1PGDG.rhel7.x86_64
3/3
検証中: postgresql94-server-9.4.26-1PGDG.rhel7.x86_64
1/3
検証中: postgresql94-9.4.26-1PGDG.rhel7.x86_64
2/3
検証中: postgresql94-libs-9.4.26-1PGDG.rhel7.x86_64
3/3
51 / 72

Appendix_Log_PostgreSQL9.4to12.md

インストール:postgresql94-server.x86_64 0:9.4.26-1PGDG.rhel7
依存性関連をインストールしました:
postgresql94.x86_64 0:9.4.26-1PGDG.rhel7
0:9.4.26-1PGDG.rhel7

postgresql94-libs.x86_64

完了しました!

PostgreSQL 9.4のデータベースクラスタを展開する[postgres@node12 dump]$ tar -xf pgdata94.tar.gz[postgres@node12 dump]$ ls -lp
合計 261140
drwx------ 20 postgres postgres
4096 4⽉ 11 19:00 data/-rw-rw-r-- 1 postgres postgres 210726843 4⽉ 11 21:39 pgdata94.tar.gz[postgres@node12 dump]$ ls data
PG_VERSION pg_dynshmem
pg_multixact pg_statpg_tblspc
postgresql.conf.org
base
pg_hba.conf
pg_notify
pg_stat_tmp
pg_twophase
postmaster.opts
globalpg_ident.conf pg_replslot
pg_statsinfo.control pg_xloglog
pg_logpg_serial
pg_statsinfo.pid
postgresql.auto.conf
pg_clog
pg_logical
pg_snapshots pg_subtranspostgresql.conf

PostgreSQL 12サーバーを停⽌[root@node12 ~]# systemctl stop postgresql-12[root@node12 ~]# systemctl status postgresql-12● postgresql-12.service - PostgreSQL 12 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-12.service; enabled; vendor
preset: disabled)
Active: inactive (dead) since ⽇ 2020-04-12 18:37:59 JST; 2s ago
Docs: https://www.postgresql.org/docs/12/static/
Process: 5146 ExecStart=/usr/pgsql-12/bin/postmaster -D ${PGDATA} (code=exited,
status=0/SUCCESS)
Main PID: 5146 (code=exited, status=0/SUCCESS)
4⽉ 11 21:20:45 node12 postmaster[5146]: 2020-04-11 21:20:45.636 JST [5146] LOG:
starting Postg...-bit
4⽉ 11 21:20:45 node12 postmaster[5146]: 2020-04-11 21:20:45.636 JST [5146] LOG:
listening on I...5432
4⽉ 11 21:20:45 node12 postmaster[5146]: 2020-04-11 21:20:45.636 JST [5146] LOG:
listening on I...5432
4⽉ 11 21:20:45 node12 postmaster[5146]: 2020-04-11 21:20:45.640 JST [5146] LOG:
listening on U...432"
4⽉ 11 21:20:45 node12 postmaster[5146]: 2020-04-11 21:20:45.647 JST [5146] LOG:
listening on U...432"
4⽉ 11 21:20:45 node12 postmaster[5146]: 2020-04-11 21:20:45.677 JST [5146] LOG:
redirecting lo...cess52 / 72

Appendix_Log_PostgreSQL9.4to12.md

4⽉ 11 21:20:45 node12 postmaster[5146]: 2020-04-11 21:20:45.677 JST [5146] HINT:
Future log ou...og".
4⽉ 11 21:20:45 node12 systemd[1]: Started PostgreSQL 12 database server.
4⽉ 12 18:37:58 node12 systemd[1]: Stopping PostgreSQL 12 database server...
4⽉ 12 18:37:59 node12 systemd[1]: Stopped PostgreSQL 12 database server.

pg_upgradeの実⾏
今回は、ハードリンク（-k）で実⾏します。
[postgres@node12 ~]$ time /usr/pgsql-12/bin/pg_upgrade -b /usr/pgsql-9.4/bin -B/usr/pgsql-12/bin -d /home/postgres/dump/data -D $PGDATA -k
整合性チェックを実⾏しています。
----------------------------Checking cluster versions
ok
Checking database user is the install userok
Checking database connection settings
ok
Checking for prepared transactions
ok
Checking for reg* data types in user tables
ok
Checking for contrib/isn with bigint-passing mismatchok
Checking for tables WITH OIDS
ok
Checking for invalid "sql_identifier" user columns
okChecking for invalid "unknown" user columns
okChecking for roles starting with "pg_"okCreating dump of global objects
okCreating dump of database schemas
okChecking for presence of required libraries
ok
Checking database user is the install userok
Checking for prepared transactions
ok
この後pg_upgradeが失敗した場合は、続ける前に新しいクラスタを
initdbで再作成する必要があります。
アップグレードを実⾏しています。
-----------------Analyzing all rows in the new cluster
Freezing all rows in the new cluster
Deleting files from new pg_xact
Copying old pg_clog to new server
Setting next transaction ID and epoch for new cluster
Deleting files from new pg_multixact/offsets
Copying old pg_multixact/offsets to new server
Deleting files from new pg_multixact/members
Copying old pg_multixact/members to new server
Setting next multixact ID and offset for new cluster
Resetting WAL archives
Setting frozenxid and minmxid counters in new cluster
Restoring global objects in the new cluster
Restoring database schemas in the new cluster
Adding ".old" suffix to old global/pg_control
53 / 72

ok
ok
ok
ok
ok
ok
ok
ok
ok
ok
ok
ok
ok
ok
ok

Appendix_Log_PostgreSQL9.4to12.md

旧クラスタを起動する場合、/home/postgres/dump/data/global/pg_control.oldから".old"拡張⼦を削除する必要があります。「リンク」モードが使われているため、⼀度新クラスタを起動してしまうと旧クラスタは安全に起動することができなくなります。
ユーザリレーションのファイルをリンクしています
ok
ok
ok
ok
ok
ok

Setting next OID for new cluster
Sync data directory to disk
Creating script to analyze new cluster
Creating script to delete old cluster
Checking for hash indexes

アップグレードが完了しました---------------オプティマイザーの統計は、pg_upgrade では転送されません。そのため新サーバーを起動した後、./analyze_new_cluster.sh を動かすことを検討してください。

このスクリプトを実⾏すると、旧クラスタのデータファイル ./delete_old_cluster.shが削除されます:

real
0m13.003s
user
0m0.286s
sys 0m0.620s
今回は、ハードリンクで実⾏したため、13秒と短時間で完了しています。
実際には、データが正しく移⾏されたことを検証する作業にはいりますが、今回は省略します。
pg_upgrade実⾏後、カレントディレクトリにanalyze_new_cluster.shとdelete_old_cluster.shが⽣成されているので、これを実⾏します。
analyze_new_cluster.sh
全データベースに、統計情報の計算をおこなうスクリプト/usr/pgsql-12/bin/vacuumdb --all --analyze-in-stages
delete_old_cluster.sh
古いデータベースクラスタを削除するスクリプト
今回の場合、rm -rf '/home/postgres/dump/data'と書かれています
まずは、PostgreSQL 12サーバーを起動します。
[root@node12 ~]# systemctl start postgresql-12[root@node12 ~]# systemctl status postgresql-12● postgresql-12.service - PostgreSQL 12 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-12.service; enabled; vendor
preset: disabled)
Active: active (running) since ⽇ 2020-04-12 19:38:45 JST; 3s ago
Docs: https://www.postgresql.org/docs/12/static/
Process: 10558 ExecStartPre=/usr/pgsql-12/bin/postgresql-12-check-db-dir${PGDATA} (code=exited, status=0/SUCCESS)
54 / 72

Appendix_Log_PostgreSQL9.4to12.md

Main PID: 10564 (postmaster)
Tasks: 8
CGroup: /system.slice/postgresql-12.service├─10564 /usr/pgsql-12/bin/postmaster -D /var/lib/pgsql/12/data/├─10566 postgres: logger├─10568 postgres: checkpointer├─10569 postgres: background writer├─10570 postgres: walwriter├─10571 postgres: autovacuum launcher├─10572 postgres: stats collector└─10573 postgres: logical replication launcher
4⽉ 12 19:38:45 node12 systemd[1]: Starting PostgreSQL 12 database server...
4⽉ 12 19:38:45 node12 postmaster[10564]: 2020-04-12 19:38:45.454 JST [10564] LOG:
starting Pos...-bit
4⽉ 12 19:38:45 node12 postmaster[10564]: 2020-04-12 19:38:45.454 JST [10564] LOG:
listening on...5432
4⽉ 12 19:38:45 node12 postmaster[10564]: 2020-04-12 19:38:45.454 JST [10564] LOG:
listening on...5432
4⽉ 12 19:38:45 node12 postmaster[10564]: 2020-04-12 19:38:45.457 JST [10564] LOG:
listening on...432"
4⽉ 12 19:38:45 node12 postmaster[10564]: 2020-04-12 19:38:45.462 JST [10564] LOG:
listening on...432"
4⽉ 12 19:38:45 node12 postmaster[10564]: 2020-04-12 19:38:45.473 JST [10564] LOG:
redirecting ...cess
4⽉ 12 19:38:45 node12 postmaster[10564]: 2020-04-12 19:38:45.473 JST [10564] HINT:
Future log ...og".
4⽉ 12 19:38:45 node12 systemd[1]: Started PostgreSQL 12 database server.
各スクリプトを実⾏します。
[postgres@node12 ~]$ ./analyze_new_cluster.shThis script will generate minimal optimizer statistics rapidly
so your system is usable, and then gather statistics twice morewith increasing accuracy. When it is done, your system will
have the default level of optimizer statistics.
If you have used ALTER TABLE to modify the statistics target forany tables, you might want to remove them and restore them after
running this script because they will delay fast statistics generation.
If you would like default statistics as quickly as possible, cancel
this script and run:"/usr/pgsql-12/bin/vacuumdb" --all --analyze-only
vacuumdb: データベース"bench"の処理中です: 最適化のための情報を最⼩限⽣成します(1対象)
vacuumdb: データベース"bulkload"の処理中です: 最適化のための情報を最⼩限⽣成します(1対象)
vacuumdb: データベース"dbms_stats"の処理中です: 最適化のための情報を最⼩限⽣成します(1対象)
vacuumdb: データベース"hint_plan"の処理中です: 最適化のための情報を最⼩限⽣成します(1対象)
vacuumdb: データベース"postgres"の処理中です: 最適化のための情報を最⼩限⽣成します(1対象)
vacuumdb: データベース"repack"の処理中です: 最適化のための情報を最⼩限⽣成します(1対象)
vacuumdb: データベース"statsinfo"の処理中です: 最適化のための情報を最⼩限⽣成します(1対象)
55 / 72

Appendix_Log_PostgreSQL9.4to12.md

vacuumdb: データベース"template1"の処理中です: 最適化のための情報を最⼩限⽣成します(1対象)
vacuumdb: データベース"bench"の処理中です: 最適化のための情報を複数⽣成します(10対象)
vacuumdb: データベース"bulkload"の処理中です: 最適化のための情報を複数⽣成します(10対象)
vacuumdb: データベース"dbms_stats"の処理中です: 最適化のための情報を複数⽣成します(10対象)
vacuumdb: データベース"hint_plan"の処理中です: 最適化のための情報を複数⽣成します(10対象)
vacuumdb: データベース"postgres"の処理中です: 最適化のための情報を複数⽣成します(10対象)
vacuumdb: データベース"repack"の処理中です: 最適化のための情報を複数⽣成します(10対象)
vacuumdb: データベース"statsinfo"の処理中です: 最適化のための情報を複数⽣成します(10対象)
vacuumdb: データベース"template1"の処理中です: 最適化のための情報を複数⽣成します(10対象)
vacuumdb: データベース"bench"の処理中です: 最適化のための情報をデフォルト数(全て)⽣成します
vacuumdb: データベース"bulkload"の処理中です: 最適化のための情報をデフォルト数(全て)⽣成します
vacuumdb: データベース"dbms_stats"の処理中です: 最適化のための情報をデフォルト数(全て)⽣成します
vacuumdb: データベース"hint_plan"の処理中です: 最適化のための情報をデフォルト数(全て)⽣成します
vacuumdb: データベース"postgres"の処理中です: 最適化のための情報をデフォルト数(全て)⽣成します
vacuumdb: データベース"repack"の処理中です: 最適化のための情報をデフォルト数(全て)⽣成します
vacuumdb: データベース"statsinfo"の処理中です: 最適化のための情報をデフォルト数(全て)⽣成します
vacuumdb: データベース"template1"の処理中です: 最適化のための情報をデフォルト数(全て)⽣成しますDone[postgres@node12 ~]$ ./delete_old_cluster.sh[postgres@node12 ~]$PostgreSQL 9.4のバイナリ削除
PostgreSQL 9.4のバイナリを削除します。
[root@node12 ~]# yum remove postgresql94-server postgresql94 postgresql94-libs -y
読み込んだプラグイン:fastestmirror, langpacks
依存性の解決をしています--> トランザクションの確認を実⾏しています。
---> パッケージ postgresql94.x86_64 0:9.4.26-1PGDG.rhel7 を 削除---> パッケージ postgresql94-libs.x86_64 0:9.4.26-1PGDG.rhel7 を 削除---> パッケージ postgresql94-server.x86_64 0:9.4.26-1PGDG.rhel7 を 削除--> 依存性解決を終了しました。
依存性を解決しました=========================================================================================================
Package
アーキテクチャー バージョン
リポジトリー
容量=========================================================================================================
削除中:
postgresql94
x86_649.4.26-1PGDG.rhel7@pgdg94
5.9 M
postgresql94-libs
x86_649.4.26-1PGDG.rhel7@pgdg94657 kpostgresql94-server
x86_649.4.26-1PGDG.rhel7@pgdg94
17 M
56 / 72

Appendix_Log_PostgreSQL9.4to12.md

トランザクションの要約=========================================================================================================
削除 3 パッケージ
インストール容量: 23 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
削除中: postgresql94-server-9.4.26-1PGDG.rhel7.x86_64
1/3
削除中: postgresql94-9.4.26-1PGDG.rhel7.x86_64
2/3
削除中: postgresql94-libs-9.4.26-1PGDG.rhel7.x86_64
3/3
検証中: postgresql94-server-9.4.26-1PGDG.rhel7.x86_64
1/3
検証中: postgresql94-9.4.26-1PGDG.rhel7.x86_64
2/3
検証中: postgresql94-libs-9.4.26-1PGDG.rhel7.x86_64
3/3
削除しました:postgresql94.x86_64 0:9.4.26-1PGDG.rhel7
0:9.4.26-1PGDG.rhel7
postgresql94-server.x86_64 0:9.4.26-1PGDG.rhel7

postgresql94-libs.x86_64

完了しました!

2.3. 機能拡張のインストール
ここでは、pg_upgrade後の環境に機能拡張をインストールします。

2.3.1. pg_hint_plan
インストール[postgres@node12 extensions]$ tar -xzvf/media/sf_share/media/postgresql/extensions/pg_hint_plan-REL12_1_3_5.tar.gz
pg_hint_plan-REL12_1_3_5/
pg_hint_plan-REL12_1_3_5/.gitignore
pg_hint_plan-REL12_1_3_5/COPYRIGHT
pg_hint_plan-REL12_1_3_5/COPYRIGHT.postgresql
pg_hint_plan-REL12_1_3_5/Makefile
pg_hint_plan-REL12_1_3_5/SPECS/
pg_hint_plan-REL12_1_3_5/SPECS/pg_hint_plan12.spec
pg_hint_plan-REL12_1_3_5/core.c
pg_hint_plan-REL12_1_3_5/data/
pg_hint_plan-REL12_1_3_5/data/data.csv
pg_hint_plan-REL12_1_3_5/doc/
57 / 72

Appendix_Log_PostgreSQL9.4to12.md

pg_hint_plan-REL12_1_3_5/doc/hint_list-ja.html
pg_hint_plan-REL12_1_3_5/doc/hint_list.html
pg_hint_plan-REL12_1_3_5/doc/pg_hint_plan-ja.html
pg_hint_plan-REL12_1_3_5/doc/pg_hint_plan.html
pg_hint_plan-REL12_1_3_5/doc/style.css
pg_hint_plan-REL12_1_3_5/expected/
pg_hint_plan-REL12_1_3_5/expected/.gitignore
pg_hint_plan-REL12_1_3_5/expected/R_sample.out
pg_hint_plan-REL12_1_3_5/expected/base_plan.out
pg_hint_plan-REL12_1_3_5/expected/init.out
pg_hint_plan-REL12_1_3_5/expected/pg_hint_plan.out
pg_hint_plan-REL12_1_3_5/expected/ut-A.out
pg_hint_plan-REL12_1_3_5/expected/ut-G.out
pg_hint_plan-REL12_1_3_5/expected/ut-J.out
pg_hint_plan-REL12_1_3_5/expected/ut-L.out
pg_hint_plan-REL12_1_3_5/expected/ut-R.out
pg_hint_plan-REL12_1_3_5/expected/ut-S.out
pg_hint_plan-REL12_1_3_5/expected/ut-T.out
pg_hint_plan-REL12_1_3_5/expected/ut-W.out
pg_hint_plan-REL12_1_3_5/expected/ut-fini.out
pg_hint_plan-REL12_1_3_5/expected/ut-init.out
pg_hint_plan-REL12_1_3_5/input/
pg_hint_plan-REL12_1_3_5/input/ut-fdw.source
pg_hint_plan-REL12_1_3_5/make_join_rel.c
pg_hint_plan-REL12_1_3_5/normalize_query.hpg_hint_plan-REL12_1_3_5/output/
pg_hint_plan-REL12_1_3_5/output/ut-fdw.source
pg_hint_plan-REL12_1_3_5/pg_hint_plan--1.3.5.sql
pg_hint_plan-REL12_1_3_5/pg_hint_plan.c
pg_hint_plan-REL12_1_3_5/pg_hint_plan.control
pg_hint_plan-REL12_1_3_5/pg_stat_statements.c
pg_hint_plan-REL12_1_3_5/sql/
pg_hint_plan-REL12_1_3_5/sql/.gitignore
pg_hint_plan-REL12_1_3_5/sql/base_plan.sql
pg_hint_plan-REL12_1_3_5/sql/init.sql
pg_hint_plan-REL12_1_3_5/sql/maskout.sh
pg_hint_plan-REL12_1_3_5/sql/maskout2.sh
pg_hint_plan-REL12_1_3_5/sql/pg_hint_plan.sql
pg_hint_plan-REL12_1_3_5/sql/ut-A.sql
pg_hint_plan-REL12_1_3_5/sql/ut-G.sql
pg_hint_plan-REL12_1_3_5/sql/ut-J.sql
pg_hint_plan-REL12_1_3_5/sql/ut-L.sql
pg_hint_plan-REL12_1_3_5/sql/ut-R.sql
pg_hint_plan-REL12_1_3_5/sql/ut-S.sql
pg_hint_plan-REL12_1_3_5/sql/ut-T.sql
pg_hint_plan-REL12_1_3_5/sql/ut-W.sql
pg_hint_plan-REL12_1_3_5/sql/ut-fini.sql
pg_hint_plan-REL12_1_3_5/sql/ut-init.sql[postgres@node12 extensions]$ cd pg_hint_plan-REL12_1_3_5/[postgres@node12 pg_hint_plan-REL12_1_3_5]$ makegcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-afterstatement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security 58 / 72

Appendix_Log_PostgreSQL9.4to12.md

fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 -g -pipe -Wall -Wp,D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4-grecord-gcc-switches -m64 -mtune=generic -fPIC -I. -I./ -I/usr/pgsql12/include/server -I/usr/pgsql-12/include/internal -D_GNU_SOURCE I/usr/include/libxml2 -I/usr/include -c -o pg_hint_plan.o pg_hint_plan.c
gcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-afterstatement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 -g -pipe -Wall -Wp,D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4-grecord-gcc-switches -m64 -mtune=generic -fPIC pg_hint_plan.o -L/usr/pgsql-12/lib-Wl,--as-needed -L/usr/lib64/llvm5.0/lib -L/usr/lib64 -Wl,--as-needed -Wl,rpath,'/usr/pgsql-12/lib',--enable-new-dtags -Wl,--build-id -shared -o
pg_hint_plan.so/opt/rh/llvm-toolset-7/root/usr/bin/clang -Wno-ignored-attributes -fno-strictaliasing -fwrapv -O2 -I. -I./ -I/usr/pgsql-12/include/server -I/usr/pgsql12/include/internal -D_GNU_SOURCE -I/usr/include/libxml2 -I/usr/include flto=thin -emit-llvm -c -o pg_hint_plan.bc pg_hint_plan.c[postgres@node12 pg_hint_plan-REL12_1_3_5]$ su
パスワード:[root@node12 pg_hint_plan-REL12_1_3_5]# make install/bin/mkdir -p '/usr/pgsql-12/share/extension'/bin/mkdir -p '/usr/pgsql-12/share/extension'/bin/mkdir -p '/usr/pgsql-12/lib'/bin/install -c -m 644 .//pg_hint_plan.control '/usr/pgsql-12/share/extension/'/bin/install -c -m 644 .//pg_hint_plan--*.sql '/usr/pgsql-12/share/extension/'/bin/install -c -m 755 pg_hint_plan.so '/usr/pgsql-12/lib/'/bin/mkdir -p '/usr/pgsql-12/lib/bitcode/pg_hint_plan'/bin/mkdir -p '/usr/pgsql-12/lib/bitcode'/pg_hint_plan//bin/install -c -m 644 pg_hint_plan.bc '/usr/pgsql-12/lib/bitcode'/pg_hint_plan/./cd '/usr/pgsql-12/lib/bitcode' && /usr/lib64/llvm5.0/bin/llvm-lto -thinlto thinlto-action=thinlink -o pg_hint_plan.index.bc pg_hint_plan/pg_hint_plan.bc

データベースへの登録[postgres@node12 ~]$ psql -d hint_plan
psql (12.2)"help"でヘルプを表⽰します。
hint_plan=# CREATE EXTENSION pg_hint_plan;
CREATE EXTENSION
hint_plan=# \dx
インストール済みの拡張⼀覧
名前| バージョン | スキーマ |説明--------------+------------+------------+-----------------------------pg_hint_plan | 1.3.5| hint_plan |plpgsql| 1.0| pg_catalog | PL/pgSQL procedural language(2 ⾏)

パラメーター修正
59 / 72

Appendix_Log_PostgreSQL9.4to12.md

postgresql.confを修正
shared_preload_libraries = 'pg_hint_plan'

⽣成されるスキーマ

hint_plan=# \dn
スキーマ⼀覧
名前| 所有者-----------+---------hint_plan | postgres
public| postgres(2 ⾏)
hint_plan=# \d hint_plan.*
テーブル"hint_plan.hints"
列|型| 照合順序 | Null 値を許容 |デフォルト-------------------+---------+----------+---------------+-------------------------------------------id| integer || not null|
nextval('hint_plan.hints_id_seq'::regclass)norm_query_string | text|
| not null|
application_name | text|
| not null|hints
| text|| not null|
インデックス:"hints_pkey" PRIMARY KEY, btree (id)"hints_norm_and_app" UNIQUE, btree (norm_query_string, application_name)
シーケンス "hint_plan.hints_id_seq"型| 開始 | 最⼩ |最⼤| 増分 | 循環？ | キャッシュ---------+------+------+------------+------+--------+-----------integer |1 |1 | 2147483647 |1 | no|1
所有者: hint_plan.hints.id
インデックス"hint_plan.hints_norm_and_app"
列| 型 | キー? |定義-------------------+------+-------+------------------norm_query_string | text | はい | norm_query_string
application_name | text | はい | application_name
ユニーク,btree, テーブル"hint_plan.hints"⽤
インデックス"hint_plan.hints_pkey"
列 |型| キー? | 定義----+---------+-------+-----id | integer | はい | id
プライマリキー, btree, テーブル"hint_plan.hints"⽤

2.3.2. pgBadger
インストール
60 / 72

Appendix_Log_PostgreSQL9.4to12.md[root@node12 ~]# yum --showduplicates search pgbadger
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: mirrors.cat.net* centos-sclo-rh: mirrors.cat.net* centos-sclo-sclo: mirrors.cat.net* centosplus: mirrors.cat.net* epel: nrt.edge.kernel.org* extras: mirrors.cat.net* updates: mirrors.cat.net========================================= N/S matched: pgbadger=========================================
pgbadger-11.0-1.rhel7.noarch : A fast PostgreSQL log analyzer
pgbadger-11.1-1.rhel7.noarch : A fast PostgreSQL log analyzer
pgbadger-11.2-1.rhel7.noarch : A fast PostgreSQL log analyzer
Name and summary matches only, use "search all" for everything.
[root@node12 ~]# yum install pgbadger-11.2-1.rhel7.noarch -y
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: mirrors.cat.net* centos-sclo-rh: mirrors.cat.net* centos-sclo-sclo: mirrors.cat.net* centosplus: mirrors.cat.net* epel: nrt.edge.kernel.org* extras: mirrors.cat.net* updates: mirrors.cat.net
依存性の解決をしています--> トランザクションの確認を実⾏しています。
---> パッケージ pgbadger.noarch 0:11.2-1.rhel7 を インストール--> 依存性の処理をしています: perl-Text-CSV_XS のパッケージ: pgbadger-11.2-1.rhel7.noarch--> トランザクションの確認を実⾏しています。
---> パッケージ perl-Text-CSV_XS.x86_64 0:1.00-3.el7 を インストール--> 依存性解決を終了しました。
依存性を解決しました=========================================================================================================
Package
アーキテクチャーバージョン
リポジトリー
容量=========================================================================================================
インストール中:
pgbadgernoarch
11.2-1.rhel7
pgdgcommon
343 k
依存性関連でのインストールをします:
perl-Text-CSV_XS
x86_641.00-3.el7
base
78 k
トランザクションの要約===================================================================================
61 / 72

Appendix_Log_PostgreSQL9.4to12.md======================
インストール 1 パッケージ (+1 個の依存関係のパッケージ)
総ダウンロード容量: 420 k
インストール容量: 1.7 M
Downloading packages:(1/2): perl-Text-CSV_XS-1.00-3.el7.x86_64.rpm|
78 kB 00:00:00(2/2): pgbadger-11.2-1.rhel7.noarch.rpm|
343 kB 00:00:02-------------------------------------------------------------------------------------------------------合計
152 kB/s |420 kB 00:00:02
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中: perl-Text-CSV_XS-1.00-3.el7.x86_64
1/2
インストール中: pgbadger-11.2-1.rhel7.noarch
2/2
検証中: perl-Text-CSV_XS-1.00-3.el7.x86_64
1/2
検証中: pgbadger-11.2-1.rhel7.noarch
2/2
インストール:
pgbadger.noarch 0:11.2-1.rhel7
依存性関連をインストールしました:
perl-Text-CSV_XS.x86_64 0:1.00-3.el7
完了しました!

データベースへの登録なし
パラメーター修正

log_min_duration_statement = 0
log_line_prefix = '%t [%p]: 'log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
log_autovacuum_min_duration = 0
log_error_verbosity = default

62 / 72

Appendix_Log_PostgreSQL9.4to12.md⽣成されるスキーマなし
動作確認[postgres@node12 ~]$ pgbadger -f stderr ${PGDATA}/log/postgresql-Sun.log[========================>] Parsed 3365 bytes of 3365 (100.00%), queries: 0,
events: 7
LOG: Ok, generating html report...
[postgres@node12 ~]$ ls -l out.html-rw-rw-r-- 1 postgres postgres 801316 4⽉ 12 20:52 out.html

2.3.3. pg_repack
インストール[root@node12 ~]# yum --showduplicates search pg_repack
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: mirrors.cat.net* centos-sclo-rh: mirrors.cat.net* centos-sclo-sclo: mirrors.cat.net* centosplus: mirrors.cat.net* epel: nrt.edge.kernel.org* extras: mirrors.cat.net* updates: mirrors.cat.net======================================== N/S matched: pg_repack=========================================
pg_repack12-1.4.5-1.rhel7.x86_64 : Reorganize tables in PostgreSQL databases
without any locks
Name and summary matches only, use "search all" for everything.
[root@node12 ~]# yum install pg_repack12-1.4.5-1.rhel7.x86_64 -y
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: mirrors.cat.net* centos-sclo-rh: mirrors.cat.net* centos-sclo-sclo: mirrors.cat.net* centosplus: mirrors.cat.net* epel: nrt.edge.kernel.org* extras: mirrors.cat.net* updates: mirrors.cat.net
依存性の解決をしています--> トランザクションの確認を実⾏しています。
---> パッケージ pg_repack12.x86_64 0:1.4.5-1.rhel7 を インストール--> 依存性解決を終了しました。
依存性を解決しました
63 / 72

Appendix_Log_PostgreSQL9.4to12.md=========================================================================================================
Package
アーキテクチャーバージョン
リポジトリー
容量=========================================================================================================
インストール中:
pg_repack12
x86_64
1.4.5-1.rhel7
pgdg12121 k
トランザクションの要約=========================================================================================================
インストール 1 パッケージ
総ダウンロード容量: 121 k
インストール容量: 299 k
Downloading packages:
pg_repack12-1.4.5-1.rhel7.x86_64.rpm
121 kB 00:00:03
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中: pg_repack12-1.4.5-1.rhel7.x86_64
1/1
検証中: pg_repack12-1.4.5-1.rhel7.x86_64
1/1|

インストール:
pg_repack12.x86_64 0:1.4.5-1.rhel7
完了しました!

データベースへの登録[postgres@node12 ~]$ psql -d repack
psql (12.2)"help"でヘルプを表⽰します。
repack=# CREATE EXTENSION pg_repack;
CREATE EXTENSION
repack=# \dx
インストール済みの拡張⼀覧
名前| バージョン | スキーマ |説明-----------+------------+------------+------------------------------------------------------------pg_repack | 1.4.5| public| Reorganize tables in PostgreSQL databaseswith minimal locks
plpgsql| 1.0| pg_catalog | PL/pgSQL procedural language(2 ⾏)
64 / 72

Appendix_Log_PostgreSQL9.4to12.md

パラメーター修正なし
⽣成されるスキーマ

repack=# \dn
スキーマ⼀覧
名前 | 所有者--------+---------public | postgres
repack | postgres(2 ⾏)
repack=# \d repack.*
ビュー"repack.primary_keys"
列| 型 | 照合順序 | Null 値を許容 | デフォルト------------+-----+----------+---------------+-----------indrelid| oid |||
indexrelid | oid |||ビュー"repack.tables"
列| 型 | 照合順序 | Null 値を許容 | デフォルト-------------------+------+----------+---------------+-----------relname| text |||relid| oid |||
reltoastrelid| oid |||
reltoastidxid| oid |||
schemaname| name |||pkid| oid |||ckid
| oid |||
create_pktype| text |||create_log| text |||create_trigger| text |||enable_trigger| text |||create_table_1| text |||tablespace_orig| text | C||
create_table_2| text |||copy_data| text |||alter_col_storage | text |||drop_columns| text |||delete_log| text |||lock_table| text |||ckey| text |||sql_peek| text |||sql_insert| text |||sql_delete| text |||sql_update| text |||sql_pop| text |||65 / 72

Appendix_Log_PostgreSQL9.4to12.md

####

動作確認

[postgres@node12 ~]$ pg_repack -d repack -e
LOG: (query) SET search_path TO pg_catalog, pg_temp, public
LOG: (query) SET search_path TO pg_catalog, pg_temp, public
LOG: (query) select repack.version(), repack.version_sql()
LOG: (query) SET statement_timeout = 0
LOG: (query) SET search_path = pg_catalog, pg_temp, public
LOG: (query) SET client_min_messages = warning
LOG: (query) SELECT t.*, coalesce(v.tablespace, t.tablespace_orig) as
tablespace_dest FROM repack.tables t, (VALUES (quote_ident($1::text))) as v
(tablespace) WHERE pkid IS NOT NULL ORDER BY t.relname, t.schemaname
LOG:(param:0) = (null)

2.3.4. pg_rman
インストール[root@node12 extensions]# rpm -ivh pg_rman-1.3.9-1.pg12.rhel7.x86_64.rpm
準備しています...
################################# [100%]
更新中 / インストール中...
1:pg_rman-1.3.9-1.pg12.rhel7################################# [100%][root@node12 extensions]# rpm -qs pg_rman
通常/usr/pgsql-12/bin/pg_rman

データベースへの登録なし
パラメーター修正

log_directory = 'log'archive_mode = onarchive_command = 'cp %p /var/lib/pgsql/12/archive/%f'

⽣成されるスキーマなし
動作確認
バックアップカタログの初期化と、設定ファイルへいくつかパラメーターを追記します（パラメーターの値は⼀例です）。
[postgres@node12 ~]$ pg_rman init -B /var/lib/pgsql/12/backups -D $PGDATA -A/var/lib/pgsql/12/archive
66 / 72

Appendix_Log_PostgreSQL9.4to12.md

INFO: ARCLOG_PATH is set to '/var/lib/pgsql/12/archive'
INFO: SRVLOG_PATH is set to '/var/lib/pgsql/12/data/log'[postgres@node12 backups]$ cat pg_rman.ini
ARCLOG_PATH='/var/lib/pgsql/12/archive'
SRVLOG_PATH='/var/lib/pgsql/12/data/log'
BACKUP_MODE = F
COMPRESS_DATA = YES
KEEP_ARCLOG_FILES = 10
KEEP_DATA_GENERATIONS = 3
KEEP_SRVLOG_FILES = 10
バックアップ実⾏。
[postgres@node12 ~]$ pg_rman backup -v- -B /var/lib/pgsql/12/backups
pg_rman: 無効なオプション -- '-'ERROR: option is not specified
HINT: Try "pg_rman --help" for more information.
[postgres@node12 ~]$ pg_rman backup -v -B /var/lib/pgsql/12/backups========================================
backup start---------------------------------------# configuration
BACKUP_MODE=FULL
FULL_BACKUP_ON_ERROR=false
WITH_SERVERLOG=false
COMPRESS_DATA=true---------------------------------------INFO: copying database files(1/2858) PG_VERSION compressed 11 (366.67% of 3)(2/2858) base directory(3/2858) base/14186 directory(4/2858) base/14186/112 compressed 47 (0.57% of 8192)(5/2858) base/14186/113 compressed 47 (0.57% of 8192)
...
（省略）
...
(2854/2858) postgresql.auto.conf compressed 91 (103.41% of 88)(2855/2858) postgresql.conf compressed 8108 (30.46% of 26619)(2856/2858) postgresql.conf.bk compressed 8066 (30.34% of 26586)(2857/2858) postmaster.opts compressed 61 (105.17% of 58)(2858/2858) postmaster.pid compressed 95 (91.35% of 104)
database backup completed(read: 3213787416 write: 177739845)================================================================================
INFO: copying archived WAL files(1/3) 0000000100000000000000A9 compressed 2034742 (12.13% of 16777216)(2/3) 0000000100000000000000AA compressed 16509 (0.10% of 16777216)(3/3) 0000000100000000000000AA.00000028.backup compressed 184 (53.03% of 347)
archived WAL backup completed(read: 33554779 write: 2051435)========================================
67 / 72

Appendix_Log_PostgreSQL9.4to12.md

all backup completed(read: 3247342195 write: 179791280)========================================
INFO: backup complete
INFO: Please execute 'pg_rman validate' to verify the files are correctly copied.
INFO: start deleting old archived WAL files from ARCLOG_PATH (keep files = 10)
INFO: start deleting old backup (keep generations = 3)
INFO: does not include the backup just taken========================================
delete online WAL backup========================================
delete symbolic link in archive directory

2.3.5. pg_statsinfo
インストール[root@node12 extensions]# rpm -ivh pg_statsinfo-12.0-1.pg12.rhel7.x86_64.rpm
pg_statsinfo-llvmjit-12.0-1.pg12.rhel7.x86_64.rpm
準備しています...
################################# [100%]
更新中 / インストール中...
1:pg_statsinfo-12.0-1.pg12.rhel7################################# [ 50%]2:pg_statsinfo-llvmjit-12.0-1.pg12.################################# [100%][root@node12 extensions]# rpm -qs pg_statsinfo
通常/usr/pgsql-12/bin/archive_pglog.sh
通常/usr/pgsql-12/bin/pg_statsinfo
通常/usr/pgsql-12/bin/pg_statsinfod
通常/usr/pgsql-12/lib/pg_statsinfo.so
通常/usr/pgsql-12/share/contrib/pg_statsinfo.sql
通常/usr/pgsql-12/share/contrib/pg_statsrepo.sql
通常/usr/pgsql-12/share/contrib/pg_statsrepo_alert.sql
通常/usr/pgsql-12/share/contrib/uninstall_pg_statsinfo.sql
通常/usr/pgsql-12/share/contrib/uninstall_pg_statsrepo.sql
通常/usr/share/doc/pg_statsinfo-12.0
通常/usr/share/doc/pg_statsinfo-12.0/image
通常/usr/share/doc/pg_statsinfo-12.0/image/pg_statsinfo-ja.png
通常/usr/share/doc/pg_statsinfo-12.0/image/pg_statsinfo.png
通常/usr/share/doc/pg_statsinfo-12.0/image/system_structure-ja.png
通常/usr/share/doc/pg_statsinfo-12.0/image/system_structure.png
通常/usr/share/doc/pg_statsinfo-12.0/pg_statsinfo-ja.html
通常/usr/share/doc/pg_statsinfo-12.0/pg_statsinfo.html

データベースへの登録なし
パラメーター修正
ここでは、最⼩限のパラメーター修正にとどめる。

68 / 72

Appendix_Log_PostgreSQL9.4to12.md

postgresql.conf
shared_preload_libraries = 'pg_hint_plan, pg_statsinfo'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_min_messages = log
pg_hba.conf# TYPE
local

DATABASE
all

USER
postgres

ADDRESSMETHOD
ident

⽣成されるスキーマ
postgresデータベースに、statsinfoとstatsrepoというスキーマが⽣成される。 スキーマ内に、表などのオブジェクトが多数⽣成される。
postgres=# \dn
スキーマ⼀覧
名前| 所有者-----------+---------public| postgres
statsinfo | postgres
statsrepo | postgres(3 ⾏)
postgres=# \d statsinfo.*
複合型"statsinfo.cpustats_type"列|型| 照合順序 | Null 値を許容 | デフォルト------------+--------+----------+---------------+-----------cpu_user| bigint |||cpu_system | bigint |||cpu_idle| bigint |||cpu_iowait | bigint |||ビュー"statsinfo.tablespaces"
列|型| 照合順序 | Null 値を許容 | デフォルト------------+--------+----------+---------------+-----------oid
| oid
|
|
|
name
| text|||location| text|||device| text|||avail| bigint |
|
|
total
| bigint |||spcoptions | text[] |||postgres=# \dt statsrepo.*
リレーション⼀覧
スキーマ |
名前
|

型

|

所有者

69 / 72

Appendix_Log_PostgreSQL9.4to12.md-----------+--------------------+----------+---------statsrepo | activity| テーブル | postgres
statsrepo | alert| テーブル | postgres
statsrepo | alert_message| テーブル | postgres
statsrepo | archive| テーブル | postgres
statsrepo | autoanalyze| テーブル | postgres
statsrepo | autoanalyze_cancel | テーブル | postgres
statsrepo | autovacuum| テーブル | postgres
statsrepo | autovacuum_cancel | テーブル | postgres
statsrepo | bgwriter| テーブル | postgres
statsrepo | checkpoint| テーブル | postgres
statsrepo | column| テーブル | postgres
statsrepo | cpu| テーブル | postgres
statsrepo | database| テーブル | postgres
statsrepo | device| テーブル | postgres
statsrepo | function| テーブル | postgres
statsrepo | index| テーブル | postgres
statsrepo | inherits| テーブル | postgres
statsrepo | instance| テーブル | postgres
statsrepo | loadavg| テーブル | postgres
statsrepo | lock| テーブル | postgres
statsrepo | log| テーブル | postgres
statsrepo | log_20200413| テーブル | postgres
statsrepo | memory| テーブル | postgres
statsrepo | plan
| テーブル | postgres
statsrepo | profile| テーブル | postgres
statsrepo | publication| テーブル | postgres
statsrepo | publication_tables | テーブル | postgres
statsrepo | replication| テーブル | postgres
statsrepo | replication_slots | テーブル | postgres
statsrepo | role
| テーブル | postgres
statsrepo | schema| テーブル | postgres
statsrepo | setting| テーブル | postgres
statsrepo | snapshot| テーブル | postgres
statsrepo | stat_subscription | テーブル | postgres
statsrepo | statement| テーブル | postgres
statsrepo | subscription| テーブル | postgres
statsrepo | table| テーブル | postgres
statsrepo | tablespace| テーブル | postgres
statsrepo | xact
| テーブル | postgres
statsrepo | xlog
| テーブル | postgres(40 ⾏)
postgres=# \dv statsrepo.*
リレーション⼀覧
スキーマ | 名前|型| 所有者-----------+---------+--------+---------statsrepo | indexes | ビュー | postgres
statsrepo | tables | ビュー | postgres(2 ⾏)
postgres=# \ds statsrepo.*
リレーション⼀覧
スキーマ |
名前|型|
70 / 72

所有者

Appendix_Log_PostgreSQL9.4to12.md-----------+---------------------+------------+---------statsrepo | instance_instid_seq | シーケンス | postgres
statsrepo | snapshot_snapid_seq | シーケンス | postgres
(2 ⾏)

動作確認

[postgres@node12 ~]$ ps -ef | grep pg_statsinfod | grep -v grep
postgres 18473 18471 24 11:40 ?
00:01:17 /usr/pgsql-12/bin/pg_statsinfod
18461

2.3.6. pg_bulkload
インストール[root@node12 extensions]# rpm -ivh pg_bulkload-3.1.16-1.pg12.rhel7.x86_64.rpm
pg_bulkload-llvmjit-3.1.16-1.pg12.rhel7.x86_64.rpm
準備しています...
################################# [100%]
更新中 / インストール中...
1:pg_bulkload-3.1.16-1.pg12.rhel7 ################################# [ 50%]2:pg_bulkload-llvmjit-3.1.16-1.pg12################################# [100%][root@node12 extensions]# rpm -qs pg_bulkload
通常/usr/pgsql-12/bin/pg_bulkload
通常/usr/pgsql-12/bin/postgresql
通常/usr/pgsql-12/lib/pg_bulkload.so
通常/usr/pgsql-12/share/contrib/pg_bulkload.sql
通常/usr/pgsql-12/share/contrib/sample_bin.ctl
通常/usr/pgsql-12/share/contrib/sample_csv.ctl
通常/usr/pgsql-12/share/contrib/uninstall_pg_bulkload.sql
通常/usr/pgsql-12/share/extension/pg_bulkload--1.0.sql
通常/usr/pgsql-12/share/extension/pg_bulkload--unpackaged--1.0.sql
通常/usr/pgsql-12/share/extension/pg_bulkload.control

データベースへの登録[postgres@node12 ~]$ psql -d bulkload
psql (12.2)"help"でヘルプを表⽰します。
bulkload=# CREATE EXTENSION pg_bulkload;
CREATE EXTENSION
bulkload=# \dx
インストール済みの拡張⼀覧
名前| バージョン | スキーマ |説明-------------+------------+------------+---------------------------------------------------------------pg_bulkload | 1.0| public| pg_bulkload is a high speed data loading
71 / 72

Appendix_Log_PostgreSQL9.4to12.md

utility for PostgreSQL
plpgsql
| 1.0
(2 ⾏)

| pg_catalog | PL/pgSQL procedural language

パラメーター修正なし
⽣成されるスキーマ
pgbulkloadスキーマが⽣成され、ファンクションが1個作られる。
bulkload=# \dn
スキーマ⼀覧
名前| 所有者------------+---------pgbulkload | postgres
public| postgres(2 ⾏)bulkload=# \df pgbulkload.*
関数⼀覧-[ RECORD 1 ]--+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------スキーマ| pgbulkload
名前| pg_bulkload
結果のデータ型 | record
引数のデータ型 | options text[], OUT skip bigint, OUT count bigint, OUT parse_errors
bigint, OUT duplicate_new bigint, OUT duplicate_old bigint, OUT system_time double
precision, OUT user_time double precision, OUT duration double precision型| 関数
以上で、メジャーバージョンアップは完了です。

72 / 72