目标
门店中虽然已经实现双主互备,但仍存在风险,需要将数据回传到办公网络进行数据备份;
实现将远程mysql数据库,每天21点定时进行数据备份,
备份数据文件名格式:commander_2023_01_04_17.sql;
使用mysqldump命令,进行mysql数据库的远程数据备份(通过内网穿透工具进行访问);
环境搭建:
创建mysql容器(debian)
docker run -d --restart=always -p 3306:3306 --privileged=true
-v /etc/localtime:/etc/localtime #避免容器时间与主机时间不一致的情况
-v /web/docker/mysql8/log:/var/log/mysql
-v /web/docker/mysql8/data:/var/lib/mysql
-v /web/docker/mysql8/conf:/etc/mysql/conf.d
-v /web/docker/mysql8/bak:/etc/mysql/bak #数据库备份位置
-e MYSQL_ROOT_PASSWORD=tiger -e TZ=Asia/Shanghai --name MtgMysql mysql:8.0.26
进入数据库容器安装工具:
#更新软件包信息的列表
apt-get update
#安装编辑工具
apt-get install vim
#安装定时任务服务,安装完成后自动注册服务
apt-get install cron
cron服务管理
service cron start #启动
service cron restart #重启
service cron stop #停止
service cron status #检查状态
cron常用命令
crontab -l #查看crontab定时执行任务列表
crontab -e #编辑或添加定时任务
编辑或添加定时任务
0 21 * * * sh /etc/mysql/bak/mysql_sfy_backup.sh
编辑完成后,重启cron服务。
crontab在线工具:tool.lu/crontab/
mysql_sfy_backup.sh内容
#!/bin/bash
cur_date=`date +%Y_%m_%d_%H`
start_time=`date +%Y-%m-%d_%H:%M:%S`
echo "$start_time back up start $cur_date" >> /etc/mysql/bak/mysql_back_up_sfy.log
mysqldump -uroot -p123456 -h访问IP -P端口 commander > /etc/mysql/bak/commander_$cur_date.sql
end_time=`date +%Y-%m-%d_%H:%M:%S`
echo "$end_time back up success $cur_date" >> /etc/mysql/bak/mysql_back_up_sfy.log
遇到的问题
docker 容器中cron服务无法设置开机启动
容器重启
查看容器基础信息
docker inspect 容器ID #用于查看docker对象的底层基础信息
编辑容器内的脚本文件
find / -name docker-entrypoint.sh #找到文件位置
添加上cron服务启动命令
重启容器,可以cron可以正常启动了。