Как я могу автоматически восстановить свою промежуточную базу данных Heroku Postgres из ежедневной резервной копии? - PullRequest
0 голосов
/ 13 июня 2019

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

Я попытался запланировать запуск сценария bash на промежуточном блоке.выполнить восстановление.У меня есть скрипт, использующий интерфейс командной строки Heroku, чтобы получить URL последней резервной копии и выполнить восстановление.У меня проблема с аутентификацией интерфейса Heroku CLI.Поскольку я не могу открыть браузер на dyno, мне нужно найти безопасный способ аутентификации.

Должен ли я извлечь файл .netrc откуда-нибудь?Это даже хорошая идея дать динамометру CLI?Есть ли лучший способ сделать это, не вставая другой сервер для запуска восстановления?

1 Ответ

0 голосов
/ 13 июня 2019

Вы можете поместить токен авторизации в переменную HEROKU_API_KEY env в вашей промежуточной среде. Сгенерируйте токен с помощью heroku auth:token.

Затем установите токен при постановке с помощью heroku config:set HEROKU_API_KEY=token -a staging

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

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

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

Для этого есть пакет сборки - https://github.com/kbaum/heroku-database-backups. Я рекомендую вам прочитать код в пакете сборки - это довольно простые процессы. Я также хотел бы либо создать пакет сборки, либо просто написать свой собственный код, потому что он будет иметь полный доступ к вашей производственной среде. Я никогда не доверяю сторонним buildpack-пакетам с этим.

Бонусные баллы, если ваша работа убирает конфиденциальную информацию из вашей производственной базы данных для постановки. Это может сделать это:

  • Восстановление рабочей резервной копии во вторую базу данных
  • Удаление конфиденциальной информации из второй базы данных
  • Резервное копирование второй базы данных
  • Вставьте вторую резервную копию базы данных в корзину S3.
...