CentOS 7.3にインストールしたPostgreSQL 9.4から9.6へアップデートする
CentOS 7.3にインストールしたPostgreSQL 9.4
を9.6
へアップデートしました。
PostgreSQL 9.4
ははオフィシャルサイトで提供されているpgdgレポジトリをつかってパッケージインストールしてあります。
9.6
も同じくpgdgを使ってインストールします。
昔といっても6年くらい前は、パッケージインストールすると複数バージョンのインストールができない記憶があったのですが、最近は複数バージョンの共存が可能になっております。
事前作業
9.6
のインストールを行う前に9.4
のバックアップを取得します。
特にデータベースのスキーマー等は変更しないので今回はpg_dumpall
を使ってバックアップを取得9.6
へリストアすることにしました。
また、プロダクション環境ではバックアップしたファイルを他ユーザーから見られないようにパーミッションを適切にする必要があります。
### バックアップを取得する su - postgres mkdir work pg_dumpall -c > work/20170218_pg94_dumpall.dump file work/20170218_pg94_dumpall.dump
PostgreSQL 9.6のインストールと初期設定
PostgreSQL 9.6をインストールします。
### PostgreSQL 9.6 レポジトリをインストールする yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm # レポジトリがインストールされたか確認する yum list | grep postgresql96 ### PostgreSQL 9.6をインストールする yum install postgresql96-server ### psqlとpg_dumpが9.6を参照しているか確認する alternatives --display pgsql-psql alternatives --display pgsql-pg_dump
特にエラーがでなければインストールは完了しているので初期設定を行います。
9.4
ではデフォルトエンコーディングをUTF8
、ロケールは設定しない(C
)にしていたので同じ設定を踏襲します。
PGSETUP_INITDB_OPTIONS="--encoding=UTF8 --no-locale" /usr/pgsql-9.6/bin/postgresql96-setup initdb ### postgresql.confを修正する
PostgreSQL 9.4を停止
PostgreSQL 9.6
は5432
ポートで起動するので9.4
のサービスを停止しておきます。
systemctl stop postgresql-9.4 # 停止されているか確認する systemctl status postgresql-9.4
PostgreSQL 9.6を起動しデータをリストアする
systemctl start postgresql-9.6 # 起動したか確認する systemctl status postgresql-9.6 ### データを展開する su - postgres psql -d postgres -f work/20170218_pg94_dumpall.dump 2>&1 | tee work/restored.log # 正しくデータベースがリストアされているか確認する ### 事故が起きないようにバックアップファイルをリネームする(もしくは削除する) mv work/20170218_pg94_dumpall.dump work/_20170218_pg94_dumpall.dump
自動起動とyumレポジトリの設定を行う
正しくデータがリストアできたら自動起動の設定を行います。
### 自動起動の設定を行う。 systemctl disable postgresql-9.4 systemctl enable postgresql-9.6 # 正しく設定されているか確認する systemctl list-unit-files --type=service | grep postgresql ### PostgreSQL 9.4のレポジトリを無効にする sed -i -e 's|enabled=1|enabled=0|g' /etc/yum.repos.d/pgdg-94-centos.repo
まとめ
簡単ですがPostgreSQL 9.4
から9.6
へアップデートした手順を書きました。