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

注釈

MaxGaugeサーバのサービスを停止すると監視対応DBのMaxGaugeエージェントは、収集したデータを一時ファイルに保存します(一時ファイルの上限サイズ1GB(デフォルト)) MaxGaugeサーバのサービスが再開されると一時ファイルのを順次MaxGaugeサーバに転送してデータが登録されます。 大きな負荷にはなりませんが、一時ファイルへの書き込みやデータの転送などの処理が発生することからバージョンアップ中はMaxGaugeエージェントのプロセスを停止いただくことを推奨いたします。

2. PostgresSQL9.4 の自動起動を停止する

PostgresSQL9.4 サービスが自動起動設定を無効にします

systemctl disable postgresql-9.4

3. PostgresSQL10 のインストール

PostgreSQLの公式リポジトリよりインストールします。MaxGaugeサーバがインターネットにアクセス出来る必要があります。

  1. リポジトリ情報のRPMファイルをアップデート(インストール)します

    rpm -Uvh https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    

    注釈

    最新のパッケージがインストールされている場合は、「既にインストールされている」メッセージが表示されます。 その場合、インストールされなくても問題ありません。

  2. インストール

    yum --disablerepo=* --enablerepo=pgdg10 install \
    postgresql10 \
    postgresql10-server \
    postgresql10-libs
    
  3. データベースの初期化

    postgresql-10-setup 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 で移行後は、オプティマイザが使用する統計情報が存在しないことから統計情報を取得します。

  1. postgresql-10 サービスを起動します

    systemctl start postgresql-10.service
    
  2. 統計情報を取得します

    su - postgres
    cd ~
    ./analyze_new_cluster.sh
    

6. PostgresSQL10の設定変更

MaxGaugeのリポジトリDB利用で必要なPostgresSQLの設定を行います。

6.1. pg_hba.conf の設定

PostgresSQLのクライアント認証の設定を変更します。

  1. pg_hba.conf ファイルのバックアップ

    cp -pv /var/lib/pgsql/10/data/pg_hba.conf /var/lib/pgsql/10/data/pg_hba.conf.org
    
  2. 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ユーザのパスワードを変更します。

  1. パスワードの変更

    su - postgres
    
    psql -c "ALTER USER postgres WITH PASSWORD 'postgres';"
    

6.3. PostgresSQLパラメータの推奨設定

PostgresSQLパラメータをMaxGaugeの推奨設定に変更します。

  1. パラメータの設定変更

    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を再起動します。

  1. postgresql-10 サービスを再起動します

    systemctl restart postgresql-10.service
    

6.5. PostgresSQLの自動起動設定

必要に応じて、PostgresSQLの自動起動を有効にしてください。

  1. postgresql-10 サービスの自動起動設定

    systemctl enable postgresql-10