⚠️ Откройте для себя Infrastructure as Code с Terraform
Задумывались, как упростить управление инфраструктурой и сделать её более прозрачной и управляемой?
👉 Узнайте, как сделать это с помощью Terraform на открытом автовебинаре.
Мы расскажем, как концепция Infrastructure as Code помогает автоматизировать и контролировать процессы, избавляя вас от необходимости вручную управлять виртуальными машинами через интерфейс облачных провайдеров. Один раз описав желаемое состояние инфраструктуры, вы сможете подключать любые облачные провайдеры, когда это будет нужно.
💪 Преимущества очевидны: автоматизация, контроль версий и возможность откатиться к предыдущим состояниям. Понимание этих инструментов — шаг к эффективному управлению вашей инфраструктурой.
👉 Зарегистрируйтесь для участия: https://clck.ru/3NAfcv
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Задумывались, как упростить управление инфраструктурой и сделать её более прозрачной и управляемой?
👉 Узнайте, как сделать это с помощью Terraform на открытом автовебинаре.
Мы расскажем, как концепция Infrastructure as Code помогает автоматизировать и контролировать процессы, избавляя вас от необходимости вручную управлять виртуальными машинами через интерфейс облачных провайдеров. Один раз описав желаемое состояние инфраструктуры, вы сможете подключать любые облачные провайдеры, когда это будет нужно.
💪 Преимущества очевидны: автоматизация, контроль версий и возможность откатиться к предыдущим состояниям. Понимание этих инструментов — шаг к эффективному управлению вашей инфраструктурой.
👉 Зарегистрируйтесь для участия: https://clck.ru/3NAfcv
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👎9👍6
⇨ Postgresus - удобный домашний бекап баз данных
Коротенький обзор веб панели программы для бэкапа PostgreSQL серверов. Выглядит удобно и полезно. Скорее всего тоже попробую и сделаю отдельный обзор. Бэкапы она делает только полные, так что подойдёт только для небольших баз. У меня есть сервера, где как раз куча небольших баз 1С. Возможно, с этой панелькой будет удобно их бэкапить и быстро восстанавливать.
⇨ Self-Host Your Own Automation Platform with n8n + Docker
Очередной обзор и примеры использования платформы для автоматизации n8n. Это очень популярная и функциональная штука. Я пару раз за неё садился и пытался к чему-нибудь приспособить, но ничего дельного не получалось. Её на самом деле с наскока трудно освоить, хоть она и позиционируется как простое no-code решение. Кто не знаком с ней, рекомендую посмотреть. Может приспособите её куда-то к себе.
⇨ Сжатие текста в Angie: статика, динамика, производительность
Обзор и тесты различных режимов сжатия в веб сервере. Я всё это неплохо знаю и в своё время тестировал и использовал различные алгоритмы: gzip, brotli, zstd. Про последний делал отдельную заметку с описанием настройки. Я лично почти везде включаю zstd на веб серверах.
⇨ Zabbix 7.4 Host Wizard Overview
Видео актуально, если вы не собираетесь обновляться до 7.4, но хотите посмотреть, как выглядит новый интерфейс добавления хостов в Zabbix Server.
⇨ OAuth 2.0 — Простым языком на понятном примере
Автор подробно и с примерами показал, как работает OAuth и OpenID Connect. Часто упоминаю эти технологии, когда рассказываю про тот или иной софт. Если не знаете, что это такое, то посмотрите видео.
⇨ Grafana Alloy, NEW log + metric collector replaces everything!
Обзор инструмента Grafana Alloy. Думал это что-то новое, но не особо то и новое. Год уже точно существует. Честно говоря, впервые услышал про этот продукт. Никогда не видел и не слышал. Он собирает логи и метрики. По сути это аналог promtail, opentelemetry collector и т.д.
⇨ ALT Linux 10 установка КриптоПРО 5 с поддержкой ключей от 4-й версии
Настройка работы КриптоПРО на рабочей станции ALT.
⇨ Устанавливаем Fedora Server 42 — Идеальный дистрибутив для self-hosting?
Практической пользы нет, но мне было любопытно посмотреть. Вообще не знал, что у Fedora есть сервер. После видео так и не понял, зачем он нужен.
⇨ Прямое подключение NAS к ПК по 10GbE
Видео простенькое, для обычных пользователей. Но мне было интересно посмотреть, что за адаптеры с подключением по usb-c используются для этого (цена ~6 т.р.), какие провода и т.д. На практике я вообще никогда не настраивал такие интерфейсы. Были кое-где на арендных серверах, но там настраивать ничего не надо. Сразу выдают настроенные.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#видео
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Postgresus - удобный домашний бекап баз данных
из рубрики "полезное и интересное" рассмотрел сегодня удобный UI-интерфейс для бекапа\рестора БД Psql.
умеет работать по расписанию, отправлять нотификации, сохранять в s3\google-drive, обладает удобным и очень приветливым интерфейсом.
где-то на проде конечно…
умеет работать по расписанию, отправлять нотификации, сохранять в s3\google-drive, обладает удобным и очень приветливым интерфейсом.
где-то на проде конечно…
👍52👎2
Регулярные выражения или по-простому регулярки способны освоить не только лишь все. Это база, которая сделала конструкции из консольных команд в Unix нечитаемыми не только для обычных людей, но и it-специалистов, которые не понимают регулярок. Кто знает, может быть из-за них юниксоидов, а потом и линуксоидов прозвали задротами и красноглазиками. А как ещё назвать человека, который способен расшифровать подобное:
Конечно, сейчас можно сказать, что зачем всё это знать, если можно просто спросить ChatGPT и он всё объяснит и сам напишет. А зачем вообще в школу ходить и делать домашки, если их может тот же ИИ сделать? Уже есть исследования, которые показывают, что через 2-3 месяца активного использования ИИ для решения задач у человека заметно снижаются когнитивные способности. Если по-простому, то он тупеть начинает, не хочет и не может лишний раз подумать и решить задачу.
Я, кстати, из-за этого всегда без исключений все тексты пишу сам, даже если очень не хочется. Велик соблазн попросить ИИ, а потом за ним подредактировать. Это проще, чем писать самому с нуля. Но я знаю, что начну терять навык. Даже структуру статей, заметок не прошу делать. Делаю сам от и до.
То же самое касается конфигураций и bash скриптов. Никогда не прошу полностью решить задачу. Если что-то и спрашиваю, то про какие-то конкретные вещи. То есть использую его как справочник, а не как инструмент для решения всей задачи. Тупеть не хочется. Возраст и так своё дело рано или поздно сделает, не хочется ему помогать.
Длинное вступление получилось. Написать не об этом хотел. Есть очень качественный интерактивный тренажёр для изучения регулярных выражений. Он переведён на многие языки, в том числе русский. Перевод качественный.
⇨ https://regexlearn.com/ru
В нём сначала идёт блок теории, а потом она закрепляется практикой. Ничего сложного, но нужно будет немного поднапрячь мозги. Даётся база, каких-то сложных выражений не разбирают. Если будете реально проходить, то рекомендую открыть с этого же сайта шпаргалку. Я без неё проходил, потому что в целом всё это и так знаю. Конкретно эту базу невольно пришлось освоить, когда самостоятельно изучал Asterisk и писал план набора в
📌 Дополнительные ссылки по теме:
▪️ autoregex.xyz — построение регулярок с помощью ИИ
▪️ regex101.com — проверка регулярных выражений
▪️ grex — автоматическое составление регулярок на основе набора данных
▪️ regexper.com — схематическое изображение регулярок
▪️ ihateregex.io — готовые примеры регулярных выражений
▪️SLASH\ESCAPE — интерактивная атмосферная обучающая игра
Ссылки все живые. Какие-то блокируются из-за CF, какие-то из-за блока на той стороне 🤷♂️
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#regex #обучение
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!#%*?&]{8,}$
Конечно, сейчас можно сказать, что зачем всё это знать, если можно просто спросить ChatGPT и он всё объяснит и сам напишет. А зачем вообще в школу ходить и делать домашки, если их может тот же ИИ сделать? Уже есть исследования, которые показывают, что через 2-3 месяца активного использования ИИ для решения задач у человека заметно снижаются когнитивные способности. Если по-простому, то он тупеть начинает, не хочет и не может лишний раз подумать и решить задачу.
Я, кстати, из-за этого всегда без исключений все тексты пишу сам, даже если очень не хочется. Велик соблазн попросить ИИ, а потом за ним подредактировать. Это проще, чем писать самому с нуля. Но я знаю, что начну терять навык. Даже структуру статей, заметок не прошу делать. Делаю сам от и до.
То же самое касается конфигураций и bash скриптов. Никогда не прошу полностью решить задачу. Если что-то и спрашиваю, то про какие-то конкретные вещи. То есть использую его как справочник, а не как инструмент для решения всей задачи. Тупеть не хочется. Возраст и так своё дело рано или поздно сделает, не хочется ему помогать.
Длинное вступление получилось. Написать не об этом хотел. Есть очень качественный интерактивный тренажёр для изучения регулярных выражений. Он переведён на многие языки, в том числе русский. Перевод качественный.
⇨ https://regexlearn.com/ru
В нём сначала идёт блок теории, а потом она закрепляется практикой. Ничего сложного, но нужно будет немного поднапрячь мозги. Даётся база, каких-то сложных выражений не разбирают. Если будете реально проходить, то рекомендую открыть с этого же сайта шпаргалку. Я без неё проходил, потому что в целом всё это и так знаю. Конкретно эту базу невольно пришлось освоить, когда самостоятельно изучал Asterisk и писал план набора в
extensions.conf
. Там без регулярок никуда. Вся настройка на них основывается.📌 Дополнительные ссылки по теме:
▪️ autoregex.xyz — построение регулярок с помощью ИИ
▪️ regex101.com — проверка регулярных выражений
▪️ grex — автоматическое составление регулярок на основе набора данных
▪️ regexper.com — схематическое изображение регулярок
▪️ ihateregex.io — готовые примеры регулярных выражений
▪️SLASH\ESCAPE — интерактивная атмосферная обучающая игра
Ссылки все живые. Какие-то блокируются из-за CF, какие-то из-за блока на той стороне 🤷♂️
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#regex #обучение
2👍172👎4
🔒⚙️ Как разделить корпоративную сеть на VLAN и повысить безопасность данных?
Приглашаем на открытый вебинар «VLAN и маршрутизация: почему без них не обойтись в любой компании» 23 июля в 20:00 МСК.
На вебинаре вы узнаете:
- Зачем бизнесу нужно разделение сети на VLAN?
- Как маршрутизация между VLAN помогает контролировать трафик и защищать данные?
- Как настроить Access и Trunk порты на оборудовании Cisco?
После вебинара вы сможете настроить VLAN, изолировать гостевые сети, создавать и конфигурировать порты для подключения и маршрутизации, а главное — освоите базовый навык, необходимый каждому сетевому инженеру.
Урок проходит в преддверии старта курса «Network engineer. Basic».
👉 Регистрация для участия: https://clck.ru/3NBN36
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Приглашаем на открытый вебинар «VLAN и маршрутизация: почему без них не обойтись в любой компании» 23 июля в 20:00 МСК.
На вебинаре вы узнаете:
- Зачем бизнесу нужно разделение сети на VLAN?
- Как маршрутизация между VLAN помогает контролировать трафик и защищать данные?
- Как настроить Access и Trunk порты на оборудовании Cisco?
После вебинара вы сможете настроить VLAN, изолировать гостевые сети, создавать и конфигурировать порты для подключения и маршрутизации, а главное — освоите базовый навык, необходимый каждому сетевому инженеру.
Урок проходит в преддверии старта курса «Network engineer. Basic».
👉 Регистрация для участия: https://clck.ru/3NBN36
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍13👎7
На прошлой неделе смотрел видео и читал статью про веб панель управления бэкапами PostgreSQL. А если точнее, то только бэкапами в виде дампов. Сразу понятно, что это инструмент для небольших баз данных. Большие базы дампами бэкапить неудобно, так как это, во-первых, может длиться непрогнозируемо долго, во-вторых, это всегда только полные бэкапы, а для больших баз хочется инкрементных копий.
Речь пойдёт о Postgresus. Основные возможности:
◽️Веб интерфейс для управления заданиями и отчётами
◽️Расписание бэкапов
◽️Сжатие, автоочистка старых бэкапов
◽️Хранение локально или в S3, Google Drive
◽️Уведомления по Email, Telegram
◽️Запускается в Docker Compose
По сути это замена самописным bash скриптам в кроне. Именно их я и использую для таких задач 🤖 Решил упростить себе задачу. Забегая вперёд, скажу, что эта панель реально заменяет эти скрипты, не более.
Postgresus состоит из двух Docker контейнеров: непосредственно сама панель и локальный экземпляр postgresql сервера для хранения собственных настроек. Запустить можно вручную из предложенного в репозитории файла
Скрипт ставит докер и стартует с этим же docker-compose.yml. Я вручную запустил. После запуска можно сразу идти в веб интерфейс на порт сервера 4005 и там всё настраивать. Не рекомендую запускать подобные вещи непосредственно на сервере с СУБД. Я сделал отдельную небольшую виртуалку и открыл для неё доступ к базам.
Дальнейшее управление осуществляется через веб интерфейс. Там всё максимально просто и наглядно:
1️⃣ Настраиваем хранилище для бэкапов. Я использовал локальную директорию. После тестов примонтирую туда отдельно большой диск.
2️⃣ Добавляем приёмник для уведомлений. Telegram сразу заработал, нужно указать токен своего бота и ID чата. С почтой не получилось, так как отправка по умолчанию настраивается по TLS, а у меня там локальный сервер стоял без него. Перенастраивать не захотелось. Жаль, что автор не оставил такой возможности.
3️⃣ Добавляем подключение к базе данных и настраиваем параметры её бэкапа.
Бэкап выполняется не особо быстро. Скриптами локально я базу на 5ГБ бэкаплю секунд 30. Из соседней виртуалки с помощью Postgresus бэкапится 12 минут. В целом мне некритично, так как для этого сервера бэкапы выполняются раз в сутки по ночам. Времени достаточно, хотя с такой скоростью это растянется часа на полтора.
Архивы хранятся локально в виде дампов со случайными именами вида
Восстановление возможно тут же через веб интерфейс, причём на любой сервер, а не только исходный. Это удобно для ручного тестирования бэкапов. Можно создать тестовый сервер и там периодически проверять дампы или выгружать их для каких-то других задач, не нагружая основной сервер.
В общем и целом панель нормальная. Для небольших серверов будет удобным решением в качестве замены самописных скриптов. Плюс, тут дополнительно работает мониторинг доступности баз данных и уведомления и для бэкапов, и для этого мониторинга. Сделано всё аккуратно и красиво. Посмотрим, как покажет себя в реальной эксплуатации. Мне возможно не будет удобным это решение, так как на скриптах я обычно сразу и на другие сервера передаю бэкапы, и формирую дневные, недельные, месячные наборы для долгосрочного хранения. На базе этой панели это делать неудобно. Возможно, останется как дополнительный инструмент, в котором можно быстро сделать бэкап и восстановить где-то в другом месте.
⇨ 🌐 Сайт / Исходники
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#postgresql #backup
Речь пойдёт о Postgresus. Основные возможности:
◽️Веб интерфейс для управления заданиями и отчётами
◽️Расписание бэкапов
◽️Сжатие, автоочистка старых бэкапов
◽️Хранение локально или в S3, Google Drive
◽️Уведомления по Email, Telegram
◽️Запускается в Docker Compose
По сути это замена самописным bash скриптам в кроне. Именно их я и использую для таких задач 🤖 Решил упростить себе задачу. Забегая вперёд, скажу, что эта панель реально заменяет эти скрипты, не более.
Postgresus состоит из двух Docker контейнеров: непосредственно сама панель и локальный экземпляр postgresql сервера для хранения собственных настроек. Запустить можно вручную из предложенного в репозитории файла
docker-compose.yml
, либо воспользоваться скриптом от разработчика:# curl -sSL https://raw.githubusercontent.com/RostislavDugin/postgresus/refs/heads/main/install-postgresus.sh | bash
Скрипт ставит докер и стартует с этим же docker-compose.yml. Я вручную запустил. После запуска можно сразу идти в веб интерфейс на порт сервера 4005 и там всё настраивать. Не рекомендую запускать подобные вещи непосредственно на сервере с СУБД. Я сделал отдельную небольшую виртуалку и открыл для неё доступ к базам.
Дальнейшее управление осуществляется через веб интерфейс. Там всё максимально просто и наглядно:
Бэкап выполняется не особо быстро. Скриптами локально я базу на 5ГБ бэкаплю секунд 30. Из соседней виртуалки с помощью Postgresus бэкапится 12 минут. В целом мне некритично, так как для этого сервера бэкапы выполняются раз в сутки по ночам. Времени достаточно, хотя с такой скоростью это растянется часа на полтора.
Архивы хранятся локально в виде дампов со случайными именами вида
a8bc8814-c548-4f9a-ba0c-97d3b1e107fc
. Не очень удобно, если захочется куда-то дублировать их. Скачать дамп можно через веб интерфейс и вручную восстановить с помощью pg_restore
. Я заглянул внутрь дампа. Он отличается от того, что делаю я с помощью pg_dump
. Скорее всего используются какие-то дополнительные ключи. Я обычно делаю чистый дамп только данных.Восстановление возможно тут же через веб интерфейс, причём на любой сервер, а не только исходный. Это удобно для ручного тестирования бэкапов. Можно создать тестовый сервер и там периодически проверять дампы или выгружать их для каких-то других задач, не нагружая основной сервер.
В общем и целом панель нормальная. Для небольших серверов будет удобным решением в качестве замены самописных скриптов. Плюс, тут дополнительно работает мониторинг доступности баз данных и уведомления и для бэкапов, и для этого мониторинга. Сделано всё аккуратно и красиво. Посмотрим, как покажет себя в реальной эксплуатации. Мне возможно не будет удобным это решение, так как на скриптах я обычно сразу и на другие сервера передаю бэкапы, и формирую дневные, недельные, месячные наборы для долгосрочного хранения. На базе этой панели это делать неудобно. Возможно, останется как дополнительный инструмент, в котором можно быстро сделать бэкап и восстановить где-то в другом месте.
⇨ 🌐 Сайт / Исходники
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#postgresql #backup
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍80👎7
VMmanager теперь работает внутри кластера — как мастер-VM
Раньше управляющая платформа разворачивалась на отдельном сервере. Теперь — в виде обычной виртуальной машины внутри того же кластера, которым управляет. Это снижает нагрузку на железо и упрощает масштабирование.
Поддерживается автоматическое восстановление: при сбое мастер-VM переносится на другой узел благодаря связке vm-agent + HA-кластер. Управление ресурсами (CPU, RAM, диски) гибкое, без перезапуска.
Работает миграция ВМ между узлами без остановки. Все компоненты платформы и инфраструктуры — в единой среде.
Подробнее можете сами почитать тут.
Реклама, АО «Экзософт».
Раньше управляющая платформа разворачивалась на отдельном сервере. Теперь — в виде обычной виртуальной машины внутри того же кластера, которым управляет. Это снижает нагрузку на железо и упрощает масштабирование.
Поддерживается автоматическое восстановление: при сбое мастер-VM переносится на другой узел благодаря связке vm-agent + HA-кластер. Управление ресурсами (CPU, RAM, диски) гибкое, без перезапуска.
Работает миграция ВМ между узлами без остановки. Все компоненты платформы и инфраструктуры — в единой среде.
Подробнее можете сами почитать тут.
Реклама, АО «Экзософт».
👍18👎12
Вчера рассмотрел Postgresus - веб панель для бэкапов баз Postgresql. У неё есть очень близкий и более старый аналог – PG Back Web. Панели похожи по функциональности и архитектуре. Автор Postgresus наверняка знаком с ней, потому что многие вещи реализованы схожим образом. Но есть и отличия. Каждый, судя по всему, реализовал настройки и управление так, как ему казалось более удобным. Расскажу по порядку.
1️⃣ Установка выполняется так же, как и у Postgresus – готовый
2️⃣ В Pgbackweb сущности в виде баз данных и заданий для бэкапа разделены. Отдельно добавляется база, отдельно для неё создаётся задание для бэкапа. Соответственно, для одной и той же базы могут быть созданы разные задачи с бэкапом и параметрами хранения. В Postgresus настройки базы и бэкапа для неё объединены в одну сущность.
3️⃣ Создаваемый в Pgbackweb дамп тут же на лету жмётся в zip. А в самом архиве лежит чистый дамп в текстовом формате, который можно открыть, посмотреть, изменить. Создание дампа в Pgbackweb примерно в 2-2,5 раза дольше, чем у Postgresus. Последний жмёт средствами самого pg_dump, если я правильно понял из исходников, то есть использует ключи
К сожалению, обе панели не дают возможность самому задавать эти параметры. А иногда бывает нужно либо так, либо эдак. Например, если тебе важна скорость, то лучше жать встроенными средствами. Но из такого дампа потом неудобно извлекать отдельную таблицу, если она понадобится. А из текстового дампа это сделать очень просто. Лично я, когда создаю дампы баз данных, выгружаю их в обычном текстовом формате и жму сам с помощью pigz в многопоточном режиме. Получается и быстро, и удобно. Потом распаковал и делай с ним, что хочешь.
4️⃣ Pgbackweb предлагает сохранять бэкапы либо локально, либо в S3. Больше у неё ничего нет для хранения. Формат путей вида
5️⃣ Сохранённый дамп можно самому скачать и восстановить вручную, либо воспользоваться веб интерфейсом. Базу можно восстановить как в исходную, так и в другую, в том числе на другом сервере. Здесь возможности обеих панелей совпадают.
6️⃣ В качестве уведомлений Pgbackweb предлагает только вебхуки, что слабовато по сравнению с готовой интеграцией с Telegram, Email, Slack, Discord в Postgresus.
В общем и целом панели сильно похожи и выполняют одни и те же задачи. Разница в некоторых мелочах, которые кому-то могут быть критичны, кому-то нет. Мне лично больше понравилась Postgresus за её внешний вид и внутреннюю логику. Сжатые дампы делает намного быстрее, что уже на базах в 5-10 ГБ становится критично. Так как, к примеру, 15 минут против 35 для 10 ГБ – это существенная разница.
⇨🌐 Исходники / ▶️ Видеобзор
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#postgresql #backup
docker-compose.yaml
в репозитории для запуска двух контейнеров: сама веб панель и локальная Postgresql для сохранения настроек и состояния. Достаточно запустить docker compose и можно идти на порт 8085 сервера и пользоваться панелью. В консоли больше делать нечего.-Fc
(custom-format) -Z 6
(compression level). К сожалению, обе панели не дают возможность самому задавать эти параметры. А иногда бывает нужно либо так, либо эдак. Например, если тебе важна скорость, то лучше жать встроенными средствами. Но из такого дампа потом неудобно извлекать отдельную таблицу, если она понадобится. А из текстового дампа это сделать очень просто. Лично я, когда создаю дампы баз данных, выгружаю их в обычном текстовом формате и жму сам с помощью pigz в многопоточном режиме. Получается и быстро, и удобно. Потом распаковал и делай с ним, что хочешь.
/backups/dbase01/2025/07/21
. Это удобно, если захочется забирать готовые дампы куда-то ещё и складывать их в архивы по каким-то датам. В Postgresus такой возможности нет. Там ни в пути, ни в имени файла нет никаких временных меток и упоминания имени базы.В общем и целом панели сильно похожи и выполняют одни и те же задачи. Разница в некоторых мелочах, которые кому-то могут быть критичны, кому-то нет. Мне лично больше понравилась Postgresus за её внешний вид и внутреннюю логику. Сжатые дампы делает намного быстрее, что уже на базах в 5-10 ГБ становится критично. Так как, к примеру, 15 минут против 35 для 10 ГБ – это существенная разница.
⇨
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#postgresql #backup
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61👎3
Раз уж я рассмотрел панели для управления бэкапами (Postgresus и Pgbackweb) в виде дампов в Postgresql, было бы логично рассмотреть и вариант со своими велосипедами на bash. Поделюсь тем, что использую я.
Сначала полный текст скрипта для бэкапа:
Рассказываю, что тут происходит:
1️⃣ Завожу в переменную BASES список баз, которые мы будем бэкапить. Их можно указывать вручную, примерно так:
Можно использовать обратный подход. Бэкапить все базы, но вручную или по маске задавать исключения. Примерно так:
2️⃣ База дампится с помощью
3️⃣ В дампе проверяем наличие строки
Соответственно, если строки присутствуют, пишем в лог файл, что Backup is OK, если есть проблемы, то Backup is corrupted. Дальше этот файл забирает либо мониторинг, либо хранилка логов. И если они видят фразу corrupted, то срабатывает триггер.
4️⃣ Если с дампом всё в порядке, то он жмётся архиватором
Получается автоматическая максимально простая и эффективная схема работы. Я вчера добавлял базы в веб панель. Честно говоря, меня это утомило. Если баз 1-2, то не проблема. А 15 штук добавлять уже надоедает. Бывает и больше. Плюс, надо вручную следить за ними, добавлять, отключать ненужные и т.д. Так что панель вроде и выглядит удобно, но если баз много, то удобства уже сомнительные.
Дальше у меня работает ещё один простой скрипт, который забирает эти дампы на тестовый сервер, распаковывает и заливает в СУБД. Расскажу о нём в следующей заметке.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#postgresql #backup #script
Сначала полный текст скрипта для бэкапа:
#!/bin/bash
BASES=`/opt/pgpro/1c-16/bin/psql -U postgres -l | grep "_buh\|_zup" | awk '{print $1}'`
DATA=`date +"%Y-%m-%d_%H-%M"`
LOGDIR=/var/lib/pgpro/service_logs
BACKUPDIR=/var/lib/pgpro/backup
for i in ${BASES};
do
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start backup $i" >> $LOGDIR/backup.log
/opt/pgpro/1c-16/bin/pg_dump -U postgres $i > $BACKUPDIR/$DATA-$i.sql 2>> $LOGDIR/dump.log
BEGIN=`head -n 2 $BACKUPDIR/$DATA-$i.sql | grep ^'-- PostgreSQL database dump' | wc -l`
END=`tail -n 3 $BACKUPDIR/$DATA-$i.sql | grep ^'-- PostgreSQL database dump complete' | wc -l`
if [ "$BEGIN" == "1" ];then
if [ "$END" == "1" ];then
echo "Backup ${i} is OK" >> $LOGDIR/backup.log
/usr/bin/pigz -c $BACKUPDIR/$DATA-$i.sql > $BACKUPDIR/$DATA-$i.sql.gz
/usr/bin/rm $BACKUPDIR/$DATA-$i.sql
else
echo "Backup ${i} is corrupted" >> $LOGDIR/backup.log
fi
else
echo "Backup ${i} is corrupted" >> $LOGDIR/backup.log
fi
echo "`date +"%Y-%m-%d_%H-%M-%S"` End backup $i" >> $LOGDIR/backup.log
echo "=========================================" >> $LOGDIR/backup.log
done
Рассказываю, что тут происходит:
BASES=("db01_zup" "db02_buh")
. Можно брать список всех баз. В данном случае на сервере я маркирую базы метками _buh
и _zup
в названиях баз, чтобы по ним делать выборку. Если базу не нужно бэкапить, то эта метка не ставится. Можно придумать любую свою метку, например _back
. Это позволяет автоматически бэкапить все нужные базы, не следя за их составом. Очень актуально, если создаёте и удаляете базы не вы, но вам нужны все бэкапы баз. Можно использовать обратный подход. Бэкапить все базы, но вручную или по маске задавать исключения. Примерно так:
/opt/pgpro/1c-15/bin/psql -U postgres -l | grep -wv 'template0\|template1\|test-base\|_test' | sed -e '1,3d' | head -n -2 | awk '{print $1}'`
pg_dump
без каких-либо дополнительных параметров. На выходе имеем обычный несжатый текстовый дамп.-- PostgreSQL database dump
в начале дампа и -- PostgreSQL database dump complete
в конце. Поэтому нам важно иметь дамп в текстовом формате. Если процесс снятия дампа прошёл без ошибок и в дампе присутствуют эти строки, то с большой долей вероятности с ним всё в порядке. Я ни разу не сталкивался с обратной ситуацией.Соответственно, если строки присутствуют, пишем в лог файл, что Backup is OK, если есть проблемы, то Backup is corrupted. Дальше этот файл забирает либо мониторинг, либо хранилка логов. И если они видят фразу corrupted, то срабатывает триггер.
pigz
. Он работает многопоточно всеми доступными ядрами процессора. Если не хотите нагружать так плотно сервер, то количество потоков можно ограничить ключами. Я обычно снимаю дампы ночью и жму на всю катушку, чтобы побыстрее завершилось. Дампы потом ещё передавать надо. Это уже отдельная процедура и запускается с сервера бэкапов. С самого сервера СУБД к бэкапам доступа нет. Получается автоматическая максимально простая и эффективная схема работы. Я вчера добавлял базы в веб панель. Честно говоря, меня это утомило. Если баз 1-2, то не проблема. А 15 штук добавлять уже надоедает. Бывает и больше. Плюс, надо вручную следить за ними, добавлять, отключать ненужные и т.д. Так что панель вроде и выглядит удобно, но если баз много, то удобства уже сомнительные.
Дальше у меня работает ещё один простой скрипт, который забирает эти дампы на тестовый сервер, распаковывает и заливает в СУБД. Расскажу о нём в следующей заметке.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#postgresql #backup #script
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍150👎3
Открытый практикум Linux by Rebrain: Следим за жизнью процессов в Linux
После регистрации мы отправим вам подарок! Вы сможете найти его в ответном письме.
👉Регистрация
Время проведения:
30 июля (среда) в 19:00 по МСК
Программа практикума:
▪️ Потребление ресурсов: top/htop, iotop и др.
▫️ Расход и структура памяти: valgrind, py-spy и др.
▪️ Системные вызовы: strace
▫️ Создание и операции с файлами: inotify
Кто ведёт?
Даниил Батурин — основатель проекта VyOS, системы для корпоративных и провайдерских маршрутизаторов с открытым исходным кодом.
Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь!
Реклама. ООО "РЕБРЕИН", ИНН: 7727409582, erid: 2W5zFGdGBov
После регистрации мы отправим вам подарок! Вы сможете найти его в ответном письме.
👉Регистрация
Время проведения:
30 июля (среда) в 19:00 по МСК
Программа практикума:
▪️ Потребление ресурсов: top/htop, iotop и др.
▫️ Расход и структура памяти: valgrind, py-spy и др.
▪️ Системные вызовы: strace
▫️ Создание и операции с файлами: inotify
Кто ведёт?
Даниил Батурин — основатель проекта VyOS, системы для корпоративных и провайдерских маршрутизаторов с открытым исходным кодом.
Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь!
Реклама. ООО "РЕБРЕИН", ИНН: 7727409582, erid: 2W5zFGdGBov
👎12👍6
Утром рассказал, как делаю бэкапы баз Postgresql с помощью скриптов и
Первым делом надо забрать дампы с исходного сервера. Для этого беру простой скрипт, который забирает по SSH только свежие файлы за прошлый день. Если забрать сразу только нужные файлы, то потом не придётся делать в них выборку:
Использую rsync, а список файлов для копирования формирую сразу в выражении ключа, подключившись к нужному хосту по SSH и отсортировав файлы по дате, взяв не старше суток. В данном случае файл timestamp через
Ну а дальше дело техники. По очереди выполняю набор команд для удаления старой базы, создания новой, распаковки и заливки дампа. Перед первым запуском этого скрипта вручную создаю все восстанавливаемые базы и выборочно проверяю восстановление. Потом формирую итоговый список команд:
Сразу говорю, что я тут ничего не оптимизировал, никаких проверок не делал. Если просто взять и запустить, то скорее всего у вас вывалятся какие-то ошибки или что-то пойдёт не так. Я просто показываю идею. У меня уже давно и структура каталогов одна и та же, и подход к именованию баз, бэкапов и т.д. Это всё сделано под меня и работает так уже много лет. Меня устраивает.
В данном скрипте нет никаких проверок успешной работы и оповещений, потому что это не последний этап проверок. Далее в зависимости от того, где эта база используется, запускаются свои проверки. Для баз 1С выполняется автоматическая выгрузка в dt с помощью отдельного скрипта. Если она проходит успешно, то считается, что дамп базы живой и нормально восстановился.
Если же это база от веб проекта, то параллельно из другого бэкапа восстанавливаются исходники в тестовый веб сервер, подключается восстановленная база и работает стандартная веб проверка в Zabbix Server, которая ищет какие-то данные на странице, которые без работающей базы не будут показаны. Если веб проверки проходят успешно, то считается, что база восстановилась, да и в целом бэкап живой.
Более сложные проверки в восстановленных базах я не делаю. Мой опыт в обслуживаемых инфраструктурах показывает, что этого достаточно. Ни разу не сталкивался, что всё прошло успешно, а с базой проблемы. Обычно проблемы возникают сразу в снятии дампа. Если он корректно выполнен, то дальше уже все отрабатывает нормально.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#backup #postgresql #script
pg_dump
. Сейчас покажу, как я их проверяю. Для этого обычно держу небольшой тестовый сервер с той же версией Postgresql. В идеале это должна быть копия прода, но не всегда это возможно. На нём же зачастую проверяю обновления.Первым делом надо забрать дампы с исходного сервера. Для этого беру простой скрипт, который забирает по SSH только свежие файлы за прошлый день. Если забрать сразу только нужные файлы, то потом не придётся делать в них выборку:
#!/bin/bash
/usr/bin/rsync -av --progress --files-from=<(ssh [email protected] '/usr/bin/find /var/lib/pgpro/backup -type f -mtime -1 -exec basename {} \; | egrep -v timestamp') [email protected]:/var/lib/pgpro/backup/ /data/backup/
Использую rsync, а список файлов для копирования формирую сразу в выражении ключа, подключившись к нужному хосту по SSH и отсортировав файлы по дате, взяв не старше суток. В данном случае файл timestamp через
egrep -v
добавлен в исключения. У меня там метка времени последнего бэкапа хранится для нужд мониторинга.Ну а дальше дело техники. По очереди выполняю набор команд для удаления старой базы, создания новой, распаковки и заливки дампа. Перед первым запуском этого скрипта вручную создаю все восстанавливаемые базы и выборочно проверяю восстановление. Потом формирую итоговый список команд:
#!/bin/bash
BASES=`/opt/pgpro/1c-16/bin/psql -U postgres -l | grep "_buh\|_zup" | awk '{print $1}'`
BACKUP_DIR="/data/backup"
for i in ${BASES};
do
echo "`date +"%Y-%m-%d_%H-%M-%S"` Drop database ${i}"
/opt/pgpro/1c-16/bin/dropdb -U postgres ${i}
echo "`date +"%Y-%m-%d_%H-%M-%S"` Create database ${i}"
/opt/pgpro/1c-16/bin/createdb -U postgres -T template0 ${i}
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start extract $i"
/usr/bin/find /data/backup -type f -name *${i}* -exec /usr/bin/unpigz '{}' \;
echo "`date +"%Y-%m-%d_%H-%M-%S"` End extract $i"
echo "`date +"%Y-%m-%d_%H-%M-%S"` Start restore $i"
/opt/pgpro/1c-16/bin/psql -U postgres ${i} < ${BACKUP_DIR}/`ls ${BACKUP_DIR} | grep ${i}` 1>/dev/null
echo "`date +"%Y-%m-%d_%H-%M-%S"` End restore $i"
echo "`date +"%Y-%m-%d_%H-%M-%S"` rm dump ${i}"
/usr/bin/rm ${BACKUP_DIR}/`ls ${BACKUP_DIR} | grep ${i}`
done
Сразу говорю, что я тут ничего не оптимизировал, никаких проверок не делал. Если просто взять и запустить, то скорее всего у вас вывалятся какие-то ошибки или что-то пойдёт не так. Я просто показываю идею. У меня уже давно и структура каталогов одна и та же, и подход к именованию баз, бэкапов и т.д. Это всё сделано под меня и работает так уже много лет. Меня устраивает.
В данном скрипте нет никаких проверок успешной работы и оповещений, потому что это не последний этап проверок. Далее в зависимости от того, где эта база используется, запускаются свои проверки. Для баз 1С выполняется автоматическая выгрузка в dt с помощью отдельного скрипта. Если она проходит успешно, то считается, что дамп базы живой и нормально восстановился.
Если же это база от веб проекта, то параллельно из другого бэкапа восстанавливаются исходники в тестовый веб сервер, подключается восстановленная база и работает стандартная веб проверка в Zabbix Server, которая ищет какие-то данные на странице, которые без работающей базы не будут показаны. Если веб проверки проходят успешно, то считается, что база восстановилась, да и в целом бэкап живой.
Более сложные проверки в восстановленных базах я не делаю. Мой опыт в обслуживаемых инфраструктурах показывает, что этого достаточно. Ни разу не сталкивался, что всё прошло успешно, а с базой проблемы. Обычно проблемы возникают сразу в снятии дампа. Если он корректно выполнен, то дальше уже все отрабатывает нормально.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#backup #postgresql #script
Telegram
ServerAdmin.ru
Раз уж я рассмотрел панели для управления бэкапами (Postgresus и Pgbackweb) в виде дампов в Postgresql, было бы логично рассмотреть и вариант со своими велосипедами на bash. Поделюсь тем, что использую я.
Сначала полный текст скрипта для бэкапа:
#!/bin/bash…
Сначала полный текст скрипта для бэкапа:
#!/bin/bash…
👍95👎4
В последних публикациях на тему бэкапа баз в Postgresql не раз всплывал вопрос: "А есть ли веб панели для управления бэкапами баз MySQL?". Я сам никогда их не использовал и не встречал. Знаю, что инструменты для подобного бэкапа есть в панелях по управлению веб серверами, типа Hestiacp, aaPanel и им подобным. Очевидно, если у вас не веб сервер, то такую панель ставить не имеет смысла. А специализированных панелей только для бэкапов не существует.
Решение, как оказалось, есть на поверхности. Существует известная веб панель для управления сервером - Webmin. Странно, что я по ней ни одной заметки ещё не написал. Хоть сам и не ставлю на свои сервера, но приходилось работать. Там есть интересные возможности, ради которых её можно использовать.
В Webmin есть модуль для управления MySQL. Я его попробовал. Настроек немного, но сделано вполне функционально. Я там немного покумекал, как сделать наиболее удобно и получилось неплохо. Расскажу по шагам, как я всё настроил.
1️⃣ Установка. Панель собрана в пакеты под популярные дистрибутивы. Подключить репозиторий можно автоматически через скрипт:
Либо вручную, добавив репозиторий и ключ от него. Для Debian это:
После установки можно идти по IP адресу сервера на порт 10000 и заходить под учёткой root. После этого в разделе Webmin ⇨ Webmin Configuration ⇨ IP Access Control ограничьте доступ к панели по IP адресам. Её нельзя выставлять в публичный доступ. В панели периодически находят уязвимости, а у неё полный доступ к серверу.
2️⃣ Если MySQL сервер устанавливался после установки Webmin, то модуль управления будет в списке Un-used Modules, если после, то в Servers. Чтобы модуль переехал из Un-used, нажмите на Refresh Modules.
3️⃣ В модуле есть возможность настроить подключение к MySQL серверу в разделе Configuration ⇨ Server Connections. По умолчанию используется localhost, но вы можете подключиться к любому другому серверу, в том числе в контейнере. Главное, чтобы к нему был доступ извне.
4️⃣ Можно настроить бэкап как конкретной базы, так и всех разом. При бэкапе всех баз, каждая из них сохраняется в отдельный файл и может при желании сразу сжиматься. Бэкап выполняется через стандартный
5️⃣ Для бэкапов есть планировщик. Работает в формате заданий cron. Да и сами задания добавляются в системный файл
6️⃣ Основное неудобство – задание бэкапа каждый раз перезаписывает файлы. Нет возможности хранить несколько копий и автоматически удалять старые. Я решил этот вопрос максимально просто в лоб.
Можно указать команды, которые будут выполняться до запуска бэкапа и после. Настроил бэкап в директорию
Она создаёт директорию вида
Для того, чтобы очищать старые бэкапы, добавил команду перед запуском:
Она оставляет 30 новых директорий, а более старые удаляет. Вопрос с ротацией бэкапов решён. Работает просто и наглядно. При желании можно добавить ещё одну команду, которая будет куда-нибудь во вне копировать эти файлы.
7️⃣ Для восстановления бэкапов достаточно создать новую базу или выбрать существующую, зайти в неё, выбрать раздел Execute SQL ⇨ Run SQL from file ⇨ From local file и выбрать один из дампов. При желании можно подключиться к другому серверу и восстановить бэкап туда.
Получилось простое в настройке и вполне функциональное решение.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#backup #mysql
Решение, как оказалось, есть на поверхности. Существует известная веб панель для управления сервером - Webmin. Странно, что я по ней ни одной заметки ещё не написал. Хоть сам и не ставлю на свои сервера, но приходилось работать. Там есть интересные возможности, ради которых её можно использовать.
В Webmin есть модуль для управления MySQL. Я его попробовал. Настроек немного, но сделано вполне функционально. Я там немного покумекал, как сделать наиболее удобно и получилось неплохо. Расскажу по шагам, как я всё настроил.
# curl -o webmin-setup-repo.sh https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repo.sh
# sh webmin-setup-repo.sh
Либо вручную, добавив репозиторий и ключ от него. Для Debian это:
deb https://download.webmin.com/download/newkey/repository stable contrib
# apt-get install webmin --install-recommends
После установки можно идти по IP адресу сервера на порт 10000 и заходить под учёткой root. После этого в разделе Webmin ⇨ Webmin Configuration ⇨ IP Access Control ограничьте доступ к панели по IP адресам. Её нельзя выставлять в публичный доступ. В панели периодически находят уязвимости, а у неё полный доступ к серверу.
mysqldump
. Ключи запуска могут добавлять при необходимости. /var/spool/cron/crontabs/root
.Можно указать команды, которые будут выполняться до запуска бэкапа и после. Настроил бэкап в директорию
/root/sql_backup
а после бэкапа добавил команду:mkdir /mnt/backup/`date +"%Y-%m-%d_%H-%M"` && cp -R /root/sql_backup/* /mnt/backup/`date +"%Y-%m-%d_%H-%M"`/
Она создаёт директорию вида
2025-07-23_16-27
и копирует туда созданные файлы. При следующем запуске имя директории будет другое.Для того, чтобы очищать старые бэкапы, добавил команду перед запуском:
find /mnt/backup -type d -printf '%T@ "%p"\n' | sort -n | head -n -30 | awk '{print $2}' | xargs -I {} rm -r {}
Она оставляет 30 новых директорий, а более старые удаляет. Вопрос с ротацией бэкапов решён. Работает просто и наглядно. При желании можно добавить ещё одну команду, которая будет куда-нибудь во вне копировать эти файлы.
Получилось простое в настройке и вполне функциональное решение.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#backup #mysql
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍68👎5