17.6. Обновление кластера Tantor BE#

17.6. Обновление кластера Tantor BE

17.6. Обновление кластера Tantor BE #

Этот раздел рассматривает, как обновить данные вашей базы данных с одной версии Tantor BE на более новую.

Текущие номера версий PostgreSQL состоят из основного и дополнительного номера версии. Например, в номере версии 10.1, 10 - это основной номер версии, а 1 - дополнительный номер версии, что означает, что это будет первый дополнительный релиз основного релиза 10. Для версий до PostgreSQL версии 10.0 номера версий состоят из трех чисел, например, 9.5.3. В таких случаях основная версия состоит из первых двух групп цифр номера версии, например, 9.5, а дополнительная версия - третье число, например, 3, что означает, что это будет третий дополнительный релиз основного релиза 9.5.

Минорные релизы никогда не изменяют внутренний формат хранения и всегда совместимы с более ранними и более поздними минорными релизами той же основной версии. Например, версия 10.1 совместима с версией 10.0 и версией 10.6. Аналогично, например, версия 9.5.3 совместима с версиями 9.5.0, 9.5.1 и 9.5.6. Чтобы обновиться между совместимыми версиями, просто замените исполняемые файлы, когда сервер выключен, и перезапустите сервер. Каталог данных остается неизменным - минорные обновления настолько просты.

Для основных версий Tantor BE формат внутреннего хранения данных может изменяться, что усложняет обновления. Традиционным методом перемещения данных на новую основную версию является выгрузка и восстановление базы данных, хотя это может быть медленным процессом. Более быстрый метод - pg_upgrade. Также доступны методы репликации, о которых будет рассказано ниже. (Если вы используете предустановленную версию Tantor BE, она может предоставлять скрипты для помощи в обновлении основной версии. Для получения подробной информации обратитесь к документации на уровне пакета).

Новые основные версии обычно также вводят некоторые видимые для пользователя несовместимости, поэтому могут потребоваться изменения в программировании приложений. Все видимые для пользователя изменения перечислены в заметках к релизам (Предметный указатель E); особое внимание следует уделить разделу, помеченному как "Миграция". Хотя вы можете обновиться с одной основной версии на другую без обновления промежуточных версий, вы должны прочитать заметки к релизу основных версий всех промежуточных версий.

Осторожные пользователи захотят протестировать свои клиентские приложения на новой версии перед полным переходом; поэтому часто рекомендуется установка параллельных установок старых и новых версий. При тестировании основного обновления Tantor BE рассмотрите следующие категории возможных изменений:

Administration

Возможности мониторинга и управления сервером доступные администраторам, часто изменяются и улучшаются в каждом мажорном релизе.

SQL

Обычно это включает в себя новые возможности SQL-команд и не изменяет поведение, если это не указано явно в заметках к релизу.

Library API

Обычно библиотеки, такие как libpq, только добавляют новую функциональность, если не указано иное в заметках к релизам.

System Catalogs

Системные каталоги обычно влияют только на инструменты управления базами данных.

Server C-language API

Это включает изменения в API функций бэкенда, которые написаны на языке программирования C. Такие изменения затрагивают код, который ссылается на функции бэкенда глубоко внутри сервера.

17.6.1. Обновление данных с помощью pg_dumpall #

Один из способов обновления - это выгрузка данных из одной основной версии Tantor BE и их восстановление в другой - для этого необходимо использовать инструмент логического резервного копирования, такой как pg_dumpall; методы резервного копирования на уровне файловой системы не будут работать. (Существуют проверки, которые не позволяют использовать каталог данных с несовместимой версией Tantor BE, поэтому нельзя нанести большой вред, пытаясь запустить неправильную версию сервера на каталоге данных).

Рекомендуется использовать программы pg_dump и pg_dumpall из новой версии PostgreSQL, чтобы воспользоваться улучшениями, которые могли быть внесены в эти программы. Текущие версии программ для создания резервных копий могут читать данные с любой версии сервера начиная с 9.2.

