Обновите PostgreSQL 9.X до 12.X в Windows

2.

nomad_irk

Сейчас в теме

3.

shirik666

Сейчас в теме

4.

nomad_irk

Сейчас в теме

( 3
)Это понятно, но выбрать нужно что-то одно.

5.

shirik666

Сейчас в теме

( 4
) не всегда в работе имеется право выбора. По существу видимо ответа я не дождусь)

7.

AppTester

Сейчас в теме

6.

AppTester

Сейчас в теме

Судя по всему, так:


— Забэкапить старые конфигурационные файлы pg_hba.conf и postgresql.conf


— Остановить службы 1С и postgresql


— Установить новую версию postgresql


— Перенести изменения из старых конфигурационных файлов в новые


— Рестартовать службу postgresql,


— Стартовать службу 1С

8.

shirik666

Сейчас в теме

( 6
) сделала так и надо понять правильно ли я сделала тк у меня впереди еще 2 сервера)

Обновите PostgreSQL 9.X до 12.X в Windows

Обновите PostgreSQL 9.X до 12.X в Windows

9.

ansh15

Сейчас в теме

( 8
) Нормально все.

Можно перенести всю папку data на отдельный диск, чтобы не зависеть от места инсталляции PostgreSQL, во избежание возможной путаницы(вдруг снесете старый постгрес вместе с базами).


Утилиты pg_dump/pg_restore в многопоточном режиме c флагом -j N, где N — число быстрых, высокопроизводительных ядер, позволят существенно сократить время выполнения резервного копирования и восстановления.

10.

shirik666

Сейчас в теме

отлично спасибо))))


( 9
) у нас C это ssd диск поэтому базы там. Бекап делаем в многопоточном, но все равно не очень быстро получается.

11.

AppTester

Сейчас в теме

( 10
) Ага, ну или хотя бы на том же диске перенести базы в независимый каталог, а то правда как-то неаккуратно получается, что он привязан к конкретной версии PostgreSQL, тем более старой.

12.

shirik666

Сейчас в теме

13.

ansh15

Сейчас в теме

( 12
) Остановить службу PostgreSQL.


Перенести папку data в желаемое место.


Потом проделать(по аналогии)

нехитрые манипуляции в реестре

, указав для параметра -D нужный путь. Запустить службу.


Можно просто переустановить PostgreSQL указав нужный путь размещения баз.

14.

shirik666

Сейчас в теме

  • Обновление версии PostgreSQL: инструкция

PostgreSQL обновление версии
выполняется разными способами:

  • Установка пакетов с новой версией PostgreSQL — подходит только для минорных обновлений, прежде чем выполнять, необходимо изучить release notes;
  • Использование стандартной программы pg_dumpall
    — надёжный способ, но возможен длительный downtime.
  • Использование стандартной программы pg_upgrade
    — быстрый способ, но возможны ошибки.
  • Обновление через логическую репликацию — минимальный downtime, однако подходит только для версий PostgreSQL > 10.0. Для более ранних версий требуются расширения.

Выбор зависит от того, какой релиз используется на сервере и до какой версии вы хотите обновиться. 

В этой статье разберём способы обновления.

Главное — понимать особенности обновлений между разными версиями. 

Номера состоят из двух цифр — например, 10.1. Первая цифра — номер основной версии . Вторая цифра — номер корректирующего релиза

До PostgreSQL 10 номера состоят из трёх цифр. Например, 9.6.3. Здесь 9.6 — номер основного выпуска, а 3 — номер дополнительной версии.

Понимать эту разницу нужно для того, чтобы правильно выбирать способ обновления.

В корректирующих версиях не меняется форма данных. Благодаря этому нет проблем с совместимостью. Поэтому переход с PostgreSQL 10.1 на 10.6 выполняется без лишних затрат ресурсов. Для обновления выключите сервер, замените исполняемые файлы и запустите сервер заново.

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

В основных версиях формат данных может измениться. Это усложняет обновление. В таком случае нельзя изменить номер. Нужно или выгружать данные и загружать их заново, или использовать программу pg_upgrade
, или применять логическую репликацию.

Обо всех этих способах поговорим ниже.

Обновление в рамках одной основной версии

Посмотрим на примере апдейта PostgreSQL 14.1 до PostgreSQL 14.3 на сервере Ubuntu. 

PostgreSQL доступен на Ubuntu по умолчанию. Обновитесь командой:

   sudo apt-get upgrade  
  

Debian и Ubuntu выпускают только одну версию PostgreSQL для каждого выпуска ОС. Например, в Debian Squeeze/6.0 есть только PostgreSQL 8.4. Если вам нужна другая версия PostgreSQL, используйте пакеты от PGDG.

Если вы хотите самый свежий релиз, то нужно прежде установить репозиторий Постгреса.

     
  

Импортируйте ключ подписи: 

     
  

Обновите перечень пакетов в системе:

   sudo apt-get update  
  

Установите нужную версию СУБД: 

   sudo apt-get -y install postgresql-14.3  
  

