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

防止密码泄露。

相关推荐
zx_741484811 小时前
【Linux入门】Shell 函数、正则表达式与文本处理:cut 与 awk
linux·运维·正则表达式
zjxtxdy1 小时前
SPI通信协议
笔记·单片机
Zenova EdgeOS2 小时前
Linux dmesg 工业边缘实战:内核日志过滤、持久化与故障定位
linux·运维·边缘计算·工业边缘·dmesg·内核日志
wdfk_prog2 小时前
ROS教程08:从 TransportTCP::connect() 追到 TCPROS Connection Header、序列化与 Socket 数据传输
运维·缓存·docker·容器·ros
做运维的阿瑞3 小时前
Python 标准库汇总:分类速览与常用模块清单
linux·运维·python
百万蹄蹄向前冲3 小时前
密码都对Node.js却连不上Linux数据库
linux·mysql
彧azz3 小时前
Linux 网络编程学习总结
linux·网络·笔记·学习·面试
华章酱3 小时前
MySQL幻读是怎么出现的
数据库·mysql·幻读
浅念-4 小时前
Redis基础详解:单线程模型、String与Hash数据结构
服务器·数据库·redis·sql·mysql·nosql数据库·nosql
日常筹谋记4 小时前
自动化仓储安全防护工况评估:明治传感器AS-33C技术适配性分析
大数据·运维·创业创新·业界资讯