Linux下mysql自动备份压缩

本文要实现的内容

  • 自动备份mysql指定的数据库
  • 压缩备份的数据库
  • 删除旧有的备份(7天前)

实现是方法编写一个备份脚本,然后使用crontab定时执行脚本达到自动备份的目的。 
本次配置的环境目录如下:

mysql安装目录:    /usr/local/mysql
mysql备份目录:   /app/deploy/backup/mysql
mysql配置文件:   /etc/my.cnf
备份shell文件:   /usr/local/bin/mysql-data-backup.sh
  • 1
  • 2
  • 3
  • 4

环境介绍完毕,下面正式开始


1、新建备份脚本

mkdir -p /app/deploy/backup/mysql  #新建数据备份所在目录
ln -s /usr/local/mysql/bin/mysqldump /usr/local/bin #创建备份执行程序的软链接
touch /usr/local/bin/mysql-data-backup.sh
chmod +x /usr/local/bin/mysql-data-backup.sh   #增加脚本的执行权限
  • 1
  • 2
  • 3
  • 4

2、配置mysql的[client]选项

使用mysqldump -u root -proot test_db > /app/deploy/backup/mysql/backup.sql 会报以下错误:

Warning: Using a password on the command line interface can be insecure.
  • 1

直接在命令行填写明文密码是不安全的,容易被系统其它用户窃取。这是mysql为了安全性作出的一种专制,官方也对这种情况作出了说明: 
http://dev.mysql.com/doc/refman/5.7/en/password-security-user.html

这个种情况下,官方也给出了解决方法,那就是增加配置文件里的[client]中的内容。 
vi /etc/my.cnf 
加入以下内容

[client]
host=localhost
user=root
password=root
  • 1
  • 2
  • 3
  • 4

这时候可用以下命令进行备份

mysqldump --defaults-extra-file=/etc/my.cnf test_db > /app/deploy/backup/mysql/backup.sql
  • 1

3、编写备份脚本

vi /usr/local/bin/mysql-data-backup.sh
  • 1

脚本内容如下:

#!/bin/bash
#description: mysql-data automatically backup script

# 文件名为test_db+日期
backupDatabase=test_db
fileName=${backupDatabase}`date +%Y%m%d`

# 定义baseDir变量
baseDir=/app/deploy/backup/mysql/ 

# 备份数据库 
mysqldump --defaults-extra-file=/etc/my.cnf ${backupDatabase} > ${baseDir}${fileName}.sql  

# 压缩 
tar -zcPvf ${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 {} \;    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

4、编写定时任务

vi /var/spool/cron/crontabs/root
  • 1

加入以下内容

# 每天的23时59分进行备份(使用/bin/bash解析器运行脚本)
59 23 * * * /bin/bash /usr/local/bin/mysql-data-backup.sh
出处:https://blog.csdn.net/massivestars/article/details/52445228

猜你喜欢

转载自blog.csdn.net/dhdhxgx/article/details/80063790