Чтобы посмотреть список установленных СУБД, выполните:

     
  

Также посмотрите список кластеров:

     
  

Прежде чем вносить изменения, остановите PostgreSQL:

   sudo service postgresql stop  
  

Когда пакеты Postgres устанавливаются, они создают для вас кластер по умолчанию. Нам нужно переименовать новый кластер postgres, чтобы при апгрейде старого кластера имена не конфликтовали.

   sudo pg_renamecluster 14.3 main main_pristine  
  

Обновите старый кластер:

   sudo pg_upgradecluster 14.1 main  
  
   sudo service postgresql start  
  

Снова проверьте список кластеров и убедитесь, что новый работает:

     
  

Избавьтесь от старого кластера:

   sudo pg_dropcluster 14.1 main  
  

Подставьте в эти команды нужные номера версий вместо 14.1 и 14.3. 

Обновление через pg_dumpall

Если нужно изменить основную версию, используйте программу pg_dumpall
. Суть этого метода в том, чтобы выгрузить данные из одной основной версии, а затем загрузить их в другую.

  1. Прежде чем выгружать данные, убедитесь, что в БД не проводятся никакие изменения прямо сейчас. В противном случае часть изменений может не попасть в итоговый дамп.
  2. Получите дамп и запишите его в файл:
   pg_dumpall > output_file  
  
     
  
  1. Измените имя старого каталога чтобы исключить появление конфликта имён:
   mv /usr/local/pgsql /usr/local/pgsql.old  
  

Старый каталог можно просто удалить. Но разумнее будет его переименовать, чтобы оставить возможность для восстановления. Вместо /usr/local/pgsql
укажите путь до своего каталога.

  1. Установите новую версию из исходного кода. Подробная инструкция на русском языке —  в
  2. Сформируйте новый кластер:
   /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data  
  
  1. Перенесите все изменения в файлы pg_hba.conf
    и postgresql.conf
    .
  2. Запустите сервер БД:
   /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data  
  
  1. Восстановите данные из резервной копии:
   /usr/local/pgsql/bin/psql -d postgres -f output_file  
  

Минус этого способа — сервер будет выключен длительное время. Для сокращения времени простоя можно установить новый сервер в другой каталог, а затем запустить старый и новый серверы на разных портах. Для переноса данных используйте команду:

     
  

Вместо 5432 и 5433 укажите номера портов, на которых вы запустили серверы.

Обновление через pg_upgrade

Чтобы не делать выгрузку и загрузку данных, используйте программу pg_upgrade
. Она помогает обновиться быстрее. Программа pg_upgrade
создаёт системные таблицы заново, учитывая изменения последних версий. При этом старые файлы данных сохраняются. Кроме того, pg_upgrade проверяет, что кластеры совместимы.

Программу pg_upgrade
помогает обновиться с PostgreSQL 8.4. X до текущего релиза СУБД.

Рассмотрим общий план обновления с помощью pg_upgrade
.

  1. Переместите старый кластер. Это нужно сделать, если каталог не был привязан к старому релизу. Например, он находится по адресу /usr/local/pgsql
    . Если вы его не переименуете, то при обновлении произойдёт конфликт.

при выключенном сервере

    mv /usr/local/pgsql /usr/local/pgsql.old    
  1. Соберите новую версию из исходного кода. Настройте configure, чтобы флаги были совместимы с конфигурацией старого кластера. Прежде чем начинать обновление, pg_upgrade
    проверит совместимость флагов.
  2. Инсталлируйте новые исполняемые файлы. Для размещения сервера в нестандартной директории, используйте prefix
    :
   make prefix=/usr/local/pgsql.new install  
  
  1. Используйте initdb
    , чтобы инициализировать новый кластер. Проверьте, что флаги совместимы с флагами старого кластера.
  2. Инсталлируйте разделяемые объектные файлы расширения. Если для них доступны обновления, pg_upgrade
    самостоятельно создаст скрипт для их последующей установки.
  3. Перенесите файлы полнотекстового поиска.
  4. Настройте аутентификацию peer
    в pg_hba.conf
    . Это нужно сделать, потому что pg_upgrade
    будет несколько раз подключаться к старому и новому хостам.
  5. Проверьте, что старый и новый серверы остановлены:
     pg_ctl -D /opt/PostgreSQL/9.6 stop  
pg_ctl -D /opt/PostgreSQL/14 stop
  1. Запустите pg_upgrade
    от нового сервера. Для начала вызовите программу в режиме проверки, добавив флаг: pg_upgrade --check
    . В ответ вы получите перечень корректировок, которые необходимо внести вручную после опгрейда.
  2. Если вы вносили правки в файл pg_hba.conf
    , восстановите его предыдущее состояние pg_hba.conf
    . Иногда требуются изменения других конфигов на новом кластере, чтобы они соответствовали параметрам старого кластера.

Если результат устраивает, удалите ненужный кластер.

