今天在做数据库的数据备份,查了些许资料。刚好得出了结果,在测试版本的服务器上运行正常,希望明天能自动备份吧。
首先写mysql备份执行sh,这里用的mysqldump来执行备份
首先在服务器下创建备份目录 mkdir /backups
创建备份程序 vi DatabaseName.sh :
#!/bin/bash
mysqldump --uuser -ppassword DatabaseName | gzip > /backups/Database_$(date + %Y%m%d_%H).sql.gz
其中 user 和password为数据库的账号密码,DatabaseName为数据库。这样执行了DatabaseName.sh后,有报错警告,是因为mysql的安全机制导致的密码不能写出来。这里可以这样处理下,在mysql的配置里面修改dump。
vi /etc/mysql/my.cnf
在[client]下添加
host=localhost
user=user
password=password
保存之后,再修改下DatabaseName.sh
#!/bin/bash
mysqldump --defaults-extra-file=/etc/mysql/my.cnf DatabaseName | gzip > /backups/Database_$(date + %Y%m%d_%H).sql.gz
再加上定期删除N天前的数据
find /backups -mtime +7 -name "*.gz" -exec rm -rf {} \;
-mtime : 以天为单位,+n表示超过n天
-name : 搜索选项 *.gz ,表示 .gz 结尾的 文件
最后写入定时执行文件: crontab -e
0 1 * * * /backups/DatabaseName.sh 每天凌晨一点执行一次。
至此完成。