upgrading postgresql on arch (in case you fucked up)

1stop postgresql
2stop 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

1sudo mv /var/lib/postgres/data /var/lib/postgres/olddata

i tried to

1sudo mkdir /var/lib/postgres/data /var/lib/postgres/tmp
2sudo chown postgres:postgres /var/lib/postgres/data /var/lib/postgres/tmp
3
4sudo -iu postgres
5cd /var/lib/postgres/tmp
6initdb -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

1yay -S postgresql-old-upgrade
2sudo rm -r /var/lib/postgres/data
3sudo mkdir /var/lib/postgres/data
4sudo chown -R postgres:postgres /var/lib/postgres/data
5
6sudo -iu postgres
7initdb -D /var/lib/postgres/data
8/opt/pgsql-14/bin/pg_ctl -D /var/lib/postgres/olddata/ start

the old version should be running now

1pg_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

1sudo killall postgres

copy the old data over and set permissions

1sudo rm -r /var/lib/postgres/data
2sudo cp -r /var/lib/postgres/olddata /var/lib/postgres/data
3sudo chown -R postgres:postgres /var/lib/postgres/data

downgrade to the last version of postgres

1yay -S downgrade
2sudo downgrade postgresql
3start postgresql

dump

1pg_dumpall > /tmp/dumpall.sql

now we can upgrade again?

1stop postgresql
2yay -S postgresql
3yay -S pg_rum     # do a clean build?

now we try to restore data

1sudo rm -r /var/lib/postgres/data
2sudo mkdir /var/lib/postgres/data
3sudo chown -R postgres:postgres /var/lib/postgres/data
4
5sudo -Hu postgres initdb -D /var/lib/postgres/data --locale=en_US.UTF-8 --encoding=UTF8 --data-checksums
6
7start postgresql
8
9sudo -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?

1sudo -Hu akkoma MIX_ENV=prod mix deps.get
2sudo -Hu akkoma MIX_ENV=prod mix ecto.migrate
3start akkoma