Подробности и особенности использования pg_upgrade
смотрите в

Использование логической репликации

В 10-й версии СУБД появился метод логической репликации объектов данных и изменений в них. Он основан на использовании репликационных идентификаторов — обычно ими выступают первичные ключи. 

В основе логической репликации лежит использование модели публикаций и подписок. Пользователь создаёт снимок публикуемой базы данных и копирует его на подписчика. В

одним из типичных сценариев использования логической репликации названа как раз репликация между разными основными версиями PostgreSQL. 

Подробнее о том, как работает логическая репликация, вы можете узнать из отдельной статьи
.

Резервный сервер может располагаться на том же хосте или на другом. После завершения синхронизации доступны разные опции. Например, вы можете сделать новый сервер главным, а старый — отключить.

Главный плюс логической репликации — минимальный downtime. Прерывание работы сервера в некоторых случаях ограничивается несколькими секундами. 

Заключение

Мы рассмотрели универсальные методы апдейта PostgreSQL. Иногда процесс отличается. Например,
обновление версии PostgreSQL для 1C требует установки дополнительных зависимостей.

В некоторых случаях обязанности по обновлению PostgreSQL можно делегировать. Например, Timeweb предлагает
облачные базы данных

. Среди них — PostgreSQL актуальной версии. Обновление и администрирование базы в этом случае возьмет на себя провайдер. При таком подходе изменить версию PostgreSQL можно в один клик через панель управления. 

This section discusses how to upgrade your database data from one release to a newer one.

Читайте также:  Выездная и камеральная проверки ФСС

Текущие номера версий состоят из старшего и младшего номера версии. Например, в номере версии 10.1 10 — это основной номер версии, а 1 — это дополнительный номер версии, что означает, что это будет первый второстепенный выпуск основного выпуска 10. Для выпусков до версии 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. Для обновления между совместимыми версиями просто замените исполняемые файлы, пока сервер не работает, и перезапустите сервер. Каталог данных остается неизменным — незначительные обновления выполняются очень просто.

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

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

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

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

Серверный API языка C

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

19.6.1. Обновление данных через #

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

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

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

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


    Чтобы создать резервную копию вашей установки базы данных, введите:

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

      pg_ctl stop
      
    
      

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

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

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

  3. При восстановлении из резервной копии переименуйте или удалите старый каталог установки, если он не зависит от версии. Рекомендуется переименовать каталог, а не удалять его, на случай, если у вас возникнут проблемы и вам понадобится вернуться к нему. Имейте в виду, что каталог может занимать значительный объем дискового пространства. Чтобы переименовать каталог, используйте такую ​​команду:

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

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

  4. Установите новую версию, как описано в Главе 17
    .

  5.   /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
      
    
      
  6. Восстановить предыдущую pg_hba.conf
    и любой postgresql.conf
    модификации.

  7.   /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
      
    
      
  8. Наконец, восстановите данные из резервной копии с помощью:

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

    с использованием .

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

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

для передачи ваших данных.

19.6.2. Обновление данных через #


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

19.6.3. Обновление данных посредством репликации #

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

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



pg_upgrade — обновление экземпляра сервера

Описание

Программа (ранее называвшаяся ) Позволяет обновить данные в каталоге базы данных до последней основной версии без операции выгрузки/восстановления данных, обычно создается при обновлениях основной версии, например, при переходе с 9.5.8 на 9.6.4 или на 10.7 к. 11.2. Эти действия не требуются при установке корректирующей версии, например, при переходе с 9.6.2 на 9.6.3 или с 10.1 на 10.2.

С выходом нового основного решения в PostgreSQL появляются новые возможности, которые часто меняют структуру системных таблиц, но внутренний формат хранения меняется редко. Учитывая этот факт, калибровка позволяет быстро обновлять, создавать системные таблицы заново, но сохраняя старые файлы данных. Если при обновлении основного формата хранения данных данные изменяются так, что данные в старом формате окажутся нечитаемыми, такое обновление невозможно будет прочитать. ( Сообщество разработчиков постарается не допускать подобных ситуаций.)

Программа делает всё возможное, чтобы убедиться в том, что старые и новые кластеры двоично-совместимы, в частности проверяя параметры времени компиляции и разрядность (32/64 бита) исполняемых файлов. Важно, чтобы все внешние модули также были двоично-совместимыми, хотя это проверить невозможно.

pg_upgrade обновление прошивки с версии 8.4. X и новости до текущей основной версии, включая бета-выпуски и сборку кода кода.

Параметры

принимает следующие аргументы командной строки:

каталог с исполняемыми файлами старой версии PostgreSQL; переменная окружения PGBINOLD

каталог с исполняемыми файлами новой версии PostgreSQL, по умолчанию это каталог, в котором располагается ; переменная окружения PGBINNEW

только проверить кластеры, не изменять никакие данные

каталог конфигурации старого кластера; переменная окружения PGDATAOLD

каталог конфигурации нового кластера; переменная окружения PGDATANEW

