Я должен обновить с PostgreSQL 9.2 до 9.6. Ниже приведены проблемы, с которыми я сталкиваюсь:
Поскольку у нас есть настройка потоковой репликации, а PostgreSQL не поддерживает обновление до более низкой версии в режиме потоковой репликации, когда я обновляю master, мне приходится перестраивать ведомые устройства, и это занимает 3 часа. У меня нет этого свободного времени. В любой момент времени нам нужен один раб и один мастер. Есть ли другой способ выполнить обновление без необходимости перестраивать ведомые устройства, используя потоковую репликацию?
Для построения логической репликации мы думали об использовании slony, но у slony есть некоторые ограничения в том, что он не реплицируется автоматически:
- Изменения в больших объектах (BLOBS)
- Изменения, сделанные командами DDL
- Изменения в пользователях и ролях
... и наше приложение имеет непрерывные команды создания. Поэтому мы не можем использовать слони.
Пожалуйста, предложите что-нибудь, чтобы избежать перестройки подчиненного устройства и выполнить обновление с минимальным временем простоя и одним ведущим и одним подчиненным.
источник
Ответы:
Обновление базы данных потребует простоя на ваших серверах. Чтобы свести к минимуму время простоя, я бы посоветовал вам установить более новую версию на новом сервере, создать для нее настройку репликации и сбросить здесь все данные из старого экземпляра, а также изменить указание сервера, чтобы приложение указывало на новый сервер для подключения к базе данных.
источник
pg_upgrade
. Это заняло несколько минут (на главном и подчиненном вместе взятых), а на самосвал требуется более 3 часов.pg_upgrade
.