Debian üzerinde PostgreSQL Veritabanını yerinde upgrade yapmak
Öncelikle binary paketlerinin 13 ve 14 aynı sunucuda yüklü olmasını sağlamalıyız. Bu işlemer için aşağıdaki komutlardan örnek alabilirsiniz.
pg_createcluster komudunda “ -l tr_TR.UTF-8” yada “ — data-cheksums” eklemişseniz. yeni veritabanında aynı olmalıdır.
/usr/lib/postgresql/13/bin/pg_checksums -e -D /pg_data/13/main/
gerci sonradan da cluster stop ederek yukarıdaki komutlar enable yapabilirsiniz.
root:
apt install postgresql-13
pg_createcluster 13 main -d /pg_data/13/main -- --data-checksums
pg_ctlcluster stop 13 main... uzun bir zaman sonra ... :-)root:
apt install postgresql-14
pg_createcluster 14 main -d /pg_data/14/main -- --data-checksums
pg_ctlcluster stop 14 main
Durumu söyle bir kontrol edin isterseniz.
Hatta durumu kontrol için start/stop yaparak durumu gözlemleyebilirsiniz.
Dikkat edilmesi gereken nokta yeni PostgreSQL binari’nin pg_upgarde komudunuzu kullanmanız gerekir.
/usr/lib/postgresql/14/bin/pg_upgrade \
--old-bindir=/usr/lib/postgresql/13/bin \
--new-bindir=/usr/lib/postgresql/14/bin \
--old-datadir=/etc/postgresql/13/main \
--new-datadir=/etc/postgresql/14/main \
--link \
--check \
--verbose
Daha sonra “ — check” kaldırılıp, işlemi uygulabilirsiniz.
Komut çalıştırdıktan sonra aşağıdaki 2 işelmide yaptıktan sonra kullanıma hazırdır.
/usr/lib/postgresql/14/bin/vacuumdb --all --analyze-in-stages
vacuumdb: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
Is the server running locally and accepting connections on that socket?
postgres@db4:~$ pg_ctlcluster start 14 main
Warning: the cluster will not be running as a systemd service. Consider using systemctl:
sudo systemctl start postgresql@14-main
tabi önce port değiştirmek ve yeni vertibanı açmak lazım yoksa aşağıdaki hatayı alırsınız.
Aşağıdaki gibi bir sorun yaşarsanız. chown yapmayı unutmayın.
postgres:pg_dropcluster 13 main
pg_lsclusters