PostgreSQLのversion up
PostgreSQLのversion upを実施した時のメモです。
移行前 version : 9.3.1
移行後 version : 9.5.10
version upすることになった経緯
AWSのEC2上で動作していたDBサーバをRDS上へ移して管理を楽にしたいということがありました。
DMS(Database Migration Service)を利用して移行しようとしましたが、DMSがサポートしているPostgreSQLのversionは9.4以降のため使用できないということが発覚。
そのため、一旦versionを上げてから移行する方針となりました。
9.3系のサポートも2018年9月で切れるということもあり。
実際にやったこと
EC2上のDBインスタンスを完全に停止させて、AMIを取得
取得したAMIから新規にDBインスンタスを作成
事前に作成しておいたコマンドを投下
9.3.1で動作しているPostgreSQLの停止して、バックアップとして避けておく。
sudo /etc/init.d/postgresql stop sudo yum -y update sudo mv /usr/local/pgsql /usr/local/pgsql.old
今回はソースコードからインストールするためPostgreSQLの公式サイトからインストールしたいバージョンを取得。
sslをサポートさせるために--with-openssl
オプションをつけておく。
あとは通常のmake install
を実施。
cd /usr/local/src sudo wget https://ftp.postgresql.org/pub/source/v9.5.10/postgresql-9.5.10.tar.gz sudo tar zxvf postgresql-9.5.10.tar.gz cd postgresql-9.5.10 ./configure --with-openssl make make check sudo make install
物理ファイル保存用のディレクトリを作成。
postgresユーザに変更してpg_upgrade
を実行。
シンボリックリンクで切り替えを行ったため短時間で終わります。
sudo mkdir /usr/local/pgsql/data sudo chown postgres:root /usr/local/pgsql/data sudo chmod 700 /usr/local/pgsql/data sudo su - su - postgres export PGDATA=/usr/local/pgsql/data /usr/local/pgsql/bin/initdb -d /usr/local/pgsql/data /usr/local/pgsql/bin/pg_upgrade -b /usr/local/pgsql.old/bin -B /usr/local/pgsql/bin -d /usr/local/pgsql.old/data -D /usr/local/pgsql/data -k
9.3.1で使用していたpg_hba.conf
とpostgresql.conf
はそのまま流用しました。
mv /usr/local/pgsql/data/pg_hba.conf /usr/local/pgsql/data/pg_hba.conf.org mv /usr/local/pgsql/data/postgresql.conf /usr/local/pgsql/data/postgresql.conf.org cp -ip /usr/local/pgsql.old/data/pg_hba.conf /usr/local/pgsql/data/pg_hba.conf cp -ip /usr/local/pgsql.old/data/postgresql.conf /usr/local/pgsql/data/postgresql.conf ./analyze_new_cluster.sh
ついでにslave作ったりと色々足りてなかったことも追加で実施しました。
参考
PostgreSQL 9.5.4文書
PostgreSQL9.4 から PostgreSQL9.5 に pg_upgrade する - Qiita