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`文件
相关推荐
斯晨的AI笔记8 小时前
在服务器上跑 npm ci 四十分钟没装完,我打包把 node_modules 扔了过去
服务器·node.js
cpolar技术支持10 小时前
第三方平台回调总说收不到?把本机 Webhook 收单页跑通,用 cpolar 固定二级子域名给对面看实时请求
node.js·内网穿透·webhook·cpolar·回调对接
damoluomu15 小时前
Node.js CMS 的官网和仓库,22 个一次收齐(五)
node.js
Flynt1 天前
Deno 官宣一年后停更:我把它的招牌特性在 Node 26 和 Bun 里挨个找了一遍
node.js·deno·bun
孟陬1 天前
Node.js 中 `\b` 的作用
node.js·bun
小小荧2 天前
🚀 Node.js 之父离开 Deno,带着整个团队加入了 Cloudflare
前端·node.js
damoluomu2 天前
Directus 换掉 GPL 之后,Node.js CMS 到底怎么选?(四)
node.js
前端一小卒2 天前
搜索 API 额度用完返回空数组,Agent 就开始一本正经地胡说
前端·javascript·node.js
濮水大叔2 天前
Cabloy 双引擎架构详解:Vona 与 Zova 是如何协作的
typescript·node.js·全栈