该脚本用于备份和恢复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. Kubernetes系列(三) Deployment

    作者: LemonNan 原文地址: https://juejin.im/post/6865672466939150349/ Kubernetes 系列 Kubernetes系列(一) Pod Kub ...

  2. SQL基础语法_周志城

    一:建库建表语法,字段数据类型 1:建库建表语法 create  (创建,关键字) database (数据库,关键字) IF NOT EXISTS  作用:如果需要创建的库已存在,将不会创建 DEF ...

  3. jdbc创建数据库的连接

    package com.gylhaut.db; import java.sql.Connection;import java.sql.DriverManager;import java.sql.Res ...

  4. 魅族mx3手机 固件升级方法

    1.正常手机刷机,升级固件的方法 我今天3.5升4.2.8都提示固件损坏 后来我找客服 一定要用电脑下3.8固件 然后按住开机和音量+ 进入刷机模式 然后连接电脑 电脑会给你一个900mb的磁盘 拉进 ...

  5. unity 加载网络图片

    摘要:利用Http加载网络图片. 解决思路: 1.直接用unity 自带的www加载,在高版本www已经过时了. 2.本文直接使用万能的文件流加载. (1)使用System.Net.HttpWebRe ...

  6. 分布式锁用Redis与Zookeeper的使用

    为什么用分布式锁?   在讨论这个问题之前,我们先来看一个业务场景: 系统A是一个电商系统,目前是一台机器部署,系统中有一个用户下订单的接口,但是用户下订单之前一定要去检查一下库存,确保库存足够了才会 ...

  7. Nginx 陷阱和常见错误

    Nginx 陷阱和常见错误 翻译自:https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/ 警告: 请 ...

  8. java LinkedList (详解)

    Java 链表(LinkedList) 一.链表简介 1.链表 (Linked List) 是一种常见的基础数据结构,是一种线性表,但是链表不会按线性表的顺序存储数据,而是每个节点里存到下一个节点的地 ...

  9. 解释AOP模块 ?

    AOP模块用于发给我们的Spring应用做面向切面的开发, 很多支持由AOP联盟提供,这样就确保了Spring和其他AOP框架的共通性.这个模块将元数据编程引入Spring.

  10. 深入理解Java虚拟机-走进Java

    一.Java技术体系 从广义上讲, Clojure. JRuby. Groovy等运行于Java虚拟机上的语言及其相关的程序都属于Java技术体系中的一员. 如果仅从传统意义上来看, Sun官方所定义 ...