#author("2021-11-09T05:27:00+00:00","default:wikiadmin","wikiadmin")
#author("2021-11-09T10:32:11+00:00","default:wikiadmin","wikiadmin")
-2016年以来使ってなかったが必要に迫られてバージョンアップの手段検討

#contents

*バージョンアップ手法をバックアップ手段ごとに検証 [#k7be4a79]

**pg_upgrade [#f81e2220]

-流用できるファイルシステムを極力利用して、アップグレードを行う。
-一番早いらしい

**pg_dumpall [#m76c28a0]

-昔からの定番
-テキストで出力できるので、中身がわかりやすい。

**ファイルシステムごとバックアップ [#c76eda66]

-メジャーバージョンが違うと使えない。

*Docker上でのバージョンアップ [#k3dd80ab]

**docker-postgres-upgrade [#w52d5b13]

https://qiita.com/y-amadatsu/items/2d43ce49c77f1f1df434

物理ディレクトリに対してpg_upgradeを実行する。


 docker run --rm \
    -v /var/lib/docker/volumes/sonarqube_postgresql_data/_data:/var/lib/postgresql/data/ \
    -v /var/lib/docker/volumes/sonarqube_postgresql_data_13/_data:/var/lib/postgresql/data/ \
 docker run --rm -e PGUSER=sonar -e POSTGRES_INITDB_ARGS="-U $POSTGRES_USER" \
    -v /var/lib/docker/volumes/sonarqube_postgresql_data/_data:/var/lib/postgresql/9.6/data/ \
    -v /var/lib/docker/volumes/sonarqube_postgresql_data_13/_data:/var/lib/postgresql/13/data/ \
    tianon/postgres-upgrade:9.6-to-13

**pg_dumpall/psql [#t692a976]

https://betterprogramming.pub/how-to-upgrade-your-postgresql-version-using-docker-d1e81dbbbdf9

まとめると

+旧コンテナーでdump
+旧コンテナーのボリューム削除(切り戻し考えると残しても良い)
+新コンテナ立ち上げ
+新コンテナにdump流し込む


**実際に検証した [#j2f3088b]

 # 旧DBからデータをdump
 docker-compose exec db pg_dumpall -U sonar > dump.sql
 # volume消してバージョンアップ実施
 
 # 新サーバーでsonarのDBを消す(ある場合)
 sonarqube止める。
 psql -U sonar -d postgres
 drop database sonar
 CREATE DATABASE sonar WITH TEMPLATE = template0 ENCODING = 'UTF8' LOCALE = 'en_US.utf8';
 # 新サーバーにdumpを流し込む
 cat dump2.sql | docker exec -i コンテナID  psql -U sonar -d sonar


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS