services/_utils/postgres-update.sh

43 lines
1.5 KiB
Bash
Raw Normal View History

#!/usr/bin/env sh
# shellcheck disable=SC2162
printf "\nWARNING: This script is work in progress and not tested yet. "; read
printf "\nStep 1: Backup done? "; read
printf "\nStep 2: Stop services - continue? "; read
systemctl stop postgresql.service
systemctl status postgresql.service --no-pager
printf "\nStep 3: Create directories and move data - continue? "; read
[ -d /var/lib/postgres/data ] && mv /var/lib/postgres/data /var/lib/postgres/olddata
mkdir /var/lib/postgres/data /var/lib/postgres/tmp
chown postgres:postgres /var/lib/postgres/data /var/lib/postgres/tmp
cd /var/lib/postgres/tmp || exit
printf "\nStep 4: Init new database - continue? "; read
sudo -u postgres initdb -D /var/lib/postgres/data --locale=en_US.UTF-8 --encoding=UTF8
printf "\nStep 5: Upgrade to new version - continue? "; read
printf "Old version: "; read -r pg_version
pg_path="/opt/pgsql-$pg_version/bin"
[ -d "$pg_path" ] || exit
sudo -u postgres pg_upgrade -b "$pg_path" -B /usr/bin -d /var/lib/postgres/olddata -D /var/lib/postgres/data
2023-12-16 05:35:45 +00:00
printf "\nStep 5.1: Copy config files - continue? "; read
sudo -u postgres cp /var/lib/postgres/olddata/pg_hba.conf /var/lib/postgres/data/
sudo -u postgres cp /var/lib/postgres/olddata/postgresql.conf /var/lib/postgres/data/
printf "\nStep 6: Restart database - continue? "; read
systemctl start postgresql.service
systemctl status postgresql.service --no-pager
printf "\nStep 7: Cleanup - continue? "; read
sudo -u postgres vacuumdb --all --analyze-in-stages
rm -r /var/lib/postgres/olddata /var/lib/postgres/tmp
printf "\nDone. "; read