Перенос базы данных heroku в Amazon RDS с минимальным временем простоя

15

У меня есть база данных heroku postgres, и я хочу перенести ее в Amazon RDS для экономии средств. Какой способ сделать это с минимальным временем простоя? Обычно это включает в себя репликацию базы данных в режиме реального времени, а затем продвижение реплицированной БД в качестве основной БД.

Я знаю, что могу использовать базу данных последователей для переноса БД в heroku, и я могу использовать базу данных реплики чтения для переноса БД в Amazon RDS. Есть ли подобный метод для создания базы данных репликации базы данных heroku, которая живет в моей собственной Amazon RDS?


источник
2
вы можете сделать раба в RDS, когда все будет скопировано, удалить геройку-мастера, продвинуть RDS к Мастеру.
Сэм
2
@SamD Я не думал, что Amazon поддерживает подчиненных PostgreSQL, которые получают данные из внешних баз данных. Они добавили это? Я не вижу этого в docs.aws.amazon.com/AmazonRDS/latest/UserGuide/… . Если он был добавлен, ссылка документации будет очень высокая оценка. Как вы кормите это pg_basebackupдля начала? И иметь дело с различными основными версиями?
Крейг Рингер

Ответы:

3

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

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html

и даже если они это сделали, AFAICT единственные опции экспорта, предлагаемые Heroku, это pg_dumps (т.е. не basebackups или возможность настроить внешний узел горячего резервирования):

https://devcenter.heroku.com/articles/heroku-postgres-import-export

Если вам повезет, вы используете новую версию Postgres, достаточно новую для поддержки параллельного pg_dump (9.3+) и параллельного pg_restore (8.4+), что сделает вашу работу немного быстрее. И, надеюсь, вы можете позволить себе взять окно обслуживания, во время которого вы блокируете записи на ваш сайт, пока происходит переключение ...

Джош Купершмидт
источник
1

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

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

Должно быть достаточно легко увидеть, какие записи отсутствуют (например: в таблице 1 все записи с идентификатором 100 или ниже отсутствуют), прочитав первую строку в базе данных RDS. Тогда написание простого сценария экспорта не должно быть слишком сложным, если у вас много таблиц.

Надеюсь, это поможет

Purefan
источник
1

Похоже, что AWS DMS (служба миграции баз данных) поддерживает перенос данных из внешних экземпляров SQL. Мне удалось настроить задачу миграции, которая копирует данные и изменения из Heroku в RDS. Работает ли это на самом деле для меня, еще неизвестно;)

--- РЕДАКТИРОВАТЬ ---

Похоже, такие сервисы, как DMS, не работают с Heroku, потому что им требуется больше привилегированных ролей, чем позволяет Heroku в своих базах данных: https://help.heroku.com/E10ZZ6IJ/why-can-ti-use-third-party-tools -в-повторность-мой-Heroku Postgres-база-к-а-не-Heroku-база

Мерфи Рэндл
источник