mysql(35) : 定时备份docker部署的mysql数据及删除n天之前备份

自动备份docker部署的mysql数据并复制到宿主机及压缩,然后删除n天之前备份的数据

备份最细粒度为小时

备份mysql数据脚本

cat > save_mysql_data.sh <<'EOF'
#!/bin/sh
path="$( cd "$( dirname "$0"  )" && pwd  )"
sed -i "s#database_name#$1#g" $path/handle.sh
sh $path/handle.sh
sed -i "s#$1#database_name#g" $path/handle.sh
EOF

cat > handle.sh <<'EOF'
#!/bin/sh
path="$( cd "$( dirname "$0"  )" && pwd  )"
cd $path
# 导出sql
docker exec -it --env LANG=C.UTF-8 mysql /bin/bash   -c 'mysqldump -uroot -p123456 database_name > /home/database_name.sql'
# 复制到宿主机并添加时间后缀
docker cp mysql:/home/database_name.sql $path
day=`date -d "now" +%Y-%m-%d-%H`
nf="database_name_$day.sql"
mv $path/database_name.sql $path/$nf
# 压缩
gzip $path/$nf
# 删除30天之前的备份
dqt=`date -d -30day +%Y-%m-%d`
df="database_name_$dqt.sql.gz"
echo "删除文件: $df"
rm -rf $path/$df
EOF

注 : 注意修改mysql密码 

备份任务(每日0点和12点)

crontab -e 添加以下任务

0 0,12 * * * sh /root/save_mysql_data.sh test

注 : main.sh必须为全路径名,参数为数据库名称,执行后会在备份到当前目录

你可能感兴趣的:(mysql,mysql,数据库,java,mysql自动备份)