У меня есть приложение 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?