既存環境
Aurora PostgreSQL 13.9
オンプレPostgreSQL11.9
作業後
Aurora PostgreSQL 13.9
オンプレPostgreSQL13.9
作業概要
----------------------------------------
1.オンプレPostgreSQL(11.9)のバックアップ
2.新バージョン(13.9)のpostgresqlのソースをコンパイル
3.DBのデータを
4.pg_dumpをリストア
----------------------------------------
#ll -h /backup/pgdb11_backup/pg_basebackup_20240130a #ファイル名は作成予定のバックアップファイル名
→バックアップがないことを確認
#su - postgres
$/usr/pgsql-11/bin/pg_basebackup -F tar -D /backup/pgdb11_backup/ -z -X fetch -l "pg_basebackup_20240130a"
#ll -h /backup/pgdb11_backup/pg_basebackup_20240130a
→バックアップがあることを確認
************************************
1.postgresql13.9のソースをコンパイル
************************************
#systemctl status httpd
#systemctl stop httpd
#systemctl status httpd
#systemctl status tomcat
#systemctl stop tomcat
#systemctl status tomcat
#systemctl status postgresql
#systemctl stop postgresql
#systemctl status postgresql
#cd /usr/local/src/
#wget https://ftp.postgresql.org/pub/source/v13.9/postgresql-13.9.tar.gz --no-check-certificate
#tar -xvzf postgresql-13.9.tar.gz
#cd postgresql-13.9
#mkdir /usr/pgsql-13.9
#./configure --prefix=/usr/pgsql-13.9/
#make
#make install
#su - postgres
$mkdir /var/lib/pgsql/13.9/data/
$/usr/pgsql-13.9/bin/initdb -D /var/lib/pgsql/13.9/data/
************************************
2.pg_dumpのリストア先のDBクラスタの作成
************************************
$vi /var/lib/pgsql/13.9/data/postgresql.conf
************************
・変更前
#unix_socket_directories = '/tmp' # comma-separated list of directories
↓
・変更後
unix_socket_directories = '/var/run/postgresql'
************************
#vi /usr/lib/systemd/system/postgresql-13.9.service
#systemctl daemon-reload
#systemctl restart postgresql-13.9
/usr/pgsql-13.9/bin/psql -U postgres -h localhost
-- データベース一覧を確認
\l
-- 出力
--- Name | Owner | Encoding | Collate | Ctype | Access privileges
--- ------------+----------+----------+-------------+-------------+-----------------------
--- postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
--- template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
--- | | | | | postgres=CTc/postgres
--- template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
--- | | | | | postgres=CTc/postgres
postgres=#create role test1 login;
postgres=#alter role test1 superuser ;
postgres=#create role rdsadmin login;
postgres=#alter role rdsadmin superuser ;
postgres=#grant test1 to postgres ;
postgres=#grant rdsadmin to postgres ;
postgres=#create database test1table;
postgres=#create database rdsadmin;
postgres=#\q
-- データベース一覧を確認
\l
-- 出力
--- Name | Owner | Encoding | Collate | Ctype | Access privileges
--- ------------+----------+----------+-------------+-------------+-----------------------
--- postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
--- test1table | rakfw3 | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
--- template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
--- | | | | | postgres=CTc/postgres
--- template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
--- | | | | | postgres=CTc/postgres
************************************
3. ユーザー切り替えと接続
************************************
ルートユーザーからpostgresユーザーに切り替える
# su - postgres
postgresユーザーになっていることを確認
$ whoami
-- 出力
---- postgres
リードオンリーのDBインスタンスに接続
$ /usr/pgsql-13.9/bin/psql -U postgres -h <RDSホスト名>
-- プロンプトが表示されたら次のコマンドを実行
postgres=# SHOW transaction_read_only;
-- 出力
--- transaction_read_only
--- -----------------------
--- on
--- (1 row)
リードオンリーのDBインスタンスに接続解除
postgres=# \q
バックアップディレクトリへ移動
$cd /backup/
$pwd
-- 出力
--- /backup/
バックアップコマンド実行
$ PGPASSWORD=ringer116 /usr/pgsql-13.9/bin/pg_dump -d test1table -U postgres -h <RDSホスト名> --file=test1table_$(date +"%Y%m%d").dmp
バックアップファイル確認
$ ll -h /backup/
-- 出力
--- -rw-r--r-- 1 postgres postgres 49K Dec 28 2021 test1table_20231116.dmp
$su -
$/usr/pgsql-13.9/bin/psql -d test1table -U postgres -h localhost -f /backup/test1table_20240130.dmp
$/usr/pgsql-13.9/bin/psql -d postgres -U postgres -h localhost -f /backup/postgres_20240130.dmp
************************************
4. サーバー再起動
************************************
Apache HTTP ServerとTomcatの起動
#/usr/local/apache/bin/httpd -k start
#systemctl start tomcat
************************************
5. 状態確認
************************************
サーバーのプロセス確認
#ps aux | grep httpd
-- 出力
--- root 3420 0.0 0.0 14656 7504 ? Ss Aug23 3:30 /usr/local/apache/bin/httpd -k start
--- daemon 14840 0.0 0.0 1274612 5040 ? Sl 14:32 0:00 /usr/local/apache/bin/httpd -k start
--- daemon 14841 0.0 0.0 1274612 5040 ? Sl 14:32 0:00 /usr/local/apache/bin/httpd -k start
Tomcatの状態確認
#systemctl status tomcat
-- 出力
--- ● tomcat.service - Apache Tomcat 9
--- Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
--- Active: active (exited) since Fri 2023-11-17 14:30:09 JST; 2h 12min ago
************************************
6. 状態確認
************************************
★jdbcの差し替え
下記コマンドを実行し、JDBCを退避する
ll -h <各環境パス>/WEB-INF/lib/
mkdir <各環境パス>/WEB-INF/lib/old/
mv <各環境パス>/WEB-INF/lib/postgresql-42.2.25.jre7.jar <各環境パス>/WEB-INF/lib/old/
ll -h <各環境パス>/WEB-INF/lib/
ll -h <各環境パス>/WEB-INF/lib/old/
下記JDBCを、Teratermにて/tmp/フォルダに転送する
"\\<ネットワークパス>\postgresql-42.7.0.jar"
下記コマンドを実行し、新しいJDBCを配置する
mv /tmp/postgresql-42.7.0.jar <各環境パス>/WEB-INF/lib/postgresql-42.7.0.jar
下記コマンドを実行し、権限が644になっていることを確認
ll -h <各環境パス>/WEB-INF/lib/postgresql-42.7.0.jar