Нужно было быстренько настроить бэкап mysql базы в docker контейнере. Оказывается, это сделать очень просто. Поделюсь с вами информацией и себе на память сохраню.
Для бэкапа mysql базы достаточно запустить mysqldump в контейнере и сохранить файл на хост. Делается это все одной командой:
# docker exec container_name /usr/bin/mysqldump -u root --password=rootpass db_name > /mnt/backup/db_name.sql
Ну и сразу же простенький скрипт приведу по регулярному созданию бэкапов:
#!/bin/bash DATA=`date +"%Y-%m-%d_%H-%M"` PATHB=/mnt/backups # Бэкапим дампом docker exec container_name /usr/bin/mysqldump -u root --password=rootpass db_name > "$PATHB"/"$DATA"-db_name.sql # Жмем /bin/gzip "$PATHB"/"$DATA"-db_name.sql # Чистим, удаляя файлы старше 10-ти дней /usr/bin/find "$PATHB" -type f -mtime +10 -exec rm -rf {} ;
На сервере с бэкапами забираем эти файлы через rsync:
/usr/bin/rsync -av -e "ssh -p 17222 -i /root/.ssh/id_rsa" rsyncuser@62.211.78.55:/mnt/backups/* /backups/mysql
Я подключаюсь пользователем rsuncuser по ключу из файла /root/.ssh/id_rsa к серверу 62.211.78.55 с портом ssh 17222 и забираю все файлы из директории с дампами базы. Дальше уже правила хранения на самом бэкап сервер настраиваю в зависимости от потребностей.