Centos下mysql自动备份并且发送提醒邮件
来源:互联网 发布:pos机s90如何设置网络 编辑:程序博客网 时间:2024/06/05 07:54
最近公司的服务器上放了一个微信的第三方系统,用来搭建微网站和做微活动的。谁知道影响了我的web服务器,只能回档我的微信数据库。结果回档后采编说我把之前的资料给覆盖了,果然不是自己开发的东西,风险性高!有了这次教训,自己还是安稳的做个mysql自动备份把----下面是izji整理的方法,系统是centos6.4
PS:下面的一、(1)和一、(2)是两种备份mysql的代码,选用一种就好了
顺便把自己现在用的代码附件传上来把 下载地址: http://pan.baidu.com/s/1pJO9sHP 密码: numb
一、(1)自动备份mysql的data文件夹
1、mkdir /Data/backup ##先建立备份的目录。
2、vi /root/automysqlbackup.sh ##新建一个sh,并写入
#!/bin/bashbackup_dir=/Data/backup/databak #备份临时文件存放目录backup_target_dir=/Data/backup/mysql_day_backup #备份文件存放目录backup_logs_dir=/Data/backup/logs #备份日志目录db=/Data/data/mysql/data #mysql的data数据目录name=mysql_ #备份时候存放的名字DATE=$(date +%Y%m%d)#得到15天前的日期ccDATE=$(date "-d 15 day ago" +%Y%m%d)echo "开始复制数据表" >> $backup_logs_dir/$name$DATEecho "-----------`date +"%Y-%m-%d %H:%M:%S"`--------------------" >> $backup_logs_dir/$name$DATEcp -R $db $backup_dir/ #mysql数据库的数据目录为/Data/data/mysql/data/echo "开始压缩数据表" >> $backup_logs_dir/$name$DATEecho "------------------------" >> $backup_logs_dir/$name$DATEcd $backup_dirtar -zcvf $name$DATE.tar.gz $db/ && echo "压缩表结束" >> $backup_logs_dir/$name$DATEmv $name$DATE.tar.gz $backup_target_dir/ && echo "转移成功" >> $backup_logs_dir/$name$DATEif [ $? -eq 0 ]then echo "backup succeed" >> $backup_logs_dir/$name$DATEelse echo "backup fail" >> $backup_logs_dir/$name$DATEfiecho "开始删除原数据表" >> $backup_logs_dir/$name$DATEecho "-----------------------" >> $backup_logs_dir/$name$DATErm -rf $backup_dir/* && echo "删除原数据表" >> $backup_logs_dir/$name$DATEecho "删除10天前数据" >>$backup_logs_dir/$name$DATEif [ -e $backup_target_dir/db$ccDATE.tar.gz ]then rm -rf $backup_target_dir/db$ccDATE.tar.gz echo "Delete $backup_target_dir/db$ccDATE.tar.gz succeed" >>$backup_logs_dir/$name$DATEelse echo "Not found $backup_target_dir/db$ccDATE.tar.gz file" >>$backup_logs_dir/$name$DATEfiif [ -e $backup_logs_dir/$name$ccDATE ]then rm -rf $backup_logs_dir/$name$ccDATE echo "Delete $backup_logs_dir/$name$ccDATE succeed" >>$backup_logs_dir/$name$DATEelse echo "Not found $backup_logs_dir/$name$ccDATE file" >>$backup_logs_dir/$name$DATEfi
3、[root@localhost ~]# chmod755 /root/automysqlbackup.sh ##给脚本执行权限
4、[root@localhost ~]# /root/automysqlbackup.sh ###测试脚本是否可以正常运行
如果出现找不到目录或者没有那个目录的错误,那么检查下sh文件的编码,具体操作:vi /root/automysqlbackup.sh 按下Esc Shift+; 输入set ff回车,如果是doc的,那么修改set ff=unix
5、如果执行完毕没出现任何错误,那么备份data成功了
一、(2)自动备份mysql并压缩成sql
1、mkdir /Data/backup ##先建立备份的目录。
2、vi /root/automysqlbackup.sh ##新建一个sh,并写入
#!/bin/bash#Script:automysqlbackup.sh#Version:Beta 1.0#author:记忆#date:2014-07-04#以下配置信息请自己修改mysql_user="root" #MySQL备份用户mysql_password="jiyimysql" #MySQL备份用户的密码mysql_host="localhost" #要备份的主机,一般为localhostmysql_port="3306" #MySQL端口号,一般为3306backup_db_arr=("company" "shuizhongwang" "weixin" "weixinxin" "yangchenghucun" "ychxh" "zhongfuda") #要备份的数据库名称,多个用空格分开隔开 如("db1" "db2" "db3")backup_location=/Data/backup #备份数据存放位置,末尾请不要带"/",此项可以保持默认,程序会自动创建文件夹expire_backup_delete="ON" #是否开启过期备份删除 ON为开启 OFF为关闭expire_days=7 #过期时间天数 默认为三天,此项只有在expire_backup_delete开启时有效adminmail="425995717@qq.com" #接收备份数据的邮箱 也就是管理员的邮箱subject_msg="jiyi's MySQL day backup" #备份邮件主题subject_msg_error="ERROR:MYSQL data backup" #备份ERROR邮件主题#以下配置请保持默认不要修改mysql_path=/Data/apps/mysql5.16/bin #定义mysql的路径 backup_time=`date +%Y-%m-%d-%H-%M` #定义备份详细时间backup_cache_dir=$backup_location/datacache #备份缓存文件夹全路径backup_cache_name=datacache #备份缓存文件夹全路径backup_data_dir=$backup_location/mysql_day_backup #备份文件夹全路径backup_data_filename=$backup_data_dir/$backup_time.sql.tar.gz #备份文件的名称 包括路径backup_log_dir=$backup_location/logs #备份日志文件夹全路径backup_log_mailcontent=$backup_log_dir/mailcontent.log #邮件内容缓存文件全路径welcome_msg="Welcome to use auto MySQL backup tools!" #欢迎语#写入欢迎信息`mkdir -p $backup_log_dir``echo $welcome_msg > $backup_log_mailcontent` #判断MYSQL是否启动,mysql没有启动则备份退出mysql_ps=`ps -ef | grep mysql | wc -l`mysql_listen=`netstat -an | grep LISTEN | grep $mysql_port | wc -l`if [ [$mysql_ps == 0] -o [$mysql_listen == 0] ]; then `echo "ERROR:MySQL is not running! backup stop!" >> $backup_log_mailcontent` `mutt $adminmail -s "$subject_msg_error" < $backup_log_mailcontent`<span style="white-space:pre"></span>exitfi#连接到mysql数据库,无法连接则备份退出$mysql_path/mysql -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password <<enduse mysql;select host,user from user where user='root' and host='localhost';exitendflag=`echo $?`if [ $flag != "0" ]; then `echo "ERROR:Can't connect mysql server! backup stop!" >> $backup_log_mailcontent` `mutt $adminmail -s "$subject_msg_error" < $backup_log_mailcontent` exitelse #判断有没有定义备份的数据库,如果定义则开始备份,否则退出备份 if [ "$backup_db_arr" != "" ];then #dbnames=$(cut -d ',' -f1-5 $backup_database) #echo "arr is (${backup_db_arr[@]})" for dbname in ${backup_db_arr[@]} do `mkdir -p $backup_cache_dir` `$mysql_path/mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password $dbname > $backup_cache_dir/$dbname$backup_time.sql` flag=`echo $?` if [ $flag != "0" ];then `echo "database $dbname backup fail!" >> $backup_log_mailcontent` fi done else `echo "ERROR:No database to backup! backup stop" >> $backup_log_mailcontent` `mutt $adminmail -s "$subject_msg_error" < $backup_log_mailcontent` exit fi #如果开启了删除过期备份,则进行删除操作 backup_data_num=`ls $backup_data_dir | wc -l` if [ "$expire_backup_delete" == "ON" -a $backup_data_num!=0 ];then `find $backup_data_dir -type f -ctime +$expire_days -exec rm -rf {} \;` fi #缓存备份目录打包放到数据备份目录 删除缓存备份目录 backup_cache_num=`ls $backup_cache_dir | wc -l` if [ $backup_cache_num!=0 ];then `mkdir -p $backup_data_dir`<span style="white-space:pre"></span>`cd /Data/backup` `tar zcPf $backup_data_filename $backup_cache_dir/` `rm -rf $backup_cache_dir` else `echo "All database backup fail!" >> $backup_log_mailcontent` `mutt $adminmail -s "$subject_msg_error" < $backup_log_mailcontent` exit fi `echo "All database backup success! Thank you!" >> $backup_log_mailcontent` `mutt $adminmail -s "$subject_msg" -a $backup_data_filename < $backup_log_mailcontent` exitfi
3、[root@localhost ~]# chmod755 /root/automysqlbackup.sh ##给脚本执行权限
4、[root@localhost ~]# /root/automysqlbackup.sh ###测试脚本是否可以正常运行
如果出现找不到目录或者没有那个目录的错误,那么检查下sh文件的编码,具体操作:vi /root/automysqlbackup.sh 按下Esc Shift+; 输入set ff回车,如果是doc的,那么修改set ff=unix
5、如果执行完毕没出现任何错误,那么备份data成功了
二、安装配置邮件msmtp和mutt发送邮件
貌似默认情况下mutt系统已经安装好了
可以使用一下命令查看安装情况:
1
whereis
mutt
如果没有安装mutt可以使用yum安装下
1
yum
install
mutt
通过http://sourceforge.net/projects/msmtp/files/msmtp/1.4.31/ 下载msmtp
安装步骤:
1
cd
/usr/
local
2
wget http://sourceforge.net/projects/msmtp/files/msmtp/1.4.31/msmtp-1.4.31.
tar
.bz2/download
3
bzip2
-d msmtp-1.4.31.
tar
.bz2
4
tar
-xvf msmtp-1.4.31.
tar
5
cd
msmtp-1.4.31
6
./configure --prefix=/usr/
local
/msmtp //指定安装路径
7
make
8
make
install
接下来进行msmtp的相关配置
1
cd
/usr/
local
/msmtp
2
mkdir
etc
3
vim etc/msmtprc
在etc/msmtprc中输入:
defaults
#log
logfile /usr/local/msmtp/msmtp.log
#account
account test
# SMTP邮件服务器地址
host smtp.qq.com
# 发送的邮件Email(这个可以根据情况写个)
from abc@qq.com
auth login
# 邮件服务器登录账号(写个有效的帐号)
user 329***@qq.com
# 邮件服务器登陆密码(user帐号的实际登录密码)
password 123456
# Set a default account
account default : test
退出保存后,为保证安全可以设置下权限,只有当前用户可以可以读写,并复制到当前用户根目录下(隐藏)
1
chmod
600 etc/msmtprc
2
cp
etc/msmtprc /root/.msmtprc
配置mutt
1
vim /etc/Muttrc
添加以下内容:
set from=”noreply@1208.me”
set sendmail=”/usr/local/msmtp/bin/msmtp”
set use_from=yes
set realname=”1208.me”
然后拷贝到根目录,发送邮件测试:
1
cp
/etc/Muttrc /root/.muttrc
2
echo
'测试邮件'
|mutt -s
'来自1208.me的一封邮件'
pcq2006@gmail.com
这时候可以验证下结果。
如果配置过程中有错误,可以通过以下一些命令排查:
1
#查看服务信息
2
/usr/
local
/msmtp/bin/msmtp -S
3
#查看当前配置文件
4
/usr/
local
/msmtp/bin/msmtp -P
三、让sh每天定时自动执行
1、yum install -y vixie-cron ##先安装下crond
2、crontab -e ##写入下面代码,代表每天凌晨2点27分执行备份
27 02 * * * /root/automysqlbackup.sh
- Centos下mysql自动备份并且发送提醒邮件
- 在linux下自动备份数据库,并且发送邮件。
- mysql自动备份数据库并发送邮件
- CentOS编写sh脚本自动备份mysql数据库并发送邮件
- 利用phpmailer自动发送邮件提醒
- Linux自动备份mysql数据库并使用mutt发送邮件
- CentOS下每天自动备份mysql数据库
- CentOS下每天自动备份mysql数据库
- CentOS下的Mysql自动备份
- linux(CentOS) 下mysql自动备份
- linux(CentOS) 下mysql自动定时备份
- SQL Server下利用vbscript 实现数据库月备份自动清理并发邮件提醒
- CentOS 下 mysql数据库自动备份 mysql数据库恢复
- redmine 发送提醒邮件
- 命令完毕自动发送邮件提醒执行结果
- 利用Python 提醒实验室同学值日(自动发送邮件)
- CentOS下自动备份7天的mysql数据库
- CentOS Linux下每天自动备份MySQL数据库
- 协议栈的网络拓扑结构概述
- OC编程语言学习-1
- string转化大小写(C++)
- python 锁机制
- IOS基础知识
- Centos下mysql自动备份并且发送提醒邮件
- 工作三年遇到的动画效果汇总
- Max Points on a Line
- cocos2d基础知识
- 注会综合卷二复习思路和条目浅析(二)
- 更改MFC默认的窗口类#32770
- Android ListView动画特效实现原理及源码
- 雾山的Robotium学习笔记---Robotium针对apk包的测试
- Notepad++ 去除空行方法