MySQL运维笔记-一种数据定期备份的方法

背景

是在清理某服务器无用数据时发现的,某系统里面,发现新的sql数据。为什么会有人定期备份成sql数据。后面查了下,发现是使用了shell脚本操作,在此记录下,因为感觉很有用。

过程

使用cronab每天凌晨3点备份数据。

bash 复制代码
00 03 * * * /home/xxx/xxx/xxx.sh

备份脚本内容:

bash 复制代码
#!/bin/bash
number=3
backup_dir=/home/xxx/xxx
dd=`date +%Y-%m-%d-%H-%M-%S`
username=xxxx
password=xxxx
mysqldump -u $username -p$password -A > $backup_dir/$dd.sql
delfile=`ls -lcrt $backup_dir/*.sql | awk '{print $9}' | head -1`
count=`ls -lcrt $backup_dir/*.sql | awk '{print $9}' | wc -l`
if [ $count -gt $number]
rm $delfile
fi

说明:

mysqldump -A:中的-A意思是 --all-databases,包含所有库、所有用户权限、所有系统配置

ls -lcrt中:

  • -l:long长格式显示;
  • -t:time-sort按时间排序,默认最新的排前面;
  • -c:--time=ctime --sort=time,与-t搭配,表明按变更时间进行排序。
  • -r:--severse,反转,和-t搭配时,原本是默认最新的排前面,有了-r后,最新的就放最后面了了。

| awk '{print $9}' | head -1命令:

  • 将刚刚ls查到的数据输入给awk命令,按字段处理文本。
  • awk '{print $9}' 提取第9段的信息(ls -lcrt中第9段是文件名),将文件名输入到head命令中。
  • head -1:只留下第一行输出,业务逻辑就是输出,当前sql中,最老的备份文件。

wc -l:

  • wc:word count统计
  • -l:指--lines代码只统计行数。

-gt:Greater Than:大于

优化

这个脚本,搭配crontab在凌晨3点备份整库,能实现功能,但存在一些问题,需要优化和整改。

① 数据太大,可加压缩功能:

bash 复制代码
mysqldump -A | gzip > $backup_dir/$dd.sql.gz 

② 权限问题,使用crontab最好是root权限,并且除了root本身有读写执行权限,其他用户和组都只放执行权限:

711:rwx--x--x

防止密码泄露。

相关推荐
画中有画3 小时前
在自动化脚本中调用其他脚本文件
运维·自动化
凤凰院凶涛QAQ3 小时前
《MySQL内核拆解:从SQL到InnoDB》(三) : 数据库设计 & 聚合查询 & 分组查询
数据库·sql·mysql
Android系统攻城狮3 小时前
Linux FFmpeg深度解析之avcodec_alloc_context3调用流程与实战(十四)
linux·运维·ffmpeg·车载音视频·音视频进阶·ffmpeg音视频进阶
老李IT笔记3 小时前
抹除之后机器上的受管应用可以留下:这一步省掉的是哪段时间
运维·服务器
职豚求职小程序3 小时前
百联集团校招在线测评~IQCAT行测+MAP性格
笔记
叼烟扛炮3 小时前
Linux 学习笔记(四十五):Web 安全基石——Cookie、Session 与 HTTPS 原理解析
linux·前端·网络·笔记·学习·tcp/ip·安全
zhangrelay3 小时前
Arduino-MEGA-ESP单片机理论课笔记-01入门-02硬件-03开发环境-2026
笔记·单片机·嵌入式硬件·学习·机器人
tianbin9113 小时前
Claude Code 用户的中转站实战笔记:接入、压测与避坑
笔记
李纲明3 小时前
WordPress 定时发布不准点或备份/邮件从不跑:先分清 WP-Cron 触发与 DISABLE_WP_CRON,再查回环与系统 Cron
运维·性能优化·wordpress·定时任务·devdiy·wp-cron
Decay__4 小时前
01_MySQL 体系架构全解 —— 连接层、SQL 层、存储引擎层与 InnoDB 深入
运维·数据库·sql·mysql·架构