Backup mysql базы в docker контейнере

Нужно было быстренько настроить бэкап 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 и забираю все файлы из директории с дампами базы. Дальше уже правила хранения на самом бэкап сервер настраиваю в зависимости от потребностей.