node数据库文件备份实现

实现原理

利用定时器执行脚本,每天备份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`文件
相关推荐
jump_jump3 小时前
Kysely 源码解剖:类型安全 SQL 如何走到 AST
node.js·orm·源码阅读
星栈5 小时前
深度复盘:比 EventLoop 更隐蔽!Node 微任务堆积引发的线上接口雪崩事故
后端·node.js
万敏5 小时前
Vue3 全栈实战第二周:Pinia + Vite + Router + axios 完整记录
vue.js·node.js·全栈
大家的林语冰10 小时前
✌️ Deno 2.9 来了,ESM 直接导入 CSS,甚至能开发桌面应用?!
前端·javascript·node.js
laoli_coding1 天前
如何配置HTTPS站点访问的免费SSL域名证书
网络协议·https·node.js·ssl
To_OC1 天前
手写 AI 编程 Agent 的命令执行工具:我被 child_process 坑出来的实战经验
后端·node.js·agent
大家的林语冰1 天前
👍 Rust 为 Node 插上翅膀,反超 Bun 和 pnpm,一体化工具我也有!
前端·javascript·node.js
Kel1 天前
Node.js 本质:从全脉络视角理解运行时原理
javascript·设计模式·node.js
ShiXZ2131 天前
指令集-NPM 常用指令速查手册
前端·npm·node.js
孟陬2 天前
高质量全方位的 AI 工具 sse-stuntman — Mock SSE 接口
前端·node.js·openai