• 2016年以来使ってなかったが必要に迫られてバージョンアップの手段検討

バージョンアップ手法をバックアップ手段ごとに検証

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上のファイルシステムをバックアップ

  • 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上でのバージョンアップ

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

まとめると

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

実際に検証した

# 旧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

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-01-07 (金) 11:34:07