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`文件
相关推荐
网络点点滴9 小时前
NPM的包版本管理
前端·npm·node.js
Allen正心正念20259 小时前
前端——Node.js&npm,学点前端的东西
前端·npm·node.js
. . . . .11 小时前
Node.js 模块系统
node.js
我叫汪枫21 小时前
在后台管理系统中,如何递归和选择保留的思路来过滤菜单
开发语言·javascript·node.js·ecmascript
技术钱21 小时前
nodejs使用RustFS容器服务搭建对象存储oss
node.js·egg
大貔貅喝啤酒1 天前
接口测试_Postman(详细版)
javascript·测试工具·node.js·自动化·postman
桜吹雪1 天前
Langchain.js官方文档:构建具备按需加载技能的 SQL 助手
javascript·人工智能·node.js
拾贰_C1 天前
【node.js | Ubuntu | update】如何升级旧的nodejs本版至最新;如何升级npm
ubuntu·npm·node.js
湖边看客1 天前
在 Windows PowerShell 里给 Node.js 设置内存上限
node.js
zhensherlock1 天前
Protocol Launcher 系列:Beorg 高效任务管理的协议支持
前端·javascript·typescript·node.js·自动化·github·js