CentOS → Перенос данных PostgreSQL в CentOS ( из PostgreSQL 9.3 в PostgreSQL 9.4)
Всем привет.
В этот раз, я опишу способ миграции базы данных из старой версии PostgresSQL в новую, в феврале состоялся релиз PostgresSQL 9.4 и после тестирования, мы решили переехать на ее, до этого стояла PostgresSQL 9.3, дынных в ней было довольно много + статистика Zabbix за 1,5 года, которую было жалко терять т.к. в разговоре с руководством это сильно помогало аргументировать свою точку зрения.
Все это было сделано на ОС CentOS 6.6, но также будет работать на CentOS 7, в статье постараюсь описать оба варианта.
Предполагается что у вас есть сервер на котором установлен PostgresSQL 9.3.
Для начала нам необходимо установить PostgresSQL 9.4, добавим репозиторий и установим пакет.
Для CentOS 6
Для CentOS 7
теперь установим новый Postgres
нам необходимо заставить новый сервер временно работать на другом порту, стандартный порт 5432 мы переведем Postgres 9.4 на порт 5433
отредактируем конфиг
Находим строку
Превращаем в
Осталось инициализировать базу на новом сервере
Для CentOS 6
Для CentOS 7
Останавливаем старый сервер PostgresSQL
Для CentOS 6
Для CentOS 7
нам остается запустить pg_upgrade данная тулза принимает значения ключей
Тогда команда принимает вид:
Ждем когда все операции завершатся, а это зависит от размера баз.
Если у вас были прописаны доступы, то их необходимо перенести в новый сервер PostgresSQL
если требуется еще и конфиг то:
Запускаем PostgresSQL 9.4
Для CentOS 6
Для CentOS 7
Нам необходимо проанализировать данные и устранить возможные ошибки с помощью analyze_new_cluster.sh
После завершения, запустим удаление старых данных
Нам остается только удалить старый сервер 9.3
Если вы переносили конфиг от старой версии, в новую, и все работает, то остается добавить PostgresSQL 9.4 в автозагрузку системы, если вы решили остановить конфиг от новой версии, то необходимо вернуть стандартный порт:
Отредактируем конфиг:
Находим строку
Превращаем в
И перезагружаем Postgres, дальше пользуемся.
В этот раз, я опишу способ миграции базы данных из старой версии PostgresSQL в новую, в феврале состоялся релиз PostgresSQL 9.4 и после тестирования, мы решили переехать на ее, до этого стояла PostgresSQL 9.3, дынных в ней было довольно много + статистика Zabbix за 1,5 года, которую было жалко терять т.к. в разговоре с руководством это сильно помогало аргументировать свою точку зрения.
Все это было сделано на ОС CentOS 6.6, но также будет работать на CentOS 7, в статье постараюсь описать оба варианта.
Предполагается что у вас есть сервер на котором установлен PostgresSQL 9.3.
Для начала нам необходимо установить PostgresSQL 9.4, добавим репозиторий и установим пакет.
Для CentOS 6
rpm -ivh http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-1.noarch.rpm
Для CentOS 7
rpm -ivh http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-1.noarch.rpm
теперь установим новый Postgres
yum install postgresql94-server
нам необходимо заставить новый сервер временно работать на другом порту, стандартный порт 5432 мы переведем Postgres 9.4 на порт 5433
отредактируем конфиг
nano /var/lib/pgsql/9.4/data/postgresql.conf
Находим строку
#port = 5432
Превращаем в
port = 5433
Осталось инициализировать базу на новом сервере
Для CentOS 6
/etc/init.d/postgresql94-setup initdb
Для CentOS 7
/usr/pgsql-9.4/bin/postgresql94-setup initdb
Останавливаем старый сервер PostgresSQL
Для CentOS 6
/etc/init.d/postgresql-9.3 stop
Для CentOS 7
systemctl stop postgresql-9.3
нам остается запустить pg_upgrade данная тулза принимает значения ключей
-b — Директория со старыми бинарниками postgresql
-B — Директория с новыми бинарниками postgresql
-d — Расположения старых баз postgresql
-D — Расположения новых баз postgresql
Тогда команда принимает вид:
/usr/pgsql-9.4/bin/pg_upgrade -v -b /usr/pgsql-9.3/bin/ -B /usr/pgsql-9.4/bin/ -d /var/lib/pgsql/9.3/data/ -D /var/lib/pgsql/9.4/data/
Ждем когда все операции завершатся, а это зависит от размера баз.
Если у вас были прописаны доступы, то их необходимо перенести в новый сервер PostgresSQL
cp /var/lib/pgsql/9.3/data/pg_hba.conf /var/lib/pgsql/9.4/data/
если требуется еще и конфиг то:
cp /var/lib/pgsql/9.3/data/postgresql.conf /var/lib/pgsql/9.4/data/
Запускаем PostgresSQL 9.4
Для CentOS 6
/etc/init.d/postgresql-9.4 start
Для CentOS 7
systemctl start postgresql-9.4
Нам необходимо проанализировать данные и устранить возможные ошибки с помощью analyze_new_cluster.sh
sh /var/lib/pgsql/analyze_new_cluster.sh
После завершения, запустим удаление старых данных
sh /var/lib/pgsql/delete_old_cluster.sh
Нам остается только удалить старый сервер 9.3
yum remove postgresql93
Если вы переносили конфиг от старой версии, в новую, и все работает, то остается добавить PostgresSQL 9.4 в автозагрузку системы, если вы решили остановить конфиг от новой версии, то необходимо вернуть стандартный порт:
Отредактируем конфиг:
nano /var/lib/pgsql/9.4/data/postgresql.conf
Находим строку
port = 5433
Превращаем в
port = 5432
И перезагружаем Postgres, дальше пользуемся.
0 комментариев