之前使用mysql是通过宝塔应用商城进行安装的,就通过宝塔中的定时脚本任务进行定期备份处理,备份完成后又将备份的sql文件传输到另一个服务器,进行双备处理,以防服务出现故障,导致线上业务出现问题。
最近通过docker进行安装数据库的,所以又换了个备份的方法,首先先进入docker容器中
执行的是:
docker exec -it 容器ID /bin/bash
进入容器ID后,又通过mysqldump进行指定数据库进行备份处理,下面语句是进行备份处理的语句,其中路径/va/lib/myslq是容器备份的路径,又由于容器与宿主机进行磁盘路径映射处理,将备份的路径与宿主机下的某一路径进行映射处理,备份完成后,在宿主机磁盘路径下也可以看到备份的文件。
mysqldump -u 用户名 -p tt > /var/lib/mysql/tt_$(date +%Y%m%d_%H%M%S).sql
执行脚本
echo '开始备份数据'
now=$(date "+%Y%m%d")
backup_dir="/data/back_up"#获取容器id
mysqlid=`docker ps -aqf "name=hardcore_herschel"`#进入mysql容器
docker exec -i ${mysqlid} /bin/bash<<'EOF'#mysqldump导出表结构和数据
if [ ! -d "/backup" ]; then
mkdir -p /backup
fiif [ -f "/backup/db.sql" ]; then
rm -rf /backup/db.sql
fi
mysqldump -uroot -p --password= tt > /var/lib/mysql/tt_$(date +%Y%m%d_%H%M%S).sqlecho '成功制作备份sql'
if [ $? -ne 0 ]; then
echo 'mysqldump运行失败'
exit
EOF
fiexit
EOF
添加定时
crontab -e
添加定时脚本
*/5 * * * * cd /home; sh demo.sh >> back_task.log 2 >>back_task.log
查看列表
crontab -l
删除
crontab -r