Шифруем и бэкапим PostgreSQL в Яндекс Object Storage / S3 на Python

preview_player
Показать описание


Резервное копирование баз данных — всегда актуально. В этом видео мы покажем, как написать два Python скрипта, один снимает полный дамп с PostgreSQL, затем архивирует, шифрует и загружает его в Яндекс Object Storage (S3-совместимое хранилище); а второй — выкачивает последний по времени дамп базы из хранилища, расшифровывает его, распаковывает и накатывает на БД.
Яндекс утилиту WAL-G здесь не используем, только стандартный pg_dump. Возможно, в следующих видео расскажем о WAL-G:)

0:00 О скриптах резервного копирования PostgreSQL
0:30 О Яндекс Object Storage / S3
1:07 Обзор скрипта бэкапа
4:44 Шифрование бэкапов с openssl
5:40 Продолжение обзора скрипта бэкапа
10:48 Emoji и разноцветный текст в консоли
11:45 Просмотр всех бэкапов в браузере
12:08 Обзор скрипта автоматической распаковки бэкапа в PostgreSQL
18:45 Выводы

/****************** about ******************/

Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний:

Рекомендации по теме
Комментарии
Автор

Этот формат - королевский подгон!
Понятная речь, доступный формат, минимум понтов.
Узнал за 20 минут больше фишек, чем за 2 крайних месяца.
Лайк!

Murrengan
Автор

Спасибо за ваш труд! Было очень интересно и очень полезно! В комуфляже вы супер выглядете.

masterbpr
Автор

Спасибо тебе большое за то что делишься такой информацией. Благодаря тебе сэкономил огромное количество времени. Все доходчиво и понятно разобрано!

poacher
Автор

отличные видосы, каждый смотрю с удовольствием! спасибо

andreev
Автор

Такому видео я с удовольствием поставил лайк. Спасибо автору.

oizldei
Автор

Огромное спасибо! Сэкономил кучу времени, посмотрев данный мануал.. Подписался, лайк поставил!

art
Автор

Супер, спасибо!
Алексей, сделай, пожалуйста, видео о том, как организовать проект на сервере. Не могу понять как лучше это сделать для автоматизации, а именно:
- что должно быть в докер-контейнере, а что туда не надо класть?
- где должен быть, например, Nginx? Его настраивать в том же контейнере? Или один раз настроить на сервере? А зачем тогда есть официальный контейнер?
- по статике жду видео :)
- как "располагать" сервер БД
- и т.д.

В моем понимании сейчас схема выглядит так:
- купили сервер, настроили доступ, Nginx, DB
- пулл реквест в VCS
- CI инструменты прогоняют тесты, в случае успеха собирают контейнер, отправляют его в докерхаб
- из докерхаба он вытаскивается на сервер
- на сервере старый останавливается, новый запускается
- если 200, старый удаляется

Очень хотелось бы узнать твой опыт и рассуждения на эту тему

yodapunishes
Автор

Интересно посмотреть на чужую реализацию, сам делал такую скриптину на дамп в S3. О шифровании и сжатия не подумал, + юзать os. для вызова команды не догадался и ставил фабрику. Еще из различий, выносил в .env ключи и прочие переменные, чтобы было удобно ставить на любой сервак и просто загружать в крон.
В очередной раз лайк за видос, максимум информации простым языком и без воды.

MrVindor
Автор

Дядь, ты положительный брат-близнец Руслана Гительмана!

mortea.k.a
Автор

Понравился формат изложения: прошлись по каждой функции, описали когда она вызывается и что делает! Супер!
P.S. Было бы здорово, если бы выпускали больше видео для начинающих) Спасибо!

Keriokutori
Автор

Я хочу видос про то как статику хранить в Яндекс

deep_development
Автор

Ого! А я обычным простеньким bash скриптом в папочку на сервере сохраняю дампы и гзипнутую папку media. Ваше решение явно лучше.

savelwork
Автор

Превьюшка напомнила улыбку Дукалиса :)

serhiiriznychenko
Автор

Катан) продолжай пожалуйста) я учу python для себя) ты для меня пример для подражания))))

cotfedor
Автор

Hello darkness, my old friend. Уж простите, но в начале видео Вы какой-то сероватый
и сразу же как-то вспомнилось 😂

jth.
Автор

Народ, привет!
Важная заметка:
Если у Вас итоговый бекап больше 1.9 Гб - не используйте openssl
Если зашифровать, с флагом -stream, ещё реально - то вот расшифровка таких файлов становится невозможной средствами openssl --decrypt
Поскольку в сурс коде есть зашитый лимит на выделение памяти через маллок, куда будет выгружаться архив
Смотрите в стороны gpg и его потокового шифрования

damntho
Автор

Все круто, можно расширить тему по удаленному поднятию db PostgreSQL из скрипта python с одного сервера на другом. Дней 15 бился над этой проблемой и бросил не решив ее. Не проходит из-за прав пользователя. Именно создание базы и пользователя

aleom
Автор

При декомпрессии бэкапа перед заливкой его в БД PG не стоит сверить контрольные суммы или еще чего что бы исключить возможность ошибок при архивации и распаковки?

googleadmin
Автор

Хотелось бы увидеть Ваш список рекомендуемой литературы!

TheApgreyd
Автор

Прибить продакш базу - это же лучший квест, как провести весело выходные)

nexgenua