Aurora PostgreSQLからオンプレのPostgreSQLに復元する

既存環境
 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
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次