バージョンアップ手法をバックアップ手段ごとに検証 †pg_upgrade †
試してみた。移行先のディレクトリは空である必要がある。 †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 †
ファイルシステムごとバックアップ †
Docker上のファイルシステムをバックアップ †
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上でのバージョンアップ †docker-postgres-upgrade †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 †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 |