脚本分享-两个shell备份mysql的脚本
来源:互联网 发布:python 行为树 实现 编辑:程序博客网 时间:2024/05/27 12:22
分享两个shell script脚本,用来备份mysql用的。
第一个脚本是使用mysqldump命令来备份,第二个脚本是使用innobackupex也就是xtrabackup程序来做备份。
他们的主要区别在于:
mysqldump优点:备份出来的数据比较小,基本算是纯数据,如果是innodb引擎,数据都在内存里面的话,不会发生物理磁盘的读操作。
mysqldump缺点:不支持增量备份,会发生表锁,如果数据量过大,表锁时间会很长。
xtrabackup优点:支持热备,支持增量备份。
xtrabackup缺点:备份是物理拷贝+逻辑备份的方式备份数据库,会发生物理磁盘的读操作,但是物理备份的速度会比较快。
总的来看xtrabackup会比mysqldump优秀很多,因为他支持热备和增量备份。但是这个也是根据数据库情况而定,如果是在slave上做备份,不用太多的考虑表锁问题,mysqldump也是很不错的。还有就是如果数据量不大,小于5G,数据基本都是update语句较多的情况下,不太适合使用xtrabackup做全备和增量备份策略,因为xtrabackup增量备份的原理是通过lsn来操作的,
如果你的数据库更新太频繁,每天新的lsn太多,那增量备份还没有全备来的快,还有就是xtrabackup全备的时候会备份ib_logfile*和ibdata*,就算你使用的独享表空间也会备份这些文件,所以每次全备的size会比较大,磁盘空间和系统资源的占用也比较多。
根据上面的一些简单分析,大家可以根据自己的情况来指定自己的备份策略,使用这两个脚本加上crontab就能完成普通的备份任务。
下面是两个脚本,第一个是使用mysqldump来备份,第二个是使用innobacpupex,innobaclupex是每天第一次备份是全备,后面就会基于每天的第一个全备做0级增量备份。
注意:mysqldump的时候要注意是否备份存储过程、触发器,事件等信息。
第一个脚本是使用mysqldump命令来备份,第二个脚本是使用innobackupex也就是xtrabackup程序来做备份。
他们的主要区别在于:
mysqldump优点:备份出来的数据比较小,基本算是纯数据,如果是innodb引擎,数据都在内存里面的话,不会发生物理磁盘的读操作。
mysqldump缺点:不支持增量备份,会发生表锁,如果数据量过大,表锁时间会很长。
xtrabackup优点:支持热备,支持增量备份。
xtrabackup缺点:备份是物理拷贝+逻辑备份的方式备份数据库,会发生物理磁盘的读操作,但是物理备份的速度会比较快。
总的来看xtrabackup会比mysqldump优秀很多,因为他支持热备和增量备份。但是这个也是根据数据库情况而定,如果是在slave上做备份,不用太多的考虑表锁问题,mysqldump也是很不错的。还有就是如果数据量不大,小于5G,数据基本都是update语句较多的情况下,不太适合使用xtrabackup做全备和增量备份策略,因为xtrabackup增量备份的原理是通过lsn来操作的,
如果你的数据库更新太频繁,每天新的lsn太多,那增量备份还没有全备来的快,还有就是xtrabackup全备的时候会备份ib_logfile*和ibdata*,就算你使用的独享表空间也会备份这些文件,所以每次全备的size会比较大,磁盘空间和系统资源的占用也比较多。
根据上面的一些简单分析,大家可以根据自己的情况来指定自己的备份策略,使用这两个脚本加上crontab就能完成普通的备份任务。
下面是两个脚本,第一个是使用mysqldump来备份,第二个是使用innobacpupex,innobaclupex是每天第一次备份是全备,后面就会基于每天的第一个全备做0级增量备份。
注意:mysqldump的时候要注意是否备份存储过程、触发器,事件等信息。
mysqldump:
#!/bin/bashFILE_TIME=`date +%Y-%m-%d-%H`DIR_TIME=`date +%Y-%m-%d`BACK_DIR=/backup/DBBAK/$DIR_TIME[ -d $BACK_DIR ] || mkdir -p $BACK_DIRcd $BACK_DIR/usr/local/perconamysql/bin/mysqldump -uroot -R --master-data=2 db > db.sql-zs-$FILE_TIMEinnobackupex:
#!/bin/bashLANG=CGTIME=`date +%Y-%m-%d`DIR_TIME=innoback-`date +%Y-%m-%d`BACK_DIR=/backup/DBBAK/$DIR_TIMEif [ ! -d $BACK_DIR ]then mkdir -p $BACK_DIR cd $BACK_DIR /usr/bin/innobackupex $BACK_DIR &> /dev/nullelif [ -d $BACK_DIR ]then cd $BACK_DIR FULLBACKUP=`ls -1 | grep $GTIME | sort | awk 'NR==1{print $1}'` if [ -d ${FULLBACKUP:-nodir} ] then /usr/bin/innobackupex --incremental $BACK_DIR --incremental-basedir=$FULLBACKUP &> /dev/null else /usr/bin/innobackupex $BACK_DIR &> /dev/null fifi
0 0
- 脚本分享-两个shell备份mysql的脚本
- 两个shell备份mysql的脚本
- mysql备份shell脚本
- 【shell脚本】mysql每日备份shell脚本
- 【旧代码】mysql备份的shell脚本
- mysql 全部备份的shell脚本
- Ubuntu 上备份 MySQL 的Shell脚本
- 自动备份 MySQL 数据库的 shell 脚本
- mysql备份shell脚本(2)
- mysql备份恢复shell脚本
- mysql数据库备份shell脚本
- shell脚本备份mysql数据库
- shell脚本备份mysql数据库
- shell脚本备份mysql数据库
- 分享我的自动备份脚本 Linux shell
- 简单的远程FTP定时备份Shell脚本分享
- 简单的远程FTP定时备份Shell脚本分享
- 简单的远程FTP定时备份Shell脚本分享
- ApK调试的几个命令实践
- 使用python在windows 下 编写 自动备份脚本
- 给移动App创业者的工具集
- Fragment(3)和其他Fragment之间交互--伟大的接口回调
- Handler和Message(一)
- 脚本分享-两个shell备份mysql的脚本
- HTML5 LocalStorage 本地存储
- 添加std::string的format函数
- 拼json字符串输出java对象
- ACE OLEDB 12.0连接字符串(Excel 2007)
- 自己的APP里跳转到系统的日历
- 盘古
- openfire及其源码的开发和部署
- SpringMVC中实现自己的拦截器