Подтвердить что ты не робот

Обновление до постгрэса на острове Героку

Каков рекомендуемый способ обновления базы данных производства Heroku Postgres до 9.2 с минимальным временем простоя? Можно ли использовать последователя, или мы должны взять маршрут pgbackups/snapshots?

4b9b3361

Ответ 1

До логических последователей в 9.4 вам придется сбрасывать и восстанавливать (по причинам, описанным Крейгом). Вы можете упростить это с помощью pgbackups: transfer. Прямая передача быстрее, чем дамп и восстановление, но знайте, что у вас не будет моментального снимка.

script ниже в основном Heroku Использование резервных копий PG для обновления баз данных Heroku Postgres с изменениями для pgbackups: передача. (Если у вас несколько экземпляров, скажем, промежуточного сервера, добавьте "-a" или "-remote" в каждую строку Heroku, чтобы указать, какой сервер.)

# get the pgbackups plugin
heroku plugins:install git://github.com/heroku/heroku-pg-extras.git

# provision new db
heroku addons:add heroku-postgresql:crane --version=9.2

# wait for it to come online, make note of new color
heroku pg:wait

# prevent new data from arriving during dump
heroku ps:scale worker=0 web=0
heroku maintenance:on

# copy over the DB. could take a while.
heroku pgbackups:transfer OLDCOLOR NEWCOLOR

# promote new database as default for DATABASE_URL
heroku pg:promote NEWCOLOR

# start everything back up and test
heroku ps:scale worker=N web=N
heroku maintenance:off
heroku open

# remove old database
heroku addons:remove HEROKU_POSTGRESQL_OLDCOLOR

Обратите внимание, что если вы сравните свой размер данных между ними, новый может быть намного меньше из-за эффективности в 9.2. (Мой 9,2 был около 70% от 9.1.)

Ответ 2

Сторонники Heroku - AFAIK, только потоковые серверы репликации PostgreSQL. Это означает, что вы не можете использовать их в разных версиях, у вас должны быть базы данных, совместимые с двоичными файлами.

Те же методы должны применяться как обычные PostgreSQL, за исключением того, что вы не сможете использовать pg_upgrade на Heroku. Для этого требуется доступ к оболочке (ssh и т.д.) В качестве пользователя postgres в системе, в которой размещается база данных, поэтому я сомневаюсь, что это возможно на Heroku, если они не предоставили инструмент для запуска pg_upgrade для вас. Я не могу найти много информации об этом.

Вам, вероятно, придется взглянуть на использование Slony-I, Bucardo или другого решения для репликации на основе триггеров, чтобы выполнить обновление, если вы не найдете способ запустить pg_upgrade в экземпляре базы данных Heroku. Основная идея заключается в том, что вы создали новый экземпляр 9.2, используя Slony для клонирования данных из экземпляра 9.1 в него, а затем, когда они полностью синхронизированы, вы остановите экземпляр 9.1, удалите триггеры Slony и переключите клиентов на 9.2.

Найдите дополнительную информацию о "postgresql low downtime upgrade slony" и т.д., см., как вы идете.