一、说明
1、docker启动的mysql 容器:
[docker@iZ2ze7edxmvc77g249gzmmZ backup]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c66a9075448c mysql "…" 13 months ago Up 13 months 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
2、mysqldump
使用mysqldump对mysql 每天定时备份, 并删除7天以前的备份
3、备份脚本 mysql_dump.sh
#!/bin/bash
docker exec mysql mysqldump -uroot -p123456 cx | gzip > /opt/mysql/backup/cx_`date +%Y%m%d`.
send=`date '+%Y-%m-%d %H:%M:%S'`
if [ $? -ne 0 ];
then
echo "$send 数据备份失败"
exit -1
else
echo "$send 数据备份成功!"
fi
find /opt/mysql/backup/ -mtime +7 -name 'cx_[1-9].sql' -exec rm -rf {} \;
脚本说明:
a、mysqldump备份命令
mysqldump -uroot -p123456 cx > /opt/mysql/backup/cx_`date +%Y%m%d`.sql
b、删除7天以前的备份,根据情况保留
find /opt/mysql/backup/ -mtime +7 -name 'cx_[1-9].sql' -exec rm -rf {} \;
c、| gzip 备份的同时进行压缩
3、通过linux cron设置定时任务
crontab -e:
#每周日凌晨2点
00 02 * * 7 sh /opt/mysql/backup/mysql_dump.sh > /opt/mysql/backup/mysql_dump.log 2>&1
二、补充
1、举例说明。
一次性备份这个数据
mysqldump -uroot -p123456 --all-databases > /opt/mysql/backup/all_`date +%Y%m%d`.sql
备份一个或多个数据库
mysqldump -uroot -p123456 test1 test2 > /opt/mysql/backup/all_`date +%Y%m%d`.sql
备份一张表student
mysqldump -uroot -p123456 test student > /opt/mysql/backup/test_student_`date +%Y%m%d`.sql
备份多张表student和grade
mysqldump -uroot -p123456 test student grade > /opt/mysql/backup/test_student_grade_`date +%Y%m%d`.sql
利用循环备份多个数据库
#!/bin/bash
if [ ! -d $(date +%Y%m%d) ];then
mkdir $(date +%Y%m%d)
fi
for t in "test1" "test2" "test3"
do
mysqldump -uroot -proot123 $t | gzip > /opt/mysql/backup/$(date +%Y%m%d)/${t}_`date +%Y%m%d`.
if [ $? -ne 0 ];
then
echo $t "数据备份失败"
else
echo $t "数据备份成功!"
fi
done
随手用到,就随手记录一下。