テスト環境のCentOS7に入れてあるPostgreSQLが古いので、バージョンアップして最新に。その時の、作業メモ。
1.インストール
yumのままだとPostgreSQL9.2になっているので、最新をRPMから入れる。
(PostgreSQL公式)PostgreSQL: Linux downloads (Red Hat family)
このページで、1.バージョン、2.プラットフォーム、3.アーキテクチャーを選べば、4に必要なコマンドが出てくるので、それを実行。
$ yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
$ yum install -y postgresql13-server
$ /usr/pgsql-13/bin/postgresql-13-setup initdb
$ systemctl enable postgresql-13
$ systemctl start postgresql-13
事前に、前のバージョンは、停止して、自動起動も止める。
$ systemctl stop postgresql
$ systemctl disable postgresql
環境設定等は、以下が参考になる。
(Qiita)PostgreSQL スーパーユーザの環境変数設定
2.DB復元
バックアップファイルから、DBを復元する。
1)postgresユーザーになって、psqlコマンドを起動し、データベースとロールを作成。
$ su - postgres
$ psql
psql (13.1)
Type "help" for help.
postgres=# CREATE DATABASE xxxxxx;
CREATE DATABASE
postgres=# CREATE ROLE xxxxxx SUPERUSER LOGIN PASSWORD 'xxxxx';
CREATE ROLE
postgres=# \q
2)DBの復元
$ pg_restore -d xxxxx バックアップファイル
3.接続設定
新しいバージョンの定義ファイルを修正して、従来と同じ方法で接続できるようにする。
(定義ファイルの場所)
/var/lib/pgsql/13/data/
開発環境からの接続を許可するように、以下ファイルを修正。
$ diff pg_hba.conf.org pg_hba.conf
86a87
host all all 111.111.111.111/32 scram-sha-256 ※111.111.111.111:開発環境のIPアドレス
$ diff postgresql.conf.org postgresql.conf
62a63
listen_addresses = '*'
ファイアウォールでPostgreSQLのポートが閉じられているなら、開く。
4.ポート変更する場合
セキュリティー上、あるいは複数バージョンを同時に立ち上げる等でポート変更する場合。
1)設定ファイルのポートを変更して再起動
# diff postgresql.conf.org postgresql.conf
64c64
< #port = 5432 # (change requires restart)
---
> port = 9999 # (change requires restart)
# systemctl restart postgresql-13
2)ファイアウォールのPostgreSQLのポートを変更、または追加
両方のバージョンを並行運用することも考えて、13は別サービスとして登録。
サービス定義ファイルの場所に移動して、サービス定義ファイルをコピーして、ポートを修正する。
# cd /usr/lib/firewalld/services
# cp postgresql.xml postgresql-13.xml
# vi postgresql-13.xml ※portの設定を変更
# firewall-cmd --permanent --add-service=postgresql-13
# firewall-cmd --reload
# firewall-cmd --list-all ※確認
※ちなみに、yumで入れたPostgreSQL9.2もポート番号を変えたい場合、サービス起動ファイルに、ポートが書かれているのでこちらを変更する必要がある。
# vi /usr/lib/systemd/system/postgresql.service
※Environment=PGPORT=5432 を変更して、サービス再登録
# systemctl stop postgresql
# systemctl disable postgresql
# systemctl enable postgresql
# systemctl start postgresql
# systemctl status postgresql ※ポート変更されていることを確認