#author("2022-01-07T02:27:31+00:00","default:wikiadmin","wikiadmin") #author("2022-01-07T02:34:07+00:00","default:wikiadmin","wikiadmin") -2016年以来使ってなかったが必要に迫られてバージョンアップの手段検討 #contents *バージョンアップ手法をバックアップ手段ごとに検証 [#k7be4a79] **pg_upgrade [#f81e2220] -流用できるファイルシステムを極力利用して、アップグレードを行う。 -一番早いらしい **試してみた。移行先のディレクトリは空である必要がある。 [#v73cfd63] docker run --rm -v /var/lib/docker/volumes/sonarqube_postgres_data79:/var/lib/postgresql/9.6/data -v /var/lib/docker/volumes/sonarqube_postgresql_data_13:/var/lib/postgresql/13/data tianon/postgres-upgrade:9.6-to-13 docker run --rm -v /var/lib/docker/volumes/sonarqube_postgres_data79/_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 **pg_dumpall [#m76c28a0] -昔からの定番 -テキストで出力できるので、中身がわかりやすい。 **ファイルシステムごとバックアップ [#c76eda66] -メジャーバージョンが違うと使えない。 ***Docker上のファイルシステムをバックアップ [#w21f74bd] -sonarqube_postgresql_dataボリュームをローカルの/var/tmpに取得 sudo docker run --rm -v sonarqube_postgresql_data:/var/lib/postgresql/data -v /var/tmp:/backup ubuntu tar cvfP /backup/pgdata-20211113.tar /var/lib/postgresql/data -ボリュームを削除して作成し直す sudo docker run --rm -v sonarqube_postgresql_data:/var/lib/postgresql/data -v /var/tmp:/backup ubuntu tar xvf /backup/pgdata-20211113.tar *Docker上でのバージョンアップ [#k3dd80ab] **docker-postgres-upgrade [#w52d5b13] https://qiita.com/y-amadatsu/items/2d43ce49c77f1f1df434 物理ディレクトリに対してpg_upgradeを実行する。 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を流し込む(docker-composeは使えない。DB削除と空のDB作成必要) cat dump2.sql | docker exec -i コンテナID psql -U sonar -d sonar # mariadbでも試してみた cat mysqldump.sql | sudo docker exec -i 11c75385bdad mysql -u root -ppassword