число одновременно задействуемых процессов или потоков

использовать жёсткие ссылки вместо копирования файлов в новый кластер

параметры, передаваемые непосредственно старой программе postgres
; несколько параметров складываются вместе

параметры, передаваемые непосредственно новой программе postgres
; несколько параметров складываются вместе

номер порта старого кластера; переменная окружения PGPORTOLD

номер порта нового кластера; переменная окружения PGPORTNEW

сохранить SQL и журналы сообщений даже при успешном завершении

каталог, в котором будет создавать сокеты процесс postmaster во время обновления; по умолчанию выбирается текущий рабочий каталог; переменная окружения PGSOCKETDIR

включить подробные внутренние сообщения

показать версию, а затем завершиться

Использовать эффективное клонирование файлов (в ряде систем это называется ) вместо копирования файлов в новый кластер. В результате файлы данных могут копироваться практически мгновенно, как и с использованием -k
/ --link
, но последующие изменения не будут затрагивать старый кластер.

Клонирование файлов поддерживается не во всех операционных системах и только с определёнными файловыми системами. Если этот режим выбран, но клонирование не поддерживается, при выполнении произойдёт ошибка. В настоящее время оно поддерживается в Linux (с ядром 4.5 или новее) с Btrfs и XFS (если файловая система была создана с поддержкой reflink), а также в macOS с APFS.

показать справку, а затем завершиться

Использование

Далее описан план обновления с использованием :

Замечания

создаёт в текущем рабочем каталоге различные временные файлы, например выгружая схему базы. В целях безопасности этот каталог не должен быть доступен для чтения и записи другим пользователям.

Программа запускает на короткое время процессы postmaster со старым и новым каталогом данных. Временные файлы сокетов Unix для взаимодействия с этими процессами по умолчанию создаются в текущем рабочем каталоге. В некоторых ситуациях путь к файлу в текущем каталоге может оказаться слишком длинным для имени сокета. В этом случае вы можете передать параметр -s
, чтобы файлы сокетов создавались в другом каталоге с более коротким путём. В целях безопасности этот каталог не должен быть доступен для чтения и записи другим пользователям. ( В Windows это не поддерживается.)

Программа сообщит обо всех актуальных для вашей инсталляции ошибках и потребностях перестроения или переиндексации базы; при этом будут созданы завершающие обновление скрипты, перестраивающие таблицы или индексы. Если вы попытаетесь автоматизировать обновление множества серверов, вы обнаружите, что для кластеров с одинаковыми схемами баз данных потребуются одинаковые действия после обновления; это объясняется тем, что эти действия диктуются схемой базы данных, а не данными пользователей.

Читайте также:  Фсс перевод

Для проверки развёртывания новой версии создайте копию только схемы старого кластера, наполните этот кластер фиктивными данными, и попробуйте обновить его.

не поддерживает обновление баз данных, в которых есть таблицы со столбцами, имеющими следующие системные типы данных reg*
, ссылающиеся на OID:

(Обновление regclass
, regrole
и regtype
поддерживается.)

Если вы производите обновление кластера версии до 9.2, в которой используется каталог только с файлами конфигурации, вы должны передать расположение собственно каталога с данными программе , а расположение каталога конфигурации передать серверу, например -d /каталог-данных -o '-D /каталог-конфигурации'
.

Если вы используете старый сервер версии до 9.1, работающий с нестандартным каталогом Unix-сокетов, либо его стандартное расположение отличается от принятого в новой версии, задайте в PGHOST
расположение сокета старого сервера. ( К Windows это не относится.)

Если вы хотите использовать режим ссылок на данные, но при этом исключить изменения в старом кластере при запуске нового, вам может подойти режим клонирования. Если же этот режим недоступен, сделайте копию старого кластера и обновите его в этом режиме. Чтобы получить рабочую копию старого кластера, воспользуйтесь командой rsync
и создайте предварительную копию кластера при работающем сервере, а затем отключите старый сервер и ещё раз запустите rsync --checksum
, чтобы привести эту копию в согласованное состояние. ( Ключ --checksum
необходим, потому что rsync
различает время с точностью только до секунд.) При этом вы можете исключить некоторые файлы, например postmaster.pid
, как описано в Подразделе 25.3.3
. Если ваша файловая система поддерживает снимки файловой системы или копирование при записи, вы можете воспользоваться этим для создания копии старого кластера и табличных пространств; при этом важно, чтобы такие снимки и копии файлов создавались одномоментно или когда сервер баз данных отключён.

Указана последовательность действий при обновлении PostgreSQL на примере Windows. Также описаны некоторые особенности.

Дано:
Кластеры PostgreSQL 9.6.7-1.1C и 1С, где «9.6.7-1.1C» — это версия установленного старого кластера, а «10.5-24.1C» — это версия нового кластера.

Задача:
 обновить 9.6.7-1.1C до 10.5-24.1C. 

Стоит отметить, что для некоторых ситуаций при обновлении, будет критично время простоя кластера, особенно при больших объемах баз. 

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

