LoginSignup
2
4

More than 3 years have passed since last update.

PostgreSQLのDBの別サーバへの移行・バージョンアップ手順

Last updated at Posted at 2019-06-27

PostgresSQLのDBの移行・バージョンアップ手順

サーバAのPostgresSQLのDBを、別のサーバBに移行し、PostgresSQLのバージョンアップを行う手順を記載する。

PostgreSQL関連パッケージをinstall

作業ノード サーバB
yum install postgresql-server postgresql-devel postgresql-upgrade

pidファイルのシンボリックリンク

後述のアップデートコマンド実行時に/tmp配下にpidファイルが生成されるので、/var/runにシンボリックリンクを作成

作業ノード サーバB
ln -s /tmp/.s.PGSQL.50432  /var/run/postgresql/.s.PGSQL.50432
ln -s /tmp/.s.PGSQL.50432.lock  /var/run/postgresql/.s.PGSQL.50432.lock

プロセスを停止

作業ノード サーバB
systemctl stop postgresql.service 

dbファイルを初期化

作業ノード サーバB
su postgres
initdb /var/lib/pgsql/data

※ ロケール、エンコードは移行元のDBと同様にする必要があるので、--localオプションでロケールを、-Eオプションでエンコードを指定する
initdb --locale=C -E UTF8 /var/lib/pgsql/data

旧サーバDBをバックアップ

作業ノード サーバA
tar cvf /var/tmp/old_pgsql.tar.gz \
/var/lib/pgsql/data \
/usr/lib64/pgsql/ \
/usr/bin/clusterdb \
/usr/bin/createdb \
/usr/bin/createlang \
/usr/bin/createuser \
/usr/bin/dropdb \
/usr/bin/droplang \
/usr/bin/dropuser \
/usr/bin/pg_basebackup \
/usr/bin/pg_config \
/usr/bin/pg_controldata \
/usr/bin/pg_ctl \
/usr/bin/pg_dump \
/usr/bin/pg_dumpall \
/usr/bin/pg_enc \
/usr/bin/pg_md5 \
/usr/bin/pg_receivexlog \
/usr/bin/pg_resetxlog \
/usr/bin/pg_restore \
/usr/bin/pg_upgrade \
/usr/bin/psql \
/usr/bin/postgres \
/usr/bin/reindexdb \
/usr/bin/vacuumdb \

※ 上記でアーカイブしたファイルをサーバBに転送する
作業ノード サーバB
mkdir -p /usr/local/old
tar xf /var/tmp/old_pgsql.tar.gz -C /usr/local/old

アップデートコマンドを実行

作業ノード サーバB
pg_upgrade -d /usr/local/old/var/lib/pgsql/data \
 -D /var/lib/pgsql/data -b /usr/local/old/usr/bin -B /usr/bin

※

* -d : 旧バージョンのDBディレクトリを指定
* -D : 現バージョンのDBディレクトリを指定
* -b : 旧バージョンのbinディレクトリを指定
* -B : 現バージョンのbinディレクトリを指定

systemctl start postgresql.service 

参考

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4