mysql定时全量备份、增量备份


mysql定时全量备份、增量备份

第一步    先建好备份目录、shell文件

mkdir    /var/local/mysqlfullbackup            #新建数据全量备份所在目录
mkdir /var/log/mysqllog #新建数据增量备份所在目录

 #修改目录所属组和用户

chown -R mysql:mysql /var/local/mysqlfullbackup

chown -R mysql:mysql /var/log/mysqllog

 

touch /usr/local/bin/mysql_data_fullbackup.sh     #增加全量备份shell

chmod +x /usr/local/bin/mysql_data_fullbackup.sh   #增加脚本的执行权限

touch /usr/local/bin/mysql_binlog_flush.sh    #增加增量备份shell

chmod +x /usr/local/bin/mysql_binlog_flush.sh   #增加脚本的执行权限

第二步   修改my.cnf 

  这里只列出了所需要的参数,其它参数,读者自行添加

[mysqld]
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

#中间省略
#全量备份目录 #mysqlbackup=/var/local/mysqlfullbackup #二进制日志文件目录 log_bin=/var/log/mysqllog/binlog server-id=100 # 安全性考虑 [client] host=localhost user=账户 password=密码 #......省略......
#!includedir /etc/my.cnf.d

修改完之后,重启服务,使其生效

第三步   写shell脚本(简单写法)

 ① 全局变量脚本

mysql_data_fullbackup.sh

#!/bin/bash
#description: mysql-data automatically backup script
# 文件名为100mysql+日期.sql
backupDatabase=100mysql
fileName=${backupDatabase}`date +"%Y-%m-%d_%H:%M:%S"`

# 定义baseDir变量 
baseDir=/var/local/mysqlfullbackup/
 
# 备份数据库 
mysqldump --defaults-extra-file=/etc/my.cnf  --all-databases --flush-logs --delete-master-logs --single-transaction -R > ${baseDir}${fileName}.sql  
# --defaults-extra      会读取 my.cnf 账户和密码
# --delete-master-logs 删除前面的二进制备份
# -R 备份存储过程 # 压缩 #
tar -zcvf ${baseDir}${fileName}.sql.tar.gz ${baseDir}${fileName}.sql # 删除刚刚备份的sql文件,留下压缩的 #rm -f ${baseDir}${fileName}.sql; # 删除7天前备份的数据,只保留一星期内的数据 #find ${baseDir} -mtime +7 -name "${backupDatabase}*.tar.gz" -exec rm -rf {} \;

②增量备份

mysql_binlog_flush.sh

#!/bin/bash
#description: mysql-data automatically backup script
# 刷新二进制日志
mysqladmin --defaults-extra-file=/etc/my.cnf flush-logs;

③先试着运行一下,看是否成功

./mysql_data_fullbackup.sh

如果执行.sh脚本时,报错 " /bin/bash^M: 坏的解释器:没有那个文件或目录”,这是因为 .sh文件是从windows拷贝过来的,所以多了\r,执行:

sed -i 's/\r$//' mysql_data_fullbackup.sh 
会把 mysql_data_fullbackup.sh 中的\r 替换成空白,再次执行则成功!

如果运行成功没问题,则操作第四步

第四步   添加定时任务

读者如不了解Linux的定时任务,可以自行搜索 crontab

crontab -e
0 18 * * 5 /usr/local/bin/mysql_data_fullbackup.sh   # 每个礼拜五的晚上六点 运行该脚本,全量备份一次
0 8 * * 1-5 /usr/local/bin/mysql_binlog_flush.sh     # 礼拜一到礼拜五,每天早上8点,运行脚本,刷新增量备份

第五步 加载配置

service crond reload   //重新载入配置

service crond start    //启动服务

service crond stop     //关闭服务

service crond restart  //重启服务

service crond status   //查看服务状态

最后

到时间点后,去对应的目录,看是否有新的备份文件,有则代表配置成功了

备注

show variables like '%dir%';      -- 查看文件目录
show variables like 'general%';   -- 查看运行日志
show variables like '%log_bin%';  -- 查看二进制日志

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM