2.4 KiB
2.4 KiB
upgrading postgresql on arch (in case you fucked up)
stop postgresql
stop akkoma # make sure nothing is trying to hit the database
pg_upgrade will fail if you initdb with different params
so i'd made a file-level backup at least
sudo mv /var/lib/postgres/data /var/lib/postgres/olddata
i tried to
sudo mkdir /var/lib/postgres/data /var/lib/postgres/tmp
sudo chown postgres:postgres /var/lib/postgres/data /var/lib/postgres/tmp
sudo -iu postgres
cd /var/lib/postgres/tmp
initdb -D /var/lib/postgres/data --locale=en_US.UTF-8 --encoding=UTF8 --data-checksums
this caused pg_upgrade to fail because the old data didn't have --data-checksums
enabled
pg_dumpall will fail with extensions like rum
ok so that didn't work, let's try the manual dump and reload. exit out of the postgres session and back to your user
yay -S postgresql-old-upgrade
sudo rm -r /var/lib/postgres/data
sudo mkdir /var/lib/postgres/data
sudo chown -R postgres:postgres /var/lib/postgres/data
sudo -iu postgres
initdb -D /var/lib/postgres/data
/opt/pgsql-14/bin/pg_ctl -D /var/lib/postgres/olddata/ start
the old version should be running now
pg_dumpall -h /tmp -f /tmp/old_backup.sql
aaaaand this failed because of something to do with pg_rum
downgrading to get a good dump
ok let's kill the old postgres
sudo killall postgres
copy the old data over and set permissions
sudo rm -r /var/lib/postgres/data
sudo cp -r /var/lib/postgres/olddata /var/lib/postgres/data
sudo chown -R postgres:postgres /var/lib/postgres/data
downgrade to the last version of postgres
yay -S downgrade
sudo downgrade postgresql
start postgresql
dump
pg_dumpall > /tmp/dumpall.sql
now we can upgrade again?
stop postgresql
yay -S postgresql
yay -S pg_rum # do a clean build?
now we try to restore data
sudo rm -r /var/lib/postgres/data
sudo mkdir /var/lib/postgres/data
sudo chown -R postgres:postgres /var/lib/postgres/data
sudo -Hu postgres initdb -D /var/lib/postgres/data --locale=en_US.UTF-8 --encoding=UTF8 --data-checksums
start postgresql
sudo -Hu postgres psql -f /tmp/dumpall.sql template1
this worked for me
etc
while you're here you might as well update and migrate akkoma if you're still running that?
sudo -Hu akkoma MIX_ENV=prod mix deps.get
sudo -Hu akkoma MIX_ENV=prod mix ecto.migrate
start akkoma