Как сделать автоматическое резервное копирование postgres базы данных в google app engine для приложения django? - PullRequest
0 голосов
/ 13 января 2020

У меня есть приложение Django, работающее в стандартном Google App Engine с использованием postgres SQL.

Я использую Google Cloud SQL (postgres) с Google App Engine. Как ежедневно выполнять резервное копирование базы данных в 2 часа ночи и сохранять файл. sql в Google Storage Bucket?

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

Используя django -extensions и django -dbbackup, я создал задание cron, которое работает локально. Но в GAE я получаю эту ошибку:

dbbackup.db.exceptions.CommandConnectorError: Error running: pg_dump db-development --host=67.74.73.21 --port=5432 --username=db-development-user --no-password --clean

Как мне установить пароль psql или использовать файл .pgpass в GAE?

Код:

# cron.yaml
cron:
- description: "DB Backup CRON job"
  url: /core/cron-jobs  # the path to your view
  schedule: every 2 minutes  # the frequency for running the job
  retry_parameters:
    min_backoff_seconds: 120
    max_doublings: 5

# views.py
def my_background_job(request):
    call_command('runjobs', 'daily')
    return HttpResponse('Cron run success', status="200")

# myapp>jobs>daily>db_backup.py (example documented in django_extensions)

from django_extensions.management.jobs import DailyJob

class Job(DailyJob):
    help = "Django Daily DB Backups"

    def execute(self):
        from django.core import management
        management.call_command("dbbackup")

# settings.py
INSTALLED_APPS = [
    ...
    'django_extensions',
    'dbbackup',  # django-dbbackup
]

Postgres Документация резервного копирования в https://cloud.google.com/sql/docs/postgres/backup-recovery/backing-up расплывчато. То, что Google называет «автоматическим резервным копированием», не очень полезно для меня, поскольку я нигде не получаю дамп базы данных в файле *. psql. Они упоминают: «В настоящее время вы можете использовать API только для установки пользовательских мест для резервных копий». но это только для географического c адреса.

Как мне сделать автоматические ежедневные резервные копии моей postgres БД (как *. psql дамп файлов в хранилище Google) для моего Django приложения, работающего на Google App Engine?

1 Ответ

0 голосов
/ 14 января 2020

Оформить заказ по ссылке ниже. https://cloud.google.com/sql/docs/postgres/import-export/exporting

В нем описывается, как вы можете использовать команду gcloud или API rest для экспорта вашей базы данных в формате SQL dump или CSV и сохранения ее в облачном хранилище.

Внутренне он использует pg_dump, то же самое, что и расширение django -dbbackup.

...