2. Копируем файлы настроек доступа к хосту pg_hba.conf и настроек кластер postgresql.conf из C:\Program Files\PostgreSQL\9.6.7-1.1C\data в любое место, в нашем случае в D:\temp. Файлы нам понадобятся для внесения изменений в новые файлы настроек от 10.5-24.1C, если таковые у вас есть.

3. Заходим в cmd
под администратором и вводим 

C:\Program Files\PostgreSQL\9.6.7-1.1C\bin\pg_dumpall -U postgres > D:\temp\db.out

Где db.out — файл дампа всего кластера (всех баз). Во время процесса будет запрошен пароль от пользователя PostgreSQL postgres, который вы вводили при установке 9.6.7-1.1C.

Рассмотрим 3 варианта обновления кластера

I вариант через pg_dumpall и psql

4. Останавливаем службы сервера 1С и службу от 9.6.7-1.1C

5. Устанавливаем 10.5-24.1C (установка по умолчанию в каталог 10.5-24.1C), пароль postgres оставляем прежним для удобства. Если установка происходит на тот же самый порт, то нет необходимости менять правила брендмауэра Windows. Я заведомо не деинсталирую 9.6.7-1.1C и не удаляю файлы баз PostgreSQL, т.к. я могу в любой момент вернуться к старому кластеру и запустить его без проблем.

Для кого-то критично место на диске, тогда следует на данном этапе деинсталировать кластер 9.6.7-1.1C и удалить файлы баз.

6. Файлы настроек из п. 2 мы сравниваем с аналогичными файлами из в C:\Program Files\PostgreSQL\10.5-24.1C\data и переносим необходимые изменения в новый файл. Не забываем сделать копию изначальных файлов 10.5-24.1C. Если у вас не было изменений в файлах 9.6.7-1.1C, то этот пункт делать не нужно.

7. Перезапускаем службу 10.5-24.1C, для применения новых настроек конфигурационных файлов.

8. Заходим cmd под администратором и проходим в 

C:\Program Files\PostgreSQL\10.5-24.1C\bin\psql -U postgres -f D:\temp\db.out

Для минимизации времени отключения кластера можно сделать следующим образом:

— в п.5, устанавливая 10.5-24.1C мы ставим новый порт 5433 и службы кластеров должны быть запущены

— далее в cmd запускаем:

C:\Program Files\PostgreSQL\10.5-24.1C\bin\psql -U postgres -p 5433 -f D:\temp\db.out

Возможно, придется настроить брендмауэр для порта 5433 

Во время процесса восстановления периодически нужно вводить пароль от пользователя postgres.

11. Стартуем службу сервера 1С. 

II вариант через pg_upgrade (миграция)

5. Останавливаем службу 9.6.7-1.1C

6. Устанавливаем 10.5-24.1C, пароль postgres оставляем прежним. 

7. Останавливаем службу 10.5-24.1

8. Заходим cmd под администратором и вводим 

C:\Program Files\PostgreSQL\10.5-24.1C\bin\pg_upgrade — U postgres —old-datadir «C:/Program Files/PostgreSQL/9.6.7-1.1C/data» —new-datadir «C:/Program Files/PostgreSQL/10.5-24.1C/data» —old-bindir «C:/Program Files/PostgreSQL/9.6.7-1.1C/bin» —new-bindir «C:/Program Files/PostgreSQL/10.5-24.1C/bin»

Во время процесса миграции периодически нужно вводить пароль от пользователя postgres.

9. Стартуем службу 10.5-24.1C

10. Стартуем службу сервера 1С. 

III вариант через полную переустановку кластеров PostgreSQL и 1С

4. Обязательное выполнение п. 1 и НЕ обязательное п. 3

5. Удаление 9.6.7-1.1C  и баз из кластера 1С

7. Файлы настроек из п. 2 мы сравниваем с аналогичными файлами из в C:\Program Files\PostgreSQL\10.5-24.1C\data и переносим необходимые изменения в новый файл. Не забываем сделать копию изначальных файлов 10.5-24.1C. Если у вас не было изменений в файлах 9.6.7-1.1C, то этот пункт делать не нужно.

8. Перезапускаем службу 10.5-24.1C, для применения новых настроек конфигурационных файлов.

9. Создание и загрузка баз 1С из dt архивов п.1.



pg_upgrade — обновить экземпляр сервера

Описание

Программа (ранее называвшаяся ) позволяет обновить данные в каталоге базы данных до последней основной версии без операции выгрузки/восстановления данных, обычно необходимой при обновлениях основной версии, например, при переходе от 9.5.8 к 9.6.4 или от 10.7 к 11.2. Эти действия не требуются при установке корректирующей версии, например, при переходе от 9.6.2 к 9.6.3 или от 10.1 к 10.2.

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

