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
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
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
https://betterprogramming.pub/how-to-upgrade-your-postgresql-version-using-docker-d1e81dbbbdf9
まとめると
# 旧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