Очередной pacman -Syyu на этот раз прошел не столь незаметно как прежде. Отвалились все django-проектики, которые работают с postgresql. Причина проста — несовместимость формата БД версии 9.6 (стояла прежде) с версией 10.0-1 (которая стала после обновления), о чем радостно сообщил journalctl -xe:
ноя 27 11:35:44 archlinux systemd[1]: Starting PostgreSQL database server... -- Subject: Начинается запуск юнита postgresql.service -- Defined-By: systemd -- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Начат процесс запуска юнита postgresql.service. ноя 27 11:35:44 archlinux postgres[17505]: An old version of the database format was found. ноя 27 11:35:44 archlinux postgres[17505]: You need to dump and reload before using PostgreSQL 9.6. ноя 27 11:35:44 archlinux postgres[17505]: See http://www.postgresql.org/docs/9.6/static/upgrading.html ноя 27 11:35:44 archlinux sudo[17502]: pam_unix(sudo:session): session closed for user root ноя 27 11:35:44 archlinux systemd[1]: postgresql.service: Control process exited, code=exited status=1 ноя 27 11:35:44 archlinux systemd[1]: postgresql.service: Failed with result 'exit-code'. ноя 27 11:35:44 archlinux systemd[1]: Failed to start PostgreSQL database server. -- Subject: Ошибка юнита postgresql.service -- Defined-By: systemd -- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Произошел сбой юнита postgresql.service. -- -- Результат: RESULT.
Ну и ладно. Благо, решение уже написано в самом логе. Хорошо и то, что в AUR’е доступны и предыдущие версии postgresql. Поэтому:
yaourt -S postgresql-9.6
Пропустил предложения поправить PKGBUILD да postgresql.install — старая версия нужна ведь только чтобы сделать дамп БД (правильно, конечно, было бы его сделать перед обновлением системы, но то такое).
После недолгой сборки и установки сделал этот самый дамп:
sudo -u postgres pg_ctl -D /var/lib/postgres/data start sudo -u postgres pg_dumpall -f /tmp/pg_dump.sql sudo -u postgres pg_ctl -D /var/lib/postgres/data stop
Далее грохнул теперь уже ненужный каталог:
sudo rm -rf /var/lib/postgres/data
И переустановил свежую версию postgresql:
sudo pacman -S postgresql
И, наконец, запустил новый postgresql и залил дамп обратно:
sudo systemctl start postgresql.service sudo -u postgres psql -f /tmp/pg_dump.sql
Voila!
systemctl status postgresql.service ● postgresql.service - PostgreSQL database server Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2017-11-27 11:41:31 EET; 19min ago Process: 18393 ExecStart=/usr/bin/pg_ctl -s -D ${PGROOT}/data start -w -t 120 (code=exited, status=0/SUCCESS) Process: 18391 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGROOT}/data (code=exited, status=0/SUCCESS) Main PID: 18396 (postgres) Tasks: 7 (limit: 4915) CGroup: /system.slice/postgresql.service ├─18396 /usr/bin/postgres -D /var/lib/postgres/data ├─18398 postgres: checkpointer process ├─18399 postgres: writer process ├─18400 postgres: wal writer process ├─18401 postgres: autovacuum launcher process ├─18402 postgres: stats collector process └─18403 postgres: bgworker: logical replication launcher ноя 27 11:41:31 archlinux systemd[1]: Starting PostgreSQL database server... ноя 27 11:41:31 archlinux postgres[18393]: 2017-11-27 11:41:31.418 EET [18396] СООБЩЕНИЕ: для приёма подключений по адресу IPv6 "::1" открыт порт 5432 ноя 27 11:41:31 archlinux postgres[18393]: 2017-11-27 11:41:31.419 EET [18396] СООБЩЕНИЕ: для приёма подключений по адресу IPv4 "127.0.0.1" открыт порт 5432 ноя 27 11:41:31 archlinux postgres[18393]: 2017-11-27 11:41:31.479 EET [18396] СООБЩЕНИЕ: для приёма подключений открыт сокет Unix "/run/postgresql/.s.PGSQL.5432" ноя 27 11:41:31 archlinux postgres[18393]: 2017-11-27 11:41:31.598 EET [18397] СООБЩЕНИЕ: система БД была выключена: 2017-11-27 11:08:57 EET ноя 27 11:41:31 archlinux postgres[18393]: 2017-11-27 11:41:31.634 EET [18396] СООБЩЕНИЕ: система БД готова принимать подключения ноя 27 11:41:31 archlinux systemd[1]: Started PostgreSQL database server.