Программа делает всё возможное, чтобы убедиться в том, что старый и новый кластеры двоично-совместимы, в частности проверяя параметры времени компиляции и разрядность (32/64 бита) исполняемых файлов. Важно, чтобы и все внешние модули тоже были двоично-совместимыми, хотя это проверить не может.

pg_upgrade поддерживает обновление с версии 8.4. X и новее до текущей основной версии , включая бета-выпуски и сборки снимков кода.

Параметры

принимает следующие аргументы командной строки:

каталог с исполняемыми файлами старой версии PostgreSQL; переменная окружения PGBINOLD

каталог с исполняемыми файлами новой версии PostgreSQL, по умолчанию это каталог, в котором располагается ; переменная окружения PGBINNEW

только проверить кластеры, не изменять никакие данные

каталог конфигурации старого кластера; переменная окружения PGDATAOLD

каталог конфигурации нового кластера; переменная окружения PGDATANEW

число одновременно задействуемых процессов или потоков

использовать жёсткие ссылки вместо копирования файлов в новый кластер

параметры, передаваемые непосредственно старой программе postgres
; несколько параметров складываются вместе

параметры, передаваемые непосредственно новой программе postgres
; несколько параметров складываются вместе

номер порта старого кластера; переменная окружения PGPORTOLD

номер порта нового кластера; переменная окружения PGPORTNEW

сохранить SQL и журналы сообщений даже при успешном завершении

каталог, в котором будет создавать сокеты процесс postmaster во время обновления; по умолчанию выбирается текущий рабочий каталог; переменная окружения PGSOCKETDIR

включить подробные внутренние сообщения

показать версию, а затем завершиться

Использовать эффективное клонирование файлов (в ряде систем это называется ) вместо копирования файлов в новый кластер. В результате файлы данных могут копироваться практически мгновенно, как и с использованием -k
/ --link
, но последующие изменения не будут затрагивать старый кластер.

Клонирование файлов поддерживается не во всех операционных системах и только с определёнными файловыми системами. Если этот режим выбран, но клонирование не поддерживается, при выполнении произойдёт ошибка. В настоящее время оно поддерживается в Linux (с ядром 4.5 или новее) с Btrfs и XFS (если файловая система была создана с поддержкой reflink), а также в macOS с APFS.

показать справку, а затем завершиться

Использование

Далее описан план обновления с использованием :

Замечания

создаёт в текущем рабочем каталоге различные временные файлы, например выгружая схему базы. В целях безопасности этот каталог не должен быть доступен для чтения и записи другим пользователям.

Программа запускает на короткое время процессы postmaster со старым и новым каталогом данных. Временные файлы сокетов Unix для взаимодействия с этими процессами по умолчанию создаются в текущем рабочем каталоге. В некоторых ситуациях путь к файлу в текущем каталоге может оказаться слишком длинным для имени сокета. В этом случае вы можете передать параметр PGPORTNEW
, чтобы файлы сокетов создавались в другом каталоге с более коротким путём. В целях безопасности этот каталог не должен быть доступен для чтения и записи другим пользователям. ( В Windows это не поддерживается.)

Программа сообщит обо всех актуальных для вашей инсталляции ошибках и потребностях перестроения или переиндексации базы; при этом будут созданы завершающие обновление скрипты, перестраивающие таблицы или индексы. Если вы попытаетесь автоматизировать обновление множества серверов, вы обнаружите, что для кластеров с одинаковыми схемами баз данных потребуются одинаковые действия после обновления; это объясняется тем, что эти действия диктуются схемой базы данных, а не данными пользователей.

Для проверки развёртывания новой версии создайте копию только схемы старого кластера, наполните этот кластер фиктивными данными, и попробуйте обновить его.

Читайте также:  Опыт трансформации страхователей в Фонде социального страхования юридических лиц, навигации по процессам регистрации, управления личным кабинетом и использования функции электронного больничного листа

не поддерживает обновление баз данных, в которых есть таблицы со столбцами, имеющими следующие системные типы данных reg*
, ссылающиеся на OID:

(Обновление regclass
, regrole
и regtype
поддерживается.)

Если вы производите обновление кластера версии до 9.2, в которой используется каталог только с файлами конфигурации, вы должны передать расположение собственно каталога с данными программе , а расположение каталога конфигурации передать серверу, например -d /каталог-данных -o '-D /каталог-конфигурации'
.

Если вы используете старый сервер версии до 9.1, работающий с нестандартным каталогом Unix-сокетов, либо его стандартное расположение отличается от принятого в новой версии, задайте в PGHOST
расположение сокета старого сервера. ( К Windows это не относится.)

Если вы хотите использовать режим ссылок на данные, но при этом исключить изменения в старом кластере при запуске нового, вам может подойти режим клонирования. Если же этот режим недоступен, сделайте копию старого кластера и обновите его в этом режиме. Чтобы получить рабочую копию старого кластера, воспользуйтесь командой rsync
и создайте предварительную копию кластера при работающем сервере, а затем отключите старый сервер и ещё раз запустите rsync --checksum
, чтобы привести эту копию в согласованное состояние. ( Ключ --checksum
необходим, потому что rsync
различает время с точностью только до секунд.) При этом вы можете исключить некоторые файлы, например postmaster.pid
, как описано в Подразделе 26.3.3
. Если ваша файловая система поддерживает снимки файловой системы или копирование при записи, вы можете воспользоваться этим для создания копии старого кластера и табличных пространств; при этом важно, чтобы такие снимки и копии файлов создавались одномоментно или когда сервер баз данных отключён.

