Как запланировать резервное копирование внешнего PostgreSQL с помощью Google Cloud Serverless?

У нас есть кластер PostgreSQL, управляемый DigitalOcean, и мы хотим выполнять резервное копирование в облачное хранилище Google по расписанию. Я планирую создать облачную функцию, которая будет работать по расписанию.

Поскольку наши базы данных не хранятся в Google Cloud, я не могу использовать это руководство, опубликованное Google. А поскольку для доступности pg_dump необходимо установить в системе, в Cloud Functions такой возможности нет.

Какие у меня есть варианты? Можно ли использовать что-то вроде psycopg2 в Python или pg в Node.js?

Пожалуйста, обратитесь к этому документу . если это не решит вашу проблему, не могли бы вы сказать мне, где работает ваш postgre?

Supriya Bharti 24.06.2024 17:45

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

Hannes Hultergård 24.06.2024 22:16

Можете ли вы рассказать, где работает ваш PostgreSQL?

Supriya Bharti 25.06.2024 15:08

Он работает на DigitalOcean

Hannes Hultergård 25.06.2024 17:17

Вы можете использовать pg_dump из Docker-контейнера, запущенного в запланированном задании Cloud Run . Хотя pg_dump снимки являются автономными, простыми и удобными в использовании, вместо этого вы можете рассмотреть возможность Восстановление на определенный момент времени - они будут делать один первоначальный снимок, а затем собирать только дельту, поэтому вам не придется для резервного копирования одних и тех же данных снова и снова. Это также позволяет вам восстановить любое состояние между резервными копиями.

Zegarek 04.07.2024 08:57

Спасибо. Cloud Run может быть лучшим вариантом. У нас также есть PITR (включенный в управляемую базу данных DigitalOcean), но только за последние 7 дней. Это будет дополнением к тому, когда дерьмо действительно поразит фаната.

Hannes Hultergård 04.07.2024 10:30

@HannesHultergård Помимо удобства, если вам просто удобнее делать снимки pg_dump, в этом нет никакой пользы по сравнению с настройкой собственного PITR с дельтами, поступающими в корзину GCP. Я не уверен, почему именно у них есть ограничение в 7 дней, но как только вы настроите свой собственный, вы не только сможете восстановить его в любую точку, но кроме базовой резервной копии, это также будет в целом быстрее и легче, чем полноразмерные дампы. Он так же безопасен, только немного умнее и гибче.

Zegarek 04.07.2024 10:51

Хорошо, я проверю это вместо этого. Проблема может заключаться в том, что у меня нет полного доступа к серверу, на котором находится кластер базы данных. Так что, возможно, я не смогу сделать ничего, кроме логического резервного копирования с помощью pg_dump. Но это может быть вопрос к поддержке DigitalOcean.

Hannes Hultergård 04.07.2024 11:35

Служба поддержки DigitalOcean только что подтвердила, что pg_basebackup нельзя использовать и что они не поддерживают физическое резервное копирование. Также, к сожалению, права на репликацию не могут быть предоставлены пользователю.

Hannes Hultergård 04.07.2024 13:29
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
10
114
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

поскольку для доступности pg_dump необходимо установить в системе, в Cloud Functions это также невозможно. Какие у меня есть варианты?

  1. Cloud Run. Хотя облачные функции должны абстрагировать базовую платформу, Cloud Run позволяет вам определить как функцию, так и платформу, на которой она будет активироваться. Обе службы представляют собой то, что Google рекламирует как Cloud Serverless.
  2. Cloud Compute , крошечная виртуальная машина с простым скриптом по расписанию пробуждается , запускает ее, а затем снова засыпает. Вы можете сохранить его как собственный образ и настроить таким образом несколько небольших рабочих процессов резервного копирования.

Последний будет своего рода имитировать то, что Cloud Run должен обрабатывать за вас, но он может быть более интуитивным (приблизительно так вы бы делали это дома или локально). Это также может быть немного более рентабельным, поскольку более «облачные» решения, такие как Cloud Run, обычно стоят дороже — аналогично тому, как управляемая база данных обычно стоит немного дороже, чем виртуальная машина, арендованная у того же провайдера, на которой размещается точно такая же база данных, с теми же ресурсами (за исключением секретного соуса провайдера, которым они оправдывают премию).

Тем не менее, работа, которая включает в себя простое пробуждение и несколько минут прослушивания pg_dump|gsutil cp, должна стоить вам практически ничего, независимо от того, какой вариант вы выберете. Возможно, вы захотите изучить многопоточную pg_dump -j , чтобы ускорить работу за счет дополнительного использования процессора, и gsutil -m для многопоточной загрузки.

Спасибо за ответ. В итоге я запустил задание резервного копирования на сервере Linux, который у нас уже был запущен. Однако в будущем я могу переключиться на Cloud Run, чтобы повысить надежность. Учитывая то, что я задал в вопросе, я отмечу это как правильный ответ.

Hannes Hultergård 08.07.2024 15:47

Другие вопросы по теме