实现原理
利用定时器执行脚本,每天备份sql文件
定时器Crontab
Crontab是Linux中的一种任务定时工具,可以帮助我们在指定时间自动执行特定的命令或脚本(系统默认安装并启动Crontab的)
相关命令
js
$ crontab -l // 查看定时任务
$ crontab -e // 编辑所有任务
执行crontab -e 编辑任务时 ,编辑器中有7个字段,分别表示分钟、小时、日、月、周、要执行的脚本或命令;
javascript
0 1 * * * /var/mysql_data/mysqlbak.sh // 每天凌晨1点执行数据库文件备份
30 21 * * 5 /path/to/backup_script.sh // 每周五晚上9点半备份数据库
0 * * * * /path/to/clean_script.sh // 每小时运行一次清理脚本
备份脚本
mysql导入导出使用命令mysqldump
- mysqldump 是个mysql自带的命令行工具,单线程执行,可以用来备份和还原数据。可以生成 CSV、TXT、XML格式的文件输出
- 格式:mysqldump -u [用户名] -p[密码] [其他选项] [数据库名] > [备份文件.sql]
下面是备份mysql的sh脚本
bash
BACKUP_FILE_NAME=old_`date +"%Y%m%d"`;
cd /var/mysql_data
mysqldump -u root -p xxxxx --host=127.0.0.1 --port=3306 --databases test_sql --single-transaction --column-statistics=0 > ${BACKUP_FILE_NAME}.sql
find /var/mysql_data/ -mtime +30 -name "*.sql" -exec rm -f {} \;
- ---column-statistics=0 该参数用于关闭存储引擎收集和存储表列统计信息的功能(MySQL8.x之前的版本是没有直方图和COLUMN_STATISTICS表的,不关闭会备份出来导入时导致提示警告)
- --single-transaction #兼容InnoDB 一致性 服务可用性,获得一致性备份,减少锁表
下面是定时重启docker 某个服务sh脚本,以kkfileview为例
bash
# 容器名或ID
CONTAINER_NAME="kkfileview"
# 停止容器
docker stop $CONTAINER_NAME
# 重启容器
docker start $CONTAINER_NAME
# 可选:输出操作结果
echo "Docker container $CONTAINER_NAME restarted successfully."
彩蛋:NTPdate同步更新时间
使用ntpdate工具来实现自动更新时间
NTPdate是一种在Linux和类Unix系统中同步网络时间协议(NTP)服务器时间的命令行程序。它可以让你的系统时钟与互联网上的标准时间服务器保持一致,从而确保系统时间的准确性。
在centos系统中使用ntpdate
arduino
// 安装ntpdate工具
$ yum -y install ntpdate
// 设置系统时间和网络时间同步
$ ntpdate pool.ntp.org // 或者ntp.aliyun.com
// 此命令将把你的系统时间设置为与`ntp.aliyun.com`服务器相同的时间。
// 如果不能连外网,则需要指定一台服务器当作时间服务器。再由其他内网服务器作为客户端从时间服务器同步时间
// 查询ntp服务器时间:
$ ntpdate -q pool.ntp.org
在定时任务中
javascript
// 编辑定时任务
$ crontab -e
// 添加定时任务命令
0 * * * * /usr/sbin/ntpdate pool.ntp.org >> /var/log/ntpdate.log 2>&1 // 将每小时同步一次时间,并将日志记录到`/var/log/ntpdate.log`文件