Эти инструкции предполагают, что ваша существующая установка находится в каталоге /usr/local/pgsql, а область данных - в каталоге /usr/local/pgsql/data. Замените пути соответствующим образом.

  1. Если вы делаете резервную копию, убедитесь, что ваша база данных не обновляется. Это не влияет на целостность резервной копии, но измененные данные, конечно, не будут включены. При необходимости измените разрешения в файле /usr/local/pgsql/data/pg_hba.conf (или эквивалентном) для запрета доступа всем, кроме вас. См. Глава 19 для дополнительной информации о контроле доступа.

    Для создания резервной копии вашей базы данных выполните следующую команду:

    pg_dumpall > outputfile
    

    Для создания резервной копии вы можете использовать команду pg_dumpall из текущей версии; см. Раздел 24.1.2 для получения дополнительной информации. Однако, для лучших результатов рекомендуется использовать команду pg_dumpall из Tantor BE 16.8, так как эта версия содержит исправления ошибок и улучшения по сравнению с более старыми версиями. Хотя это рекомендация может показаться странной, так как вы еще не установили новую версию, рекомендуется следовать ей, если вы планируете установить новую версию параллельно с предыдущей версией. В этом случае вы можете завершить установку обычным образом и передать данные позже. Это также сократит время простоя.

  2. Выключите старый сервер:

    pg_ctl stop
    

    На системах, где Tantor BE запускается при загрузке, вероятно, есть файл запуска, который выполнит то же самое. Например, на системе Red Hat Linux можно обнаружить, что это работает:

    /etc/rc.d/init.d/postgresql stop
    

    См. Глава 17 для получения подробной информации о запуске и остановке сервера.

  3. Если восстанавливаете из резервной копии, переименуйте или удалите старый каталог установки, если он не является специфичной для версии. Рекомендуется переименовать каталог, а не удалять его, на случай возникновения проблем и необходимости вернуться к ней. Имейте в виду, что каталог может занимать значительное место на диске. Чтобы переименовать каталог, используйте команду типа этой:

    mv /usr/local/pgsql /usr/local/pgsql.old
    

    (Убедитесь, что перемещаете каталог как единую единицу, чтобы относительные пути оставались неизменными).

  4. Создайте новый кластер базы данных, если это необходимо. Помните, что вы должны выполнить эти команды, находясь в системе под специальной учетной записью пользователя базы данных (которая уже должна быть у вас, если вы выполняете обновление).

    /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
    

  5. Восстановите предыдущий файл pg_hba.conf и любые изменения в файле postgresql.conf.

  6. Запустите сервер базы данных снова, используя специальную учетную запись пользователя базы данных:

    /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
    

  7. Наконец, восстановите свои данные из резервной копии с помощью:

    /usr/local/pgsql/bin/psql -d postgres -f outputfile
    

    Использование новую psql.

Минимальное время простоя можно достичь, установив новый сервер в другой каталог и запустив одновременно как старый, так и новый серверы на разных портах. Затем вы можете использовать что-то вроде:

pg_dumpall -p 5432 | psql -d postgres -p 5433

чтобы передать ваши данные.

17.6.2. Обновление данных с помощью pg_upgrade #

Модуль pg_upgrade позволяет перенести установку с одной основной версии Tantor BE на другую без изменения местоположения. Обновление может быть выполнено за несколько минут, особенно в режиме --link. Для этого требуются шаги, аналогичные шагам, описанным выше для pg_dumpall, например, запуск/остановка сервера, выполнение initdb. В документации по pg_upgrade описаны необходимые шаги.

17.6.3. Обновление данных через репликацию #

Также возможно использовать методы логической репликации для создания резервного сервера с обновленной версией Tantor BE. Это возможно, потому что логическая репликация поддерживает репликацию между разными основными версиями Tantor BE. Резервный сервер может быть на том же компьютере или на другом компьютере. После синхронизации с основным сервером (работающим на более старой версии Tantor BE), вы можете переключить основные серверы, сделать резервный сервер основным и выключить старый экземпляр базы данных. Такое переключение приводит к всего нескольким секундам простоя для обновления.

Этот метод обновления может быть выполнен с использованием встроенных средств логической репликации, а также с использованием внешних систем логической репликации, таких как pglogical, Slony, Londiste и Bucardo.