MySQL и MariaDB

Бэкап MySQL (mysqldump) в облако

mysqldump делает дамп, dbsend делает всё остальное: хранит дампы версиями в российском облаке, показывает, какие таблицы изменились, напоминает, если ночной бэкап не пришёл, и отдаёт нужную версию для восстановления.

Типичные проблемы самописных бэкапов MySQL

Дамп на том же сервере, что и база, — не бэкап: он погибнет вместе с диском, при взломе или ошибочной команде rm. Значит, нужен внешний бакет, ключи доступа к нему, ротация и очистка старых файлов.

mysqldump без --single-transaction на InnoDB-таблицах блокирует запись или выдаёт несогласованный срез. Без --routines и --triggers в дампе не окажется хранимых процедур. Такие ошибки обнаруживаются только при восстановлении.

Наконец, скрипт, который падает молча, хуже отсутствия скрипта: он создаёт ощущение защищённости. Если никто не получает уведомление о пропущенном бэкапе, о проблеме узнают слишком поздно.

Что даёт dbsend для MySQL и MariaDB

Хранение вне сервера

Дамп уходит в S3-совместимое облако в России с шифрованием AES-256-GCM. На сервере базы не нужны ключи от бакета — только API-ключ dbsend.

Разбор дампа

dbsend читает CREATE TABLE и INSERT, включая extended INSERT, и показывает список таблиц, число строк и хэш схемы для каждой версии (тарифы от «Старт»).

Diff и метки

Сравните два дампа и увидите, какие таблицы выросли или опустели. Подпишите версию «перед релизом» и закрепите её, чтобы ротация её не удалила.

Алерты и история

Ожидаемый интервал бэкапов и уведомления в Telegram или на email, если очередной дамп не пришёл. История загрузок видна в панели и через dbsend log.

Настройка: mysqldump + dbsend

Создайте в панели базу с типом mysql_dump и API-ключ, установите CLI (Node.js 22.12+) и сохраните ключ командой dbsend login.

1. Скрипт бэкапа

#!/usr/bin/env bash
# /usr/local/bin/mysql-backup.sh
set -euo pipefail
DUMP=/var/backups/shop.sql
mysqldump --single-transaction --routines --triggers --no-tablespaces shop > "$DUMP"
dbsend backup "$DUMP" -d <id базы> -e mysql_dump -l "nightly-$(date +%F)"
rm -f "$DUMP"

Логин и пароль MySQL храните в ~/.my.cnf с правами 600, а не в командной строке.

2. Расписание cron

# crontab -e — каждые 6 часов
0 */6 * * * /usr/local/bin/mysql-backup.sh >> /var/log/mysql-backup.log 2>&1

3. MySQL в Docker

docker exec mysql sh -c 'mysqldump --single-transaction -uroot -p"$MYSQL_ROOT_PASSWORD" shop' > /var/backups/shop.sql
dbsend backup /var/backups/shop.sql -d <id базы> -e mysql_dump

4. Восстановление

dbsend log <id базы>
dbsend restore <id версии> ./shop.sql --yes
mysql shop_restore < ./shop.sql

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

Сколько хранить и как часто снимать дамп

Частота бэкапа определяется тем, сколько данных вы готовы потерять. Для интернет-магазина или CRM разумно снимать дамп каждые несколько часов, для блога или справочника — раз в сутки. Если файл не изменился, dbsend не создаёт новую версию, поэтому запускать бэкап чаще почти ничего не стоит.

Глубина хранения зависит от тарифа: от 3 версий на бесплатном до 365 на «Команде». Для важных моментов — перед миграцией схемы, крупным импортом или релизом — ставьте метку и закрепляйте версию: закреплённые версии не участвуют в ротации.

dbsend или свой скрипт mysqldump + S3

mysqldump + cron + S3dbsend
Таблицы и число строк в каждом дампеот «Старт»
Ключи от бакета на сервере базынужныне нужны
Время на настройкускрипт, бакет, ключи, ротация — часы3 команды — несколько минут
История версий с меткамиимена файлов по датеv1…vN, метки, закрепление
Не плодит одинаковые копии
Diff между версиями (таблицы, строки, схема)на платных тарифах
Проверка SHA-256 при восстановленииесли написали сами
Алерт, если бэкап не пришёлTelegram и email
Шифрование и хранение в РФзависит от бакетаAES-256-GCM, РФ
Доступ из Claude Code и Cursor (MCP)
Стоимостьхранилище + ваше времяот 0 ₽

Тарифы и лимиты — на странице «Тарифы». Документация: CLI, форматы файлов, базы.

Частые вопросы

Поддерживается ли MariaDB?

Да. Дампы mariadb-dump и mysqldump имеют одинаковый формат SQL, загружайте их с типом mysql_dump.

Можно ли бэкапить базу на виртуальном хостинге?

Да, если на хостинге доступен SSH и Node.js 22.12+ или если дамп можно скачать на другой сервер. dbsend нужен только исходящий HTTPS до api.dbsend.ru; запускать CLI можно где угодно, где лежит файл дампа.

Как восстановить базу MySQL из бэкапа?

Скачайте нужную версию командой dbsend restore <id> ./dump.sql --yes — CLI сверит SHA-256. Затем примените дамп командой mysql имя_базы < dump.sql. Версию можно скачать и из панели.

Сжимать ли дамп перед загрузкой?

Не нужно. CLI сжимает файл gzip потоково при отправке и считает контрольную сумму по исходному дампу. Загружайте обычный .sql — так работают инспекция и diff.

Какой максимальный размер дампа?

До 100 МБ на бесплатном тарифе, 500 МБ на «Старт», 2 ГБ на «Про» и «Команде». Файлы больше 32 МБ загружаются частями автоматически.

Статьи по теме

Все статьи →

Другие сценарии

Перенесите дампы MySQL из /tmp в облако

Бесплатный тариф: 1 база, 500 МБ и 3 версии навсегда. Подключение занимает несколько минут.

Начать бесплатно →