Как обновить PostgreSQL с 14 до 15
Выпущена новая версия PostgreSQL 15 . Есть несколько способов обновить старую версию 14, и самый простой из них — использовать инструмент pg_upgrade . Вот краткое руководство для систем Ubuntu (или Debian). И, пожалуйста, не забудьте сделать резервную копию ваших данных!
Обновите пакеты и установите новый PostgreSQL 15.
sudo apt-get update sudo apt-get install postgresql-15 postgresql-server-dev-15
Проверьте, нет ли различий в файлах конфигурации.
diff /etc/postgresql/14/main/postgresql.conf /etc/postgresql/15/main/postgresql.conf diff /etc/postgresql/14/main/pg_hba.conf /etc/postgresql/15/main/pg_hba.conf
Остановите службу PostgreSQL.
sudo systemctl stop postgresql.service
Войдите как postgres-пользователь.
sudo su - postgres
Проверьте кластеры (обратите внимание на --check
аргумент, это не изменит никаких данных).
/usr/lib/postgresql/15/bin/pg_upgrade \ --old-datadir=/var/lib/postgresql/14/main \ --new-datadir=/var/lib/postgresql/15/main \ --old-bindir=/usr/lib/postgresql/14/bin \ --new-bindir=/usr/lib/postgresql/15/bin \ --old-options '-c config_file=/etc/postgresql/14/main/postgresql.conf' \ --new-options '-c config_file=/etc/postgresql/15/main/postgresql.conf' \ --check
Перенесите данные (без --check
аргумента).
/usr/lib/postgresql/15/bin/pg_upgrade \ --old-datadir=/var/lib/postgresql/14/main \ --new-datadir=/var/lib/postgresql/15/main \ --old-bindir=/usr/lib/postgresql/14/bin \ --new-bindir=/usr/lib/postgresql/15/bin \ --old-options '-c config_file=/etc/postgresql/14/main/postgresql.conf' \ --new-options '-c config_file=/etc/postgresql/15/main/postgresql.conf'
Вернитесь к обычному пользователю.
exit
Поменяйте местами порты для старой и новой версий PostgreSQL.
sudo vim /etc/postgresql/15/main/postgresql.conf # ...and change "port = 5433" to "port = 5432" sudo vim /etc/postgresql/14/main/postgresql.conf # ...and change "port = 5432" to "port = 5433"
Запустите службу PostgreSQL.
sudo systemctl start postgresql.service
Войдите снова как пользователь postgres.
sudo su - postgres
Проверьте новую версию PostgreSQL.
psql -c "SELECT version();"
Запустите рекомендуемую vacuumdb
команду:
/usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stages
Вернуться к обычному пользователю.
exit
Проверьте, какие старые пакеты PostgreSQL установлены.
apt list --installed | grep postgresql
Удалите старые пакеты PostgreSQL (из списка выше).
sudo apt-get remove postgresql-14 postgresql-server-dev-14
Удалите старую конфигурацию.
sudo rm -rf /etc/postgresql/14/