PostgresSQL9.4からPostgresSQL10へのバージョンアップ手順 : pg_upgradの利用 - Linux環境¶
MaxGaugeサーバのリポジトリDBで利用するPostgresSQL9.4からPostgresSQL10へのバージョンアップ方法を紹介します。
本手順は、PostgresSQLに付属する pg_upgrad
コマンドを利用したバージョンアップ手順になります。
PostgresSQL10 へのバージョンアップ手順¶
リポジトリDBのPostgresSQLのバージョンをPostgresSQL10に変更する手順
1. MaxGauge関連のサービスを全て停止する¶
MaxGaugeに関連する全てのサービスを停止します。
systemctl stop mfo-platformjs
systemctl stop mfo-dg-slave1
systemctl stop mfo-dg-master
systemctl stop postgresql-9.4
service mfo-platformjs stop
service mfo-dg-slave1 stop
service mfo-dg-master stop
service postgresql-9.4 stop
注釈
MaxGaugeサーバのサービスを停止すると監視対応DBのMaxGaugeエージェントは、収集したデータを一時ファイルに保存します(一時ファイルの上限サイズ1GB(デフォルト)) MaxGaugeサーバのサービスが再開されると一時ファイルのを順次MaxGaugeサーバに転送してデータが登録されます。 大きな負荷にはなりませんが、一時ファイルへの書き込みやデータの転送などの処理が発生することからバージョンアップ中はMaxGaugeエージェントのプロセスを停止いただくことを推奨いたします。
2. PostgresSQL9.4 の自動起動を停止する¶
PostgresSQL9.4 サービスが自動起動設定を無効にします
systemctl disable postgresql-9.4
chkconfig postgresql-9.4 off
3. PostgresSQL10 のインストール¶
PostgreSQLの公式リポジトリよりインストールします。MaxGaugeサーバがインターネットにアクセス出来る必要があります。
リポジトリ情報のRPMファイルをアップデート(インストール)します
rpm -Uvh https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
注釈
最新のパッケージがインストールされている場合は、「既にインストールされている」メッセージが表示されます。 その場合、インストールされなくても問題ありません。
インストール
yum --disablerepo=* --enablerepo=pgdg10 install \ postgresql10 \ postgresql10-server \ postgresql10-libs
データベースの初期化
postgresql-10-setup initdb
リポジトリ情報のRPMファイルをインストールします
rpm -Uvh https://download.postgresql.org/pub/repos/yum/reporpms/EL-6-x86_64/pgdg-redhat-repo-latest.noarch.rpm
注釈
最新のパッケージがインストールされている場合は、「既にインストールされている」メッセージが表示されます。 その場合、インストールされなくても問題ありません。
インストール
yum --disablerepo=* --enablerepo=pgdg10 install \ postgresql10 \ postgresql10-server \ postgresql10-libs
データベースの初期化
/etc/init.d/postgresql-10 initdb
4. PostgreSQLデータファイルのバージョンアップ¶
既存のPostgresSQL9.4のデータをPostgresSQL10へ移行します
pg_upgrade
コマンドで移行します
su - postgres cd ~ /usr/pgsql-10/bin/pg_upgrade \ -d /var/lib/pgsql/9.4/data \ -D /var/lib/pgsql/10/data \ -b /usr/pgsql-9.4/bin \ -B /usr/pgsql-10/bin
引数の説明
- -b
PostgreSQL9.4 の実行ファイル格納ディレクトリ
- -B
PostgreSQL10 の実行ファイル格納ディレクトリ
- -d
PostgreSQL9.4 のPGDATAのパス
- -D
PostgreSQL10 のPGDATAのパス
注釈
PGDATA を変更している環境は、引数の値を変更してください
5. 統計情報の取得¶
pg_upgrade
で移行後は、オプティマイザが使用する統計情報が存在しないことから統計情報を取得します。
postgresql-10 サービスを起動します
systemctl start postgresql-10.service
統計情報を取得します
su - postgres cd ~ ./analyze_new_cluster.sh
postgresql-10 サービスを起動します
service postgresql-10 start
統計情報を取得します
su - postgres cd ~ ./analyze_new_cluster.sh
6. PostgresSQL10の設定変更¶
MaxGaugeのリポジトリDB利用で必要なPostgresSQLの設定を行います。
6.1. pg_hba.conf の設定¶
PostgresSQLのクライアント認証の設定を変更します。
pg_hba.conf ファイルのバックアップ
cp -pv /var/lib/pgsql/10/data/pg_hba.conf /var/lib/pgsql/10/data/pg_hba.conf.org
pg_hba.conf ファイルの内容を変更
cat /var/lib/pgsql/10/data/pg_hba.conf.org | sed -e 's/^\(host.*\)ident$/\1md5/g' > /var/lib/pgsql/10/data/pg_hba.conf
6.2. postgres ユーザのパスワード設定¶
PostgresSQLのpostgresユーザのパスワードを変更します。
パスワードの変更
su - postgres psql -c "ALTER USER postgres WITH PASSWORD 'postgres';"
6.3. PostgresSQLパラメータの推奨設定¶
PostgresSQLパラメータをMaxGaugeの推奨設定に変更します。
パラメータの設定変更
su - postgres psql -- 変更するパラメータ ALTER SYSTEM SET autovacuum = on; ALTER SYSTEM SET constraint_exclusion = 'partition'; ALTER SYSTEM SET datestyle = 'iso, ymd'; ALTER SYSTEM SET default_transaction_isolation = 'read uncommitted'; ALTER SYSTEM SET dynamic_shared_memory_type = 'posix'; ALTER SYSTEM SET effective_cache_size = '1GB'; ALTER SYSTEM SET enable_seqscan = off; ALTER SYSTEM SET log_destination = 'stderr'; ALTER SYSTEM SET log_directory = 'pg_log'; ALTER SYSTEM SET log_filename = 'postgresql_%Y%m%d.log'; ALTER SYSTEM SET log_line_prefix = '%t '; ALTER SYSTEM SET log_rotation_size = 0; ALTER SYSTEM SET log_truncate_on_rotation = on; ALTER SYSTEM SET logging_collector = on; ALTER SYSTEM SET maintenance_work_mem = '512MB'; ALTER SYSTEM SET max_connections = 300; ALTER SYSTEM SET shared_buffers = '4GB'; ALTER SYSTEM SET temp_buffers = '64MB'; ALTER SYSTEM SET track_counts = on; ALTER SYSTEM SET wal_sync_method = 'fdatasync'; ALTER SYSTEM SET work_mem = '32MB'; -- psqlの終了 \q
6.4. PostgresSQLを再起動¶
変更した内容を適用するため、PostgresSQLを再起動します。
postgresql-10 サービスを再起動します
systemctl restart postgresql-10.service
postgresql-10 サービスを再起動します
service postgresql-10 restart
6.5. PostgresSQLの自動起動設定¶
必要に応じて、PostgresSQLの自動起動を有効にしてください。
postgresql-10 サービスの自動起動設定
systemctl enable postgresql-10
postgresql-10 サービスの自動起動設定
chkconfig postgresql-10 on