テスト環境の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 ※ポート変更されていることを確認