This text will elaborate on upgrading the PostgreSQL database from the 9.x version to the 12.x version. Upgrading the PostgreSQL server can be done by installing the newer version of Postgres alongside the current one and executing the pg_upgrade command with essential parameters. A manual backup and restore process is not required when we use the pg_upgrade as the command will automatically copy the data directory to the newer version. We will cover many requirements in-depth in this text to eradicate the numerous dynamic errors and challenges.

Backup Databases

  CD C:\Program Files\PostgreSQL\9.0\bin
pg_dump -U Postgres -W -F t dvdrental > "V:\ PostgreSQL Backup\dvdrental.tar"  

Обновите PostgreSQL 9.X до 12.X в Windows

Here, the default port number 5432 is under use by my currently running PostgreSQL server, and the version of PostgreSQL 9.6.19. After that, I have used the \
l command to get the list of all databases existing on the PostgreSQL.

Обновите PostgreSQL 9.X до 12.X в Windows

Обновите PostgreSQL 9.X до 12.X в Windows

  SELECT schemaname, relname, n_live_tup
 from pg_stat_user_tables ORDER BY n_live_tup DESC;
  

Обновите PostgreSQL 9.X до 12.X в Windows

Install PostgreSQL 12

We must ensure that we download the PostgreSQL 12.x version from this Postgres Official Link
. Download and install it by selecting the new installation file directory. » C:\Program Files\PostgreSQL \12″ is the default installation directory for the 12.x version.

Обновите PostgreSQL 9.X до 12.X в Windows

Here, to install the Binaries and Data, we used the default installation directory.

Обновите PostgreSQL 9.X до 12.X в Windows

The data directory can also be modified. Generally, we use the SAN disk storage drive, so the drive path and folder can be changed accordingly.

Обновите PostgreSQL 9.X до 12.X в Windows

Обновите PostgreSQL 9.X до 12.X в Windows

The installation wizard will complete the setup installation if we have supplied proper legitimate inputs.

Обновите PostgreSQL 9.X до 12.X в Windows

Обновите PostgreSQL 9.X до 12.X в Windows

From the screenshot above, we can see that the latest Postgre12.4 is running on port number 5433.

Обновите PostgreSQL 9.X до 12.X в Windows

We must give full privileges to the PostgreSQL installation directory (C:\Program Files\PostgreSQL ) before running the pg_upgrade utility. Otherwise, that will immediately raise a permission error as below. В командной строке выполните следующее:

 Компакт-диск C:\Program Files\PostgreSQL \12\bin
УСТАНОВИТЬ ПАРОЛЬ PGP = 1234
pg_upgrade -d "c:\Program Files\PostgreSQL \9.6\data" -D"c:\Program Files\PostgreSQL \12\data" -b "c:\Program Files\PostgreSQL \9.6\bin" -B "c :\Program Files\PostgreSQL \12\bin" -U Postgres 

Обновите PostgreSQL 9.X до 12.X в Windows

Я предлагаю создать отдельную папку, либо на диске C, либо на другом диске, и выполнить pg_upgrade, потому что проблема возникает, когда мы запускаем файл. pg_uppgrade из базового каталога «C:\Program Files\PostgreSQL \12\bin» и заключается в том, что она генерирует несколько файлов журналов, включая журнал ошибок.

Обновите PostgreSQL 9.X до 12.X в Windows

Здесь мы создали одну папку TEMP на диске V:\ и предоставили всем полные права доступа к этой папке, чтобы избежать повторных конфликтных ситуаций.

Обновите PostgreSQL 9.X до 12.X в Windows

Теперь давайте запустим команду pg_upgrade после открытия командной строки, открытой в каталоге «V:\TEMP». Вот команда:

 УСТАНОВИТЬ PGPASSWORD=1234
"c:\Program Files\PostgreSQL \12\bin\pg_upgrade.exe" -d "c:\Program Files\PostgreSQL \9.6\data" -D"c:\Program Files\PostgreSQL \12\data" -b " c:\Program Files\PostgreSQL \9.6\bin" -B "c:\Program Files\PostgreSQL \12\bin" -U Postgres 

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


  • это каталог данных для более старой версии PostgreSQL 9.6
  • .


  • это каталог данных для более новой версии PostgreSQL 12
  • .


  • это папка каталога данных для более старой версии PostgreSQL 9.6
  • .


  • это папка каталога данных для более новой версии PostgreSQL 9.6
  • .


  • — пользователь, выполняющий миграцию (по умолчанию — Postgres)

