MySQL mysqldump与innobackupex 组合备份
此脚本,在01点进行一次逻辑全备份,03点进行一次物理全备份,中午12点进行一次增量物理备份
#! /bin/bash
#05 01,03,12 * * * mysql /data/mysqldata/scripts/mysql_backup_dump_xtra.sh >> /data/mysql/backup/log/mysql_back2.log 2>&1
############################################################
# Define the variables the script used for executing.
#mysql backup by hongquan on 2017
#day=`date +%u`
curHour=`date +%H`
curDate=`date +'%Y%m%d'`
backupDir=/data/mysqldata/backup
defaultFile=/data/mysqldata/backup
mysqlHost=127.0.0.1
port=3306
logicuser=**
logicpass=**
logicalBackupDir=/data/mysqldata/backup/logical
fullBackupDir=/data/mysqldata/backup/full
incBackupDir=/data/mysqldata/backup/inc
logfile=/data/mysqldata/backup/mysql_backup.log
sockfile=/data/mysqldata/3306/mysql.sock full_inbkpex_day=/data/mysqldata/backup/full/full_ipx$curDate$curHour
inc_inbkpex=/data/mysqldata/backup/inc/inc_ipx$curDate$curHour MYSQL_PATH=/usr/local/mysql/bin
MYSQL_CMD="${MYSQL_PATH}/mysql -u${logicuser} -p${logicpass} -h${mysqlHost} -S /data/mysqldata/${HOST_PORT}/mysql.sock"
MYSQL_DUMP="${MYSQL_PATH}/mysqldump -u${logicuser} -p${logicpass} -h${mysqlHost} -P${HOST_PORT} -R -S \
${sockfile} --single-transaction --master-data=2 --default-character-set=utf8 --set-gtid-purged=OFF -q " case ${curHour} in
01)
type=logical
;;
03)
type=full
;;
12)
type=inc
;;
"*")
exit
esac echo "NOW is : Backup type=$type" >> ${logfile} if [ ! -d "${backupDir}" ]; then
mkdir -p "${backupDir}"
echo -e "===${backupDir} does not exsits,created them!" >> ${logfile}
fi if [ ! -d "${logicalBackupDir}" ]; then
mkdir -p "${logicalBackupDir}"
echo -e "===${logicalBackupDir} does not exsits,created them!" >> ${logfile}
fi if [ ! -d "${fullBackupDir}" ]; then
mkdir -p "${fullBackupDir}"
echo -e "===${fullBackupDir} does not exsits,created them!" >> ${logfile}
fi if [ ! -d "${incBackupDir}" ]; then
mkdir -p "${incBackupDir}"
echo -e "===${incBackupDir} does not exsits,created them!" >> ${logfile}
fi extra_lsndir=${backupDir}
ori_conf_file=/data/mysqldata/${port}/my.cnf
new_conf_file=${backupDir}/my_${port}_`date +%Y%m%d%H%M%S`.cnf echo "backup start" `date` >> ${logfile}
echo -e "===first cp my.cnf file to backup directory ===" >> ${logfile}
/bin/cp ${ori_conf_file} ${new_conf_file} echo >> ${logfile} if [[ "${type}" = "logical" ]]; then
# -------------------------- logical backup with mysqldump --------------------------
echo -e "mysqldumpbk per db list= ${list} " >> ${logfile}
for dbs in `${MYSQL_CMD} 2>/dev/null -e "show databases" | sed '1d' | egrep -v "information_schema|performance_schema|sys"`
do
echo -e "echo $dbs is appoint ; " >> ${logfile}
${MYSQL_DUMP} ${dbs} 2>/dev/null | gzip > ${logicalBackupDir}/${dbs}_${curDate}.sql.gz
echo -e " **** database :${dbs} backup stop_time :`date +%F' '%T' '%w` **** \n">> ${logfile}
echo -e "**** backup file size:`du -sh ${logicalBackupDir}/`**** \n" >> ${logfile}
done
elif [[ "${type}" = "full" ]]; then
# -------------------------- full backup with xtrabackup --------------------------
cd ${backupDir}
#rm -rf /data/mysql/backup/full/
if [ ! -d "${full_inbkpex_day}" ]; then
mkdir -p "${full_inbkpex_day}"
echo -e "===${full_inbkpex_day} does not exsits,created them!" >> ${logfile}
fi
#tar -zcvf $tar_full.tar.gz ${full_inbkpex_day}
cd ${full_inbkpex_day} /usr/bin/innobackupex --defaults-file=${ori_conf_file} --user=${logicuser} --password=${logicpass} \
--host=${mysqlHost} --port=${port} --no-timestamp --extra-lsndir=${extra_lsndir} --stream=tar ${backupDir} \
2>/tmp/full_ipx$curDate$curHour.log | gzip 1>${full_inbkpex_day}/`date +%Y%m%d%H%M%S`.tar.gz echo -e "mysql full backup full_ipx$curDate$curHour" >> ${logfile} elif [[ "${type}" = "inc" ]]; then
# -------------------------- incremental backup with xtrabackup --------------------------
if [ ! -d "${inc_inbkpex}" ]; then
mkdir -p "${inc_inbkpex}"
echo -e "===${inc_inbkpex} does not exsits,created them!" >> ${logfile}
fi
/usr/bin/innobackupex --defaults-file=${ori_conf_file} --user=${logicuser} --password=${logicpass} \
--host=${mysqlHost} --port=${port} --no-timestamp --extra-lsndir=${extra_lsndir} --incremental \
--incremental-basedir=${backupDir} ${inc_inbkpex} 2>/tmp/inc_ipx$curDate$curHour.log
echo -e "mysql inc backup inc_ipx$curDate$curHour" >> ${logfile}
else
echo -e "wrong backup type!" >> ${logfile}
exit 1
fi #echo -e "----find expired backup and delete those files ----">> ${logfile}
#for tfile in $(/usr/bin/find ${backupDir}/ -mtime +7)
#do
# if [ -d $tfile ] ; then
# rmdir $tfile
# elif [ -f $tfile ]; then
# #rm -f $tfile
# echo -e "---not backupDir found ----">> ${logfile}
# fi
# echo -e "----delete file:$tfile ----">> ${logfile}
#done echo -e "\n=== backup dened at `date +%F' '%T' '%w`===\n" >> ${logfile}
MySQL mysqldump与innobackupex 组合备份的更多相关文章
- 配合crond服务实现自定义周期备份MySQL数据库(使用innobackupex进行备份)
备份 新建一个脚本/root/backup.py,内容如下: #!/usr/bin/env python# -*- coding: utf-8 -*- ''' 脚本作者:昨夜星辰 脚本作用:配合cro ...
- c# Process cmd 执行完回调 Proc_OutputDataReceived mysql mysqldump mysql source备份还原数据
c# Process 执行完回调 Proc_OutputDataReceived mysql mysqldump mysql source备份还原数据 直接贴代码 前提:mysql5.7 vs2017 ...
- 使用mysql自带工具mysqldump进行全库备份以及source命令恢复数据库
mysql数据库提供了一个很好用的工具mysqldump用以备份数据库,下面将使用mysqldump命令进行备份所有数据库以及指定数据库 一.mysqldump一次性备份所有数据库数据 /usr/lo ...
- [MySQL] innobackupex在线备份及恢复(全量和增量)
安装percona-xtrabackup 方法1: percona-xtrabackup-2.1.9-744-Linux-x86_64.tar.gz(D:\share\src\linux-mysql) ...
- mysql 针对单张表的备份与还原
A.MySQL 备份工具xtrabackup 的安装 . percona 官方xtrabackup 的二进制版本:二进制版本解压就能用了. . 解压xtrabackup & 创建连接 -Lin ...
- mysql用户授权及数据备份恢复
用户授权与权限撤销 修改数据库管理员从本机登陆的密码测试: mysqladmin -hlocalhost -uroot -p password "新密码" Enter passwo ...
- 【转】mysqldump与innobackupex知多少
作者:罗小波 [目录] 1. 先看mysqldump 1.1 mysqldump备份过程解读 1.2 mysqldump备份过程中的关键步骤 1.2.1 FLUSH TABLES和FLUSH TABL ...
- mysqldump与innobackupex备份过程你知多少
mysqldump与innobackupex备份过程你知多少 测试库表创建(这里在同一个库下创建两个表,一个表为innodb引擎,一个为myisam引擎) root@localhost : (none ...
- MySQL 分区表原理及数据备份转移实战
MySQL 分区表原理及数据备份转移实战 1.分区表含义 分区表定义指根据可以设置为任意大小的规则,跨文件系统分配单个表的多个部分.实际上,表的不同部分在不同的位置被存储为单独的表.用户所选择的.实现 ...
随机推荐
- Java I/O 小结
主要内容: 一.输入流基类:InputStream 和 OutputStream(字节流). Reader 和 Writer(字符流) 二.文件字节流:FileInputStream和FileOutp ...
- keepalived检测脚本及注意事项
keepalived检测脚本的作用及注意事项: 默认每隔3秒钟执行一次检测脚本,检查nginx服务是否启动,如果没启动就把nginx服务启动起来,如果启动不成功,就把keepalived服务down掉 ...
- mapreduce实现学生平均成绩
思路: 首先从文本读入一行数据,按空格对字符串进行切割,切割后包含学生姓名和某一科的成绩,map输出key->学生姓名 value->某一个成绩 然后在reduce里面对成绩进行遍历 ...
- Http协议与生命周期
一.Http知识: 1.基于socket 浏览器(格式一) web服务器(格式一) MYSQL客户端(格式二) MYSQL服务端(格式三) ...
- Mirantis对OpenStack的性能测试:高并发创建75000台虚拟机
硅谷创业公司Mirantis不久前进行了一项基准测试,测试在OpenStack Havana版本上创建75000台虚拟机的性能数据.就启动时间和成功率而言,当应用250个并发部署75000台虚拟机是最 ...
- MySQL复制:主从和双主配置
对比Replication和Cluster 应用层中间件的负载均衡 异步的复制过程 MySQL官方使用Replication场景
- python 各种装饰器示例(python3)
参考网址: Python中的各种装饰器详解_python_脚本之家http://www.jb51.net/article/63892.htm 一.函数式装饰器: 1.装饰器无参数,被装饰对象无参数 d ...
- sgu176 有源汇上下界最小流
题意:有一堆点和边,1起点,n终点,某些边有可能必须满流,要求满足条件的最小流 解法:按原图建边,满流的即上下界都是容量,但是这样按有源汇上下界可行流求出来的可能不是最小流,那么我们需要开始建边的时候 ...
- ural 2017 Best of a bad lot
2017. Best of a bad lot Time limit: 1.0 secondMemory limit: 64 MB A cruise liner hasn’t moved away f ...
- 51nod 1131 数列
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1131 1131 覆盖数字的数量 基准时间限制:1 秒 空间限制:1310 ...