Назад | Перейти на главную страницу

Как вызвать pg_dump из Google Cloud SQL

Я ищу решение для резервного копирования моих схем Cloud SQL (и файлов облачного хранилища).

Сначала я попытался использовать Cloud Scheduler для вызова googleapis (https://cloud.google.com/sql/docs/postgres/import-export/exporting), чтобы сделать экспорт базы данных. Проблема в том, что мне нужны определенные аргументы резервного копирования, и мне нужно экспортировать определенные схемы в базу данных PostgreSQL. У каждого из моих клиентов есть схема, и я хотел бы иметь возможность восстановить схему, не восстанавливая всю базу данных. Googleapis, похоже, не поддерживает экспорт конкретных схем (пока), поэтому я хотел бы вызвать pg_dump напрямую.

Та же проблема с использованием автоматического резервного копирования в Cloud SQL. Я не могу восстановить определенную схему в базе данных, и мне нужно хранить резервные копии как минимум в течение месяца.

Однако мне еще предстоит найти способ вызвать pg_dump, например, Облачные функции. Итак, в настоящее время я подумываю использовать свой собственный ноутбук с Windows 10 для вызова pg_dump и настройки ежедневной задачи в Windows. Я бы предпочел использовать Google Cloud вместо собственного ноутбука.

Если у кого-то есть идеи, как мне построить инфраструктуру резервного копирования, я буду очень признателен.

Подключите свой экземпляр cloudql к прокси> https://cloud.google.com/sql/docs/postgres/sql-proxy

тогда эти команды должны выполнять свою работу

pg_dump -U postgres -h localhost -p [PORT] [DBNAME] -n public --format=p  >publicBackup.sql

psql -U postgres -h localhost -p [PORT] [DBNAME]  -c "drop schema public cascade;" 

psql -U postgres -h localhost -p [PORT] [DBNAME] -n public -1 -f  ./publicBackup.sql

Вы можете выполнить эту работу из любого контейнера, у которого есть прокси-соединение с вашей базой данных.

Как вы упомянули, в документации говорится, что резервные копии работают только с экземплярами и базами данных, а не с конкретными схемами. Здесь ничего нового.

Я знаю, что это может быть не лучший вариант, но из-за этих ограничений вы рассматривали возможность обновления / изменения вашего дизайна? Одна база данных на каждого клиента, поэтому резервное копирование не станет головной болью. По крайней мере, пока они не выпустят что-то для резервного копирования или экспорта отдельных схем.

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