Для бэкапа mysql базы достаточно запустить mysqldump в контейнере и сохранить файл на хост. Делается это все одной командой:
1 |
docker exec container_name /usr/bin/mysqldump -u root --password=rootpass db_name > /mnt/backup/db_name.sql |
Ну и сразу же простенький скрипт приведу по регулярному созданию бэкапов:
1 2 3 4 5 6 7 8 9 10 11 |
#!/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:
1 |
/usr/bin/rsync -av -e "ssh -p 17222 -i /root/.ssh/id_rsa" rsyncuser@10.0.0.101:/mnt/backups/* /backups/mysql |
Я подключаюсь пользователем rsuncuser по ключу из файла /root/.ssh/id_rsa к серверу 10.0.0.101 с портом ssh 17222 и забираю все файлы из директории с дампами базы. Дальше уже правила хранения на самом бэкап сервер настраиваю в зависимости от потребностей.