Обновление postgresql с 9.4 до 9.6 на FreeBSD с помощью pg_upgrade
Обновление postgresql с 9.4 до 9.6 на FreeBSD с помощью pg_upgrade
Задача:
Обновить postgresql сервер с 9.4 до 9.6
Сложность:
В 9.6 пользователь pgsql заменен на postgres
Решение:
Будем инициализировать 9.6 из под pgsql
=== 1. Установка старого PostgreSQL
pkg search postgresql
pkg install postgresql94-client postgresql94-server
echo 'postgresql_enable="YES"' >> /etc/rc.conf
echo 'postgresql_data="/pgdata/db"' >> /etc/rc.conf
mkdir -p /pgdata/db
chown -R pgsql:pgsql /pgdata
chmod -R 0700 /pgdata
/usr/local/etc/rc.d/postgresql initdb -D /pgdata/db
/usr/local/etc/rc.d/postgresql start
/usr/local/etc/rc.d/postgresql status
Тестовый данные
su pgsql
psql -d template1
create database testdb;
\c testdb;
create table testtable (id serial, data text);
insert into testtable select nextval('testtable_id_seq'::regclass), md5(generate_series(1,1000)::text);
\q
exit
На всякий случай
su pgsql -c 'pg_dumpall -c | bzip2' > /usr/tmp/pgdump.sql.bz2
=== 2. Установка нового PostgreSQL
Сделать временную тюрьму
bsdinstall jail /usr/tmp/pg_upgrade
Установите более старую postgresql в тюрьму
pkg -c /usr/tmp/pg_upgrade install postgresql94-server
Остановить процесс postgres
/usr/local/etc/rc.d/postgresql stop
Удаление старого postgresql
pkg delete -x postgresql
Установите новый postgresql
pkg install postgresql96-server postgresql96-contrib
Переименуйте старый каталог данных
mv /pgdata/db /pgdata/db94
Запустите pg_upgrade как пользователь pgsql
mkdir -p /pgdata/db
chown -R pgsql:pgsql /pgdata
chmod -R 0700 /pgdata
echo 'postgresql_user="pgsql"' >> /etc/rc.conf
/usr/local/etc/rc.d/postgresql initdb -D /pgdata/db
/usr/local/etc/rc.d/postgresql start
/usr/local/etc/rc.d/postgresql status
/usr/local/etc/rc.d/postgresql stop
=== 3. Обновление PostgreSQL
su -l pgsql -c "pg_upgrade -b /usr/tmp/pg_upgrade/usr/local/bin -B /usr/local/bin -d /pgdata/db94 -D /pgdata/db -j 16 -k --check"
su -l pgsql -c "pg_upgrade -b /usr/tmp/pg_upgrade/usr/local/bin -B /usr/local/bin -d /pgdata/db94 -D /pgdata/db -j 16 -k"
Запустить новый сервер postgresql
/usr/local/etc/rc.d/postgresql start
su pgsql
Анализ
/usr/local/pgsql/analyze_new_cluster.sh
"/usr/local/bin/vacuumdb" --all
psql -d template1
\l
\c testdb;
select * from testtable;
\q
exit
Удалить старый каталог данных (только если все ок и уверены)
su pgsql
/usr/local/pgsql/delete_old_cluster.sh
Удалить временную тюрьму (первая команда от ошибки: rm Operation not permitted)
chflags -R noschg /usr/tmp/pg_upgrade
rm -rf /usr/tmp/pg_upgrade
Вот еще пара статей:
https://gregoryo.wordpress.com/2016/08/24/freebsd-and-pg_upgrade/
http://kreynolds.com/post/113982719240/freebsd-and-pgupgrade
Комментарии пользователей
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!
|