Xtrabackup的安装使用,自动化备份脚本
2018-01-04 11:26
716 查看
XtraBackup是Percona公司的开源项目,用以实现类似Innodb官方的热备份工具InnoDB Hot Backup的功能,它支持在线热备份(备份时不影响数据读写)。到目前为止,最新的版本为Percona XtraBackup 2.4.7.
XtraBackup有很多功能和优点:例如支持全备、增量备份、部分备份;支持压缩备份;备份不影响数据读写、事务等,但是也有缺陷不足:例如不支持脱机备份、不支持直接备份到磁带设备、不支持Cloud Back,MyISAM的备份也会阻塞。不过这些小瑕疵不影响XtraBackup成为一款流行的MySQL备份工具。另外,请注意XtraBackup只支持Linux平台,不支持Windows平台。
XtraBackup有很多功能和优点:例如支持全备、增量备份、部分备份;支持压缩备份;备份不影响数据读写、事务等,但是也有缺陷不足:例如不支持脱机备份、不支持直接备份到磁带设备、不支持Cloud Back,MyISAM的备份也会阻塞。不过这些小瑕疵不影响XtraBackup成为一款流行的MySQL备份工具。另外,请注意XtraBackup只支持Linux平台,不支持Windows平台。
一. 安装
参考链接:http://www.cnblogs.com/kerrycode/p/6933024.html#下载对应软件包 cd /usr/local/src/ wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/tarball/percona-xtrabackup-2.4.9-Linux-x86_64.tar.gz #解压并重命名 tar -zxvf percona-xtrabackup-2.4.9-Linux-x86_64.tar.gz -C /usr/local cd .. && mv percona-xtrabackup-2.4.9-Linux-x86_64/ xtrabackup #设置环境变量并生效 echo "export PATH=\$PATH:/usr/local/xtrabackup/bin" >> /etc/profile source /etc/profile |
二. 使用说明
参考链接:https://www.cnblogs.com/zhoujinyi/p/5893333.html三. 自动化压缩备份脚本
#!/bin/bash #innobackupex 增量备份脚本 ################################################################################## BACKUP_DATE=$(date +%Y-%m-%d_%H_%M_%S) BACKUP_DIR=/data/mysql/backup FULLBACKUP_PATH=$BACKUP_DIR/full INCRBACKUP_PATH=$BACKUP_DIR/incr BACKUP_LOG_PATH=$BACKUP_DIR/logs BACKUP_KEEP_DAY=7 MYSQL_CONF=/etc/my.cnf INNOBACKUPEX=/usr/local/xtrabackup/bin/innobackupex MYSQL_CMD=/usr/bin/mysql MYSQL_CONNECT="--host=****--user=**** --password=**** --port=3306" MAIL_FROM="root@`hostname`" MAIL_TO="linge@hz-health.cn" MAIL_TO_ERROR="linge@hz-health.cn" error() { echo "$1" 1>&2 exit 1 } #before the backup, check the system enviroment setting and mysql status and so on mysql_backup_check() { if [ ! -d $FULLBACKUP_PATH ];then mkdir -p $FULLBACKUP_PATH fi if [ ! -d $INCRBACKUP_PATH ];then mkdir -p $INCRBACKUP_PATH fi if [ ! -d $BACKUP_LOG_PATH ];then mkdir -p $BACKUP_LOG_PATH fi if [ ! -x $INNOBACKUPEX ];then error "$INNOBACKUPEX did not exists" fi if [ ! -x $MYSQL_CMD ];then error "mysql client did not exists!" fi mysql_status=`netstat -nl | awk 'NR>2{if ($4 ~ /.*:3306/) {print "Yes";exit 0}}'` if [ "$mysql_status" != "Yes" ];then error "MySQL did not start. please check it" fi if ! `echo 'exit' | $MYSQL_CMD -s $MYSQL_CONNECT` ; then error "please check the user and password is correct!" fi } xtra_backup() { if [ $# = 2 ];then $INNOBACKUPEX --defaults-file=$MYSQL_CONF $MYSQL_CONNECT --compress --compress-threads=8 --databases="yjk yjk_mall_2_0" --no-timestamp $1/full_$BACKUP_DATE>$2 2>&1 elif [ $# = 3 ];then $INNOBACKUPEX --defaults-file=$MYSQL_CONF $MYSQL_CONNECT --compress --compress-threads=8 --databases="yjk yjk_mall_2_0" --no-timestamp --incremental $1/incr_$BACKUP_DATE --incremental-basedir $2 >$3 2>&1 else error "the parameter is not correct" fi } lastest_fullback_dir() { if [ -d $1 ]; then path=`ls -t $1 |head -n 1` if [ $path ]; then echo $path else error "lastest_fullback_dir(): 目录为空,没有最新目录" fi else error "lastest_fullback_dir(): 目录不存在或者不是目录" fi } mysql_full_backup() { xtra_backup $FULLBACKUP_PATH $BACKUP_LOG_PATH/full_$BACKUP_DATE.log if [ "${PIPESTATUS[0]}" -ne 0 ]; then (echo "Subject: MySQL Backup Failed: MySQL Backup failed on `hostname`"; cat ${BACKUP_LOG_PATH}/full_${BACKUP_DATE}.log; ) | /usr/sbin/sendmail -O NoRecipientAction=add-to -f${MAIL_FROM} ${MAIL_TO} else (echo "Subject: MySQL Backup Success: MySQL Backup Succeed on `hostname`"; cat ${BACKUP_LOG_PATH}/full_${BACKUP_DATE}.log; ) | /usr/sbin/sendmail -O NoRecipientAction=add-to -f${MAIL_FROM} ${MAIL_TO} fi #cd $FULLBACKUP_PATH #ls -t | tail -n +$BACKUP_KEEP_DAY | xargs rm -rf find ${FULLBACKUP_PATH} -mtime +$BACKUP_KEEP_DAY -name "*" -exec rm -rf {} \; } mysql_incr_backup() { LATEST_FULL_BACKUP=`find $FULLBACKUP_PATH -mindepth 1 -maxdepth 1 -type d -printf "%P\n" | sort -nr | head -1` LATEST_FULL_BACKUP_TIME=`stat -c %Y $FULLBACKUP_PATH/$LATEST_FULL_BACKUP` if [ $LATEST_FULL_BACKUP ];then #不是第一次增量备份,以最新的增量备份目录为base_dir xtra_backup $INCRBACKUP_PATH $FULLBACKUP_PATH/`lastest_fullback_dir $FULLBACKUP_PATH` $BACKUP_LOG_PATH/incr_$BACKUP_DATE.log else # the first incremental backup need do full backup first xtra_backup $FULLBACKUP_PATH $BACKUP_LOG_PATH/full_$BACKUP_DATE.log if [ "${PIPESTATUS[0]}" -ne 0 ]; then (echo "Subject: MySQL Backup Failed: MySQL Backup failed on `hostname`"; cat ${BACKUP_LOG_PATH}/incr_${BACKUP_DATE}.log; ) | /usr/sbin/sendmail -O NoRecipientAction=add-to -f${MAIL_FROM} ${MAIL_TO} fi fi #cd ${INCRBACKUP_PATH} #ls -t | tail -n +$BACKUP_KEEP_DAY | xargs rm -rf find ${INCRBACKUP_PATH} -mtime +$BACKUP_KEEP_DAY -name "*" -exec rm -rf {} \; } case $1 in full) mysql_backup_check mysql_full_backup ;; incr) mysql_backup_check mysql_incr_backup ;; *) echo "full backup" echo "incr backup" ;; esac |
相关文章推荐
- Xtrabackup安装及使用(mysql备份工具)
- xtrabackup一键自动化备份脚本 V2 版【原创】
- xtrabackup一键自动化备份脚本 【原创】
- Xtrabackup安装及使用
- mysql备份工具innobackupex,xtrabackup-2.1安装与测试
- percona-xtrabackup-2.1.7的安装、使用、排错
- 使用shell脚本自动化安装Nagios服务器端和客户端
- Xtrabackup安装及使用
- xtrabackup 备份mysql数据库一 : 安装,准备环境
- MySQL中使用innobackupex、xtrabackup进行大数据的备份和还原教程
- Xtrabackup使用指南 InnoDB数据备份工具
- InnoDB数据备份工具--Xtrabackup安装
- Windows 7 - 使用批处理脚本模拟Windows XP中的msbackup备份程序
- 实战:XtraBackup for mysql 5.6备份脚本
- XtraBackup - 开源MySQL在线热备份工具安装使用
- Xtrabackup安装及使用
- mysql备份工具innobackupex,xtrabackup-2.1安装,参数详解
- Xtrabackup使用指南 InnoDB数据备份工具
- 构建cacti监控平台, LAMP使用脚本自动化编译安装 推荐
- xtrabackup 备份mysql数据库一 : 安装,准备环境