Миграция между версиями postgresql ( 9.1 to 9.4 )
1. Останавливаем все кластеры, с которыми будет проводиться работа :
/etc/init.d/postgresql stop
2. Логинимся под potgres для продолжения работ :
sudo -u postgres -i
3. Проверяем корректность миграции ( check ) :
cd /tmp
mkdir psql_up
cd psql_up
--- одна строка ---
/usr/lib/postgresql/9.4/bin/pg_upgrade -c -k -b /usr/lib/postgresql/9.1/bin -B /usr/lib/postgresql/9.4/bin -d ../9.1/main/ -D ../9.4/main/ -o " -c config_file=/etc/postgresql/9.1/main/postgresql.conf " -O " -c config_file=/etc/postgresql/9.4/main/postgresql.conf "
--------------------
Проверяем что все ОК пункты
postgres@xxx:~/upgrade$ /usr/lib/postgresql/9.4/bin/pg_upgrade -c -k -b /usr/lib/postgresql/9.1/bin -B /usr/lib/postgresql/9.4/bin -d ../9.1/main/ -D ../9.4/main/ -o " -c config_file=/etc/postgresql/9.1/main/postgresql.conf " -O " -c config_file=/etc/postgresql/9.4/main/postgresql.conf "
Performing Consistency Checks
-----------------------------
Checking cluster versions ok
Checking database user is a superuser ok
Checking database connection settings ok
Checking for prepared transactions ok
Checking for reg* system OID user data types ok
Checking for contrib/isn with bigint-passing mismatch ok
Checking for invalid "line" user columns ok
Checking for presence of required libraries ok
Checking database user is a superuser ok
Checking for prepared transactions ok
*Clusters are compatible*
4. Теперь если все ОК, убираем флаг «-c» ( check ) и ждем завершения миграции
5. Гасим старый кластер ( я не удалял, а на всякий случай просто перенес из рабочего каталога наружу )
mv /usr/lib/postgresql/9.1 /root
6. Меняем в настройках нового кластера порт на порт старого кластера в /etc/postgresql/9.4/main/
7. Стартуем :
/etc/init.d/postgresql start