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.分区表含义 分区表定义指根据可以设置为任意大小的规则,跨文件系统分配单个表的多个部分.实际上,表的不同部分在不同的位置被存储为单独的表.用户所选择的.实现 ...
随机推荐
- MongoDB快速入门(六)- 更新文档
更新文档 MongoDB的update()和save()方法用于更新文档到一个集合. update()方法将现有的文档中的值更新,而save()方法使用传递到save()方法的文档替换现有的文档. M ...
- SpringBoot2.0之整合Kafka
maven依赖: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www. ...
- Spark及其生态系统简介总结
Spark拥有DAG执行引擎,支持在内存中对数据进行迭代计算 Spark不仅支持Scala编写应用程序,而且支持Java和Python等语言进行编写,特别是Scala是一种高效.可拓展的语言,能够用简 ...
- springcloud-Api网关服务Zuul
springcloud项目例子:链接:https://pan.baidu.com/s/1O1PKrdvrq5c8sQUb7dQ5Pg 密码:ynir 1.由来: 如果我的微服务中有很多个独立服务都要对 ...
- python爬虫-韩寒新浪博客博文
博客地址:http://blog.sina.com.cn/s/articlelist_1191258123_0_1.html 爬第一页博文 #-*-coding:utf--*- import re # ...
- watcher
https://wiki.openstack.org/wiki/Watcher Watcher为OS提供资源优化.主要是通过虚拟机迁移来提高整个数据中心的运营效率,降低TCO. 功能特点: 通过虚拟机 ...
- java对象流(二)
对象流,可以将java中的对象转为字节进行输出.将对象写入文件时.文件输出流是将字节写入到文件中. 对象流是将给定的对象转化为一组字节.writeObject()方法就是将对象转为字节. 对象流,读的 ...
- http post上传文件
php.ini中关于文件上传的配置指令: file_uploads = On //是否接受上传的文件 upload_tmp_dir //临时文件保持目录 ...
- SQL Server集成服务最佳实践:语句优化
SQL Server集成服务(SQL Server Integration Services,SSIS)在其前辈DTS(Data Transformation Services,数据转换服务) ...
- 解决:python命令行运行出错 ImportError: No module named ...
一. 发现问题 今天在cmd命令行运行一个py文件,本来在pycharm中运行好好的文件,在命令行却报错了,直接提示我:ImportError: No module named 'homeworks' ...