该脚本用于备份和恢复MySQL数据库。

总结xtrabackup备份的两个坑:

1、在恢复数据的过程中,如果中途出错,则数据将会被破坏,后续很难再恢复。

2、在恢复过程中,如果版本过低,在准备全量数据的时候会卡在等待那里,无法进行下一步。

如我用xtrabackup2.4.4 备份的,用2.4.5恢复就会卡在前面那里。听说这是个bug。后来改成了2.4.13的时候时间会快很多。

#!/bin/bash
#author: chentufeng
#create time: 2019 05 07
#mail:15219234405@139.com
#version: 1.0
incre_time=`date +%Y%m%d`
current_month=`date +%Y%m`
full_amount_day=`date +%d`
three_month_ago=`date -d "-3 month" +%Y%m`
#mysql配置文件
mysql_cfg="/etc/my.cnf"
#定义备份目录,就算不创建,备份的时候也会自动创建
mysql_bak="/data/mysql/mysql_bak"
bak_month_dir="${mysql_bak}/${current_month}"
#定义mysql登录信息
mysql_pwd="123456"
mysql_user="root"
#全量备份目录
full_amount_dir="${mysql_bak}/${current_month}/full_amount"
#增量备份目录
incre_dir="${mysql_bak}/${current_month}/incre${incre_time}"
#判断目录是否存在,不存在则创建
[ ! -d ${bak_month_dir} ] && mkdir -p ${mysql_bak}/${current_month}
#每月1号进行全量备份
if [ ${full_amount_day} -eq 01 ];then
innobackupex --defaults-file=${mysql_cfg} --user="${mysql_user}" --password=${mysql_pwd} --parallel=8 --slave-info --no-timestamp ${full_amount_dir}
if [ $? -eq 0 ];then
echo "Full amount backup sucessful!"
#删除三个月前的备份文件
rm -rf ${mysql_bak}/${three_month_ago}
else
echo "Full amount backup failure!!!!!!!!!!!"
fi
#因数据量不算大,每天在月初全备的基础上做增量备份,若有问题只需要恢复一次
else
innobackupex --defaults-file=${mysql_cfg} --user="${mysql_user}" --password=${mysql_pwd} --no-timestamp --incremental-basedir=${full_amount_dir} --incremental ${incre_dir}
[ $? -eq 0 ] && echo "Incremental backup sucessful!" || echo "Incremental backup failure!!!!!!!!!!!"
fi :<<wendang
【数据恢复说明】
数据恢复步骤:(注意:步骤只适合该备份脚本的恢复)
1、创建data目录,根据my.cnf配置来创
2、prepare(准备):
1)全量备份准备
#innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only 全量备份目录(full_amount_dir) # 指定全备目录,--redo-only 对已提交的事务进行前滚,仅最后一次全量恢复不需要添加该参数
2)恢复增量备份数据准备(注意:必须指定全量备份的目录,否则只能恢复全量备份的数据)
#innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only 全量备份目录 --incremental-dir=最后一次增量备份目录(incre_dir)
# --incremental-dir 指定最后一次增备目录 ( 绝对路径 ) 3、再次prepare(准备)全量备份
# innobackupex --defaults-file=/etc/my.cnf --apply-log 全量备份目录(full_amount_dir)
#注意:不需要加--redo-only参数 4、最后一步,复制整合后的全备文件,位置为 my.cnf 中 datadir 指定路径
#innobackupex --defaults-file=/etc/my.cnf --copy-back 全量备份目录(full_amount_dir)
5、给data目录赋予mysql权限:
#chown -R mysql.mysql /var/lib/mysql(查看my.cnf确定data目录路劲) 6、启动mysql
#/etc/init.d/mysql.server start
wendang

xtrabackup备份和恢复数据脚本的更多相关文章

  1. MySql在生产环境中是用mysqldump还是xtrabackup备份和恢复数据

    如题,究竟该使用mysqldump还是xtrabackup,要说用,两个都能备份,都支持热备,但是生产环境我们要考虑的是效率,就是不管备份还是恢复,都要快,要稳定. 之前我在维护mysql数据库的时候 ...

  2. MySQL 备份和恢复数据

    备份指定数据库的全部表或指定表 mysqldump -u user -h localhost -p [password] db_name[ tbl_name[,tbl_name.......]]> ...

  3. mysql导入导出数据,备份,恢复数据

    MYSQL 实现导入数据 .备份和恢复数据库 1.使用msql命令导入数据 # mysql -uroot -p 需要选择一个数据库 < runoob.sql #mysql -u username ...

  4. mysql学习(4)-mysqldump备份和恢复数据

    背景 最近在公司做数据迁移方面的工作,使用mysql数据库在测试环境模拟数据迁移,在迁移测试的过程中需要做数据备份和恢复 mysql数据备份和恢复比较简单,可以选择mysqldump工具,这里简单提一 ...

  5. postgresql批量备份和恢复数据表

    备份数据库:pg_dump -h localhost -U root demo02 > /home/arno/dumps/demo02.bak 恢复数据库:psql -h localhost - ...

  6. 使用mongodump及mongorestore备份及恢复数据

    mongodump及mongorestore是用于备份和恢复mongodb数据库的两个命令,位于mongodb安装目录的bin文件夹下. mongodump导出的备份文件为二进制格式,每一个文档的对应 ...

  7. PostgreSQL备份和恢复数据表

    备份数据表: pg_dump -U user_name db_name -t table_name -f /tmp/backup_file.suffix 恢复数据表: 方法1: 登录数据库:\i /t ...

  8. PostgreSQL数据库常用脚本-初始化、备份、恢复推荐脚本

    公司最近开始逐步推广使用PostgreSQL,为方便开发人员和实施人员操作,特整理数据库初始化.备份.恢复的推荐脚本如下: 1. 连接数据库 psql -h 127.0.0.1 -p 1921 -U ...

  9. xtrbackup备份,及恢复数据

    模拟定时任务周日备份数据,周一数据变化,周一crontab定时任务增量备份,周二数据变化,周二crontabl增量备份,然后有人删库,我们进行恢复数据 模拟crontab 里的定时任务周日全备 [ro ...

随机推荐

  1. Python时间处理,datetime中的strftime/strptime+pandas.DataFrame.pivot_table(像groupby之类 的操作)

    python中datetime模块非常好用,提供了日期格式和字符串格式相互转化的函数strftime/strptime 1.由日期格式转化为字符串格式的函数为: datetime.datetime.s ...

  2. Haproxy之负载均衡功能、基于cookie的session持久、haproxy自带的健康页面及其动静分离的实现

    实验前提: 1.本次实验是在Centos 7.4(64bit)系统上完成的.2.实验前确保每台服务器时间同步3.本次实验有3台主机,其中haproxy作为反向代理地址为192.168.31.43,后面 ...

  3. springcloud学习03-spring cloud eureka(下)

    7.配置服务提供者(生产者) 7.1.配置resources/application.yml. 值eureka.client.service-url(或serviceUrl).defaultZone是 ...

  4. Rsync未授权访问

    1.漏洞名称 Rsync 未授权访问漏洞 2.漏洞原理 rsync是Linux下一款数据备份工具,支持通过rsync协议.ssh协议进行远程文件传输. 其中rsync协议默认监听873端口,如果目标开 ...

  5. Django1.11 添加markdown语法支持

    pip install markdown 在view.py 的视图界面:导入,圈起来的那两个包 对post进行处理, models.py 详情如下  测试,效果如图

  6. 生产出现oom问题,怎么排查?

    生产出现oom问题,怎么排查?   1.使用dmesg命令查看系统日志 dmesg |grep -E 'kill|oom|out of memory',可以查看操作系统启动后的系统日志,这里就是查看跟 ...

  7. 深入浅出SpringBoot

  8. 转载:TCP协议如何保证可靠传输

    转载至:https://www.cnblogs.com/xiaokang01/p/10033267.html TCP协议如何保证可靠传输 概述: TCP协议保证数据传输可靠性的方式主要有: (校 序  ...

  9. DevEco Device Tool 3.0 Release 新版本发布,支持多人共享开发

    DevEco Device Tool 是面向智能设备开发者提供的一站式集成开发环境,支持 HarmonyOS Connect 的组件按需定制,支持代码编辑.编译.烧录和调试.性能监测等功能,支持 C/ ...

  10. C++ | 虚表的写入时机

    虚表 在C++的多态机制中,使用了 virtual 关键字声明的函数称之为虚函数,每个有虚函数的类或者虚继承的子类,编译器都会为它生成一个虚拟函数表(简称:虚表,以下用 vftable表示),表中的每 ...