Linux下通过电子邮件自动备份数据库
By lincanbin
at 2017-04-24
0人收藏 • 3650人看过
自动数据库备份,当然不能备份到同一个服务器上,如果只有一个服务器那怎么办呢?
思前想后想到了备份到邮箱里。
那么可以这么做:
1、编辑mysql.cnf,在行尾加入:
[mysqldump] user = your_backup_user_name password = your_backup_password
填入一个设置好只有要备份的数据库的只读权限、用来备份数据库的MySQL账号和对应密码。
2、设置mail的账号密码,这里可以参考:
3、编写定时脚本,这里新建一个carbon_backup.sh
mysqldump carbon --ignore-table=carbon.carbon_dict > /www/carbon.sql #忽略字典表 zip /www/carbon_database.zip /www/carbon.sql rm -f carbon.sql mail -s "$(date) Database Backup for Carbon Forum" i@lincanbin.com < /www/carbon_database.zip #uuencode /www/carbon_database.zip /www/carbon_database.zip | mail -s "$(date) Database Backup for Carbon Forum" i@lincanbin.com rm -f /www/carbon_database.zip echo "$(date) Database Backup Success"
为了安全,第2行你也可以这么写:
zip -P 你自己设置的压缩文件密码 /www/carbon_database.zip /www/carbon.sql
需要注意的是使用第5行被注释掉的方法发送附件邮件需要uuencode命令,没有的注意自己装,CentOS可以:
yum install sharutils
4、添加定时任务:
crontab -e
添加:
30 23 * * * /www/carbon_backup.sh >> /www/backup_sql.log 2>&1
这样就会每天23:30自动备份数据库并发送到你的邮箱。
————————————————
20180510补充:
实测.tar.bz2压缩率远胜于zip格式,如果可以接受压缩时间更久,可以考虑用.tar.bz2。
这是最新修改过的shell:
/www/wdlinux/mysql/bin/mysqldump --single-transaction --single-transaction--skip-extended-insert --quick carbon --ignore-table=carbon.carbon_dict > /www/carbon.sql #忽略字典表 # --quick 该选项用于转储大的表。它强制mysqldump从服务器一次一行地检索表中的行而不是检索所有行并在输出前将它缓存到内存中。 # --skip-extended-insert忽略刚插入的记录 tar -jcvf /www/carbon_database.tar.bz2 -P /www/carbon.sql rm -f /www/carbon.sql #mail -s "$(date) Database Backup for Carbon Forum - carbon_database.tar.bz2" i@lincanbin.com < /www/carbon_database.tar.bz2 # 以附件形式发送备份 echo "$(date "+%Y-%m-%d %H:%M:%S") Database Backup for Carbon Forum正文" | mail -s "$(date "+%Y-%m-%d %H:%M:%S") Database Backup for Carbon Forum" -a /www/carbon_database.tar.bz2 "i@lincanbin.com" #uuencode /www/carbon_database.zip /www/carbon_database.zip | mail -s "$(date) Database Backup for Carbon Forum" i@lincanbin.com rm -f /www/carbon_database.tar.bz2 echo "$(date "+%Y-%m-%d %H:%M:%S") Database Backup Success"
- 登录后方可回帖
非常好!刚想着备份呢。
我的想法是本地PC下载数据包作为备份,刚好你的教程可以参考下。
其实还需要把网站目录也备份下。
额,有个小问题,我自己修改了mariadb10的端口,命令里也正确显示了新的端口,那么为毛网站依旧工作正常?网站配置文件不需要修改端口?还是哪里出了什么问题?
感觉就跟没修改端口一样。
回复#1 @后宫学长 :
重启MariaDB了吗?
回复#5 @后宫学长 :
大概是因为神秘的PDO是通过编译驱动运行的吧。
回复#9 @后宫学长 :
执行权限都给了,干脆全给了。
回复#4 @lincanbin :
上面说的MariaDB端口问题,
原来localhost走的是socket通道(CF默认是localhost),127.0.0.1才走的TCP/IP通道,这才受端口影响,我说我怎么改端口都没用呢。
我都差点怀疑人生了。
原来是这样子的。
回复#11 @后宫学长 :