Обновите PostgreSQL 9.X до 12.X в Windows

Здесь же, В этой же консоли добавляем лог обновления. Мы получим сообщение об ошибке на консоли, если во время миграции или обновления данных возникнет конфликтная ситуация. Для дальнейшего изучения ошибки мы можем просмотреть журнал ошибок в каталоге «V:\TEMP» в случае возникновения какой-либо ошибки или проблемы. Теперь вы поймете причину запуска команды pg_upgrade из другой папки, а не из каталога по умолчанию.

Используя ПОРТ 5433, необходимо подключить Postgres 12 и проверить детали базы данных и таблицы, как мы проверяли ранее в Postgres 9.6 в этом тексте.

Обновите PostgreSQL 9.X до 12.X в Windows

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

Обновите PostgreSQL 9.X до 12.X в Windows

Мы видим количество строк в таблице городов, как в Postgres 9.6.

Здесь последняя версия PostgreSQL работает через новый порт 5433, где ваши приложения будут настроены на порт старой версии 5432 для подключения к базам данных. Итак, у нас есть два варианта выхода из этой ситуации. Либо измените номер порта подключения Postgres в конфигурации приложения на 5433, либо измените номер порта в PostgreSQL 12 на 5432.



pg_upgrade — обновление экземпляра сервера

Описание

Программа (раннее называвшаяся ) Позволяет обновить данные в каталоге базы данных до последней основной версии без операции выгрузки/восстановления данных, обычно создается при обновлениях основной версии, например, при переходе с 9.5.8 на 9.6.4 или на 10.7 к. 11.2. Эти действия не требуются при установке корректирующей версии, например, при переходе с 9.6.2 на 9.6.3 или с 10.1 на 10.2.

С выходом нового основного решения в PostgreSQL появляются новые возможности, которые часто меняют структуру системных таблиц, но внутренний формат хранения меняется редко. Учитывая этот факт, калибровка позволяет быстро обновлять, создавать системные таблицы заново, но сохраняя старые файлы данных. Если при обновлении основного формата хранения данных данные изменяются так, что данные в старом формате окажутся нечитаемыми, такое обновление невозможно будет прочитать. ( Сообщество разработчиков постарается не допускать подобных ситуаций.)

Программа делает всё возможное, чтобы убедиться в том, что старые и новые кластеры двоично-совместимы, в частности проверяя параметры времени компиляции и разрядность (32/64 бита) исполняемых файлов. Важно, чтобы все внешние модули также были двоично-совместимыми, хотя это проверить невозможно.

pg_upgrade поддерживает обновление с версии 9.2. X и новее до текущей основной версии , включая бета-выпуски и сборки снимков кода.

Параметры

принимает следующие аргументы командной строки:

каталог с исполняемыми файлами старой версии PostgreSQL; переменная окружения PGBINOLD

каталог с исполняемыми файлами новой версии PostgreSQL, по умолчанию это каталог, в котором располагается ; переменная окружения PGBINNEW

только проверить кластеры, не изменять никакие данные

каталог конфигурации старого кластера; переменная окружения PGDATAOLD

каталог конфигурации нового кластера; переменная окружения PGDATANEW

число одновременно задействуемых процессов или потоков

использовать жёсткие ссылки вместо копирования файлов в новый кластер

По умолчанию pg_upgrade
ждёт, пока все файлы обновлённого кластера не будут надёжно записаны на диск. С данным параметром pg_upgrade
завершается быстрее, без ожидания, но в случае последующего сбоя операционной системы каталог данных может оказаться испорченным. Этот параметр может быть полезен при тестировании; в производственной среде применять его не следует.

параметры, передаваемые непосредственно старой программе postgres
; несколько параметров складываются вместе

параметры, передаваемые непосредственно новой программе postgres
; несколько параметров складываются вместе

номер порта старого кластера; переменная окружения PGPORTOLD

номер порта нового кластера; переменная окружения PGPORTNEW

сохранить SQL и журналы сообщений даже при успешном завершении

каталог, в котором будет создавать сокеты процесс postmaster во время обновления; по умолчанию выбирается текущий рабочий каталог; переменная окружения PGSOCKETDIR

включить подробные внутренние сообщения

показать версию, а затем завершиться

Использовать эффективное клонирование файлов (в ряде систем это называется ) вместо копирования файлов в новый кластер. В результате файлы данных могут копироваться практически мгновенно, как и с использованием -k
/ --link
, но последующие изменения не будут затрагивать старый кластер.

Клонирование файлов поддерживается не во всех операционных системах и только с определёнными файловыми системами. Если этот режим выбран, но клонирование не поддерживается, при выполнении произойдёт ошибка. В настоящее время оно поддерживается в Linux (с ядром 4.5 или новее) с Btrfs и XFS (если файловая система была создана с поддержкой reflink), а также в macOS с APFS.

показать справку, а затем завершиться

Использование

Далее описан план обновления с использованием :

Оцените статью
ФСС Help
Добавить комментарий