MySQL数据库定时备份Shell脚本并备份至其它机器方法
来源:互联网 发布:淘宝秒杀成功吗 编辑:程序博客网 时间:2024/05/22 05:04
这是一个简单的MySQL数据库备份shell脚本,适用于单台Linux服务器或者VPS的mysql数据库备份工作,
工作原理是使用mysql的mysqldump
工具来导出数据库为.sql文件,然后将所有导出的文件打包归档。
然后我们在shell脚本中使用 scp命令把备份文件复制到另外一台备份机器,由于scp每次传送文件要密码
因此我们需要使用 expect插件或者利用密钥。在这里介绍采用生成密钥对的方法。
1,生成密匙对,我用的是rsa的密钥。使用命令 "ssh-keygen -t rsa"
生成的过程中提示输入密钥对保存位置及密码,直接回车,接受默认值就行了。
其中公共密钥保存在 ~/.ssh/id_rsa.pub,私有密钥保存在 ~/.ssh/id_rsa 。
2,然后修改 .ssh 目录权限,chmod 755 ~/.ssh 。最后把 公共密钥复制到你要访问
的机器上去,并保存为:~/.ssh/authorized_keys 。
scp -P 1110 ~/.ssh/id_rsa.pub daniel@*.*.*.*:/home/daniel/.ssh/authorized_keys
(注意这里- P 为大写, 表示目标机器daniel 的ssh端口为1110,小写的p为源ssh端口,
修改ssh端口在文件/etc/ssh/sshd_config下 。)这里完成scp 脚本免密钥的方法介绍。
最后使用crontab定时执行脚本即可!
脚本如下:
#!/bin/bash# description: MySQL buckup shell script# author: Daniel# web site: http://home.ustc.edu.cn/~danewang/blog/st=$(date +%s)USER="root" PASSWORD="*****"#用户名 DATABASE="myblogdb" #数据库用户密码 MAIL="abcd@gmail.com"#mail BACKUP_DIR=/home/daniel/data_backup/ #备份文件存储路径 LOGFILE=/home/daniel/data_backup/data_backup.log #日志文件路径 DATE=`date +%Y%m%d-%H%M`#用日期格式作为文件名DUMPFILE=$DATE.sql ARCHIVE=$DATE.sql.tar.gz OPTIONS="-u$USER -p$PASSWORD $DATABASE"#判断备份文件存储目录是否存在,否则创建该目录 if [ ! -d $BACKUP_DIR ] thenmkdir -p "$BACKUP_DIR"fi #开始备份之前,将备份信息头写入日记文件 echo " ">> $LOGFILE echo "--------------------" >> $LOGFILE echo "BACKUP DATE:" $(date +"%y-%m-%d %H:%M:%S") >> $LOGFILE echo "-------------------" >> $LOGFILE #切换至备份目录 cd $BACKUP_DIR mysqldump $OPTIONS > $DUMPFILE #判断数据库备份是否成功 if [[ $? == 0 ]]then tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1 echo "[$ARCHIVE] Backup Successful!" >> $LOGFILE rm -f $DUMPFILE #删除原始备份文件,只需保留备份压缩包 # 把压缩包文件备份到其他机器上。 scp -P 1110 $BACKUP_DIR$ARCHIVE ubuntu@*.*.*.*:/home/user/data_backup/ >> $LOGFILE 2>&1 else echo "Database Backup Fail!" >> $LOGFILE #备份失败后向管理者发送邮件提醒 mail -s "database:$DATABASE Daily Backup Fail!" $MAIL fi echo "Backup Process Done" #删除3天以上的备份文件#Cleaningfind $BACKUP_DIR -type f -mtime +2 -name "*.tar.gz" -exec rm -f {} \;修改/etc/crontab
注意/data/backup/dump.sh为脚本的存放位置.
表示每天2点钟执行备份。
重新启动crond当scp备份到其他机器出现问题时 查看/var/log下的cron日志,/如果var/log下没有cron日志,
则需要:修改rsyslog,命令:sudo vim /etc/rsyslog.d/50-default.conf ,cron.* /var/log/cron.log
#将cron前面的注释符去掉 ,重启rsyslog ,命令:sudo service rsyslog restart,可以查看crontab
日志。
注意命令,格式:command > file 2>&1
2>&1 是将错误输出重定向到标准输出。 然后将标准输入重定向到文件file。&1 表示的是文件描述1,
表示标准输出,如果这里少了&就成了数字1,就表示重定向到文件1。
这句命令的意思:首先是command > file将标准输出重定向到file中, 2>&1 是标准错误拷贝了标准
输出,也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中。
- MySQL数据库定时备份Shell脚本并备份至其它机器方法
- mysql 定时备份数据库脚本
- Linux 怎么通过shell脚本定时备份mysql数据库
- 用shell脚本进行MySQL数据库定时备份
- Linux下定时备份MySQL数据库的Shell脚本
- Linux下定时备份MySQL数据库的Shell脚本
- centos定时备份mysql数据库 用shell脚本实现
- 编写shell脚本对mysql数据库进行定时备份
- Linux下定时备份MySQL数据库的Shell脚本
- centos定时备份mysql数据库 用shell脚本实现
- mysql数据库备份shell脚本
- shell脚本备份mysql数据库
- shell脚本备份mysql数据库
- shell脚本备份mysql数据库
- 定时每天备份mysql并定时删除上月备份脚本
- shell 脚本实现定时备份数据库表
- 服务器数据备份(shell 定时脚本备份mysql)
- mysql定时备份所需权限、shell脚本、OSS备份
- ORACLE 10g 下载地址
- Linux误改系统文件
- Hdu 3065 病毒侵袭持续中//Aho-Corasick Automaton
- 设计模式简介
- HDU1258 Sum It Up
- MySQL数据库定时备份Shell脚本并备份至其它机器方法
- Codeforces Round #192 (Div. 2) A题
- win7升级ie到ie10后打不开的解决办法
- Linux下grep命令的用法
- 在不破坏背景的情况下实现动态文字
- HDU 2438——三分求值
- 盘点jdk各版本的新特性和一些专用术语
- 转:28岁创业者:1000万美金卖出应用的秘诀
- Android 应用程序之间内容分享详解(一)