xtrabackup备份和恢复数据脚本
该脚本用于备份和恢复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备份和恢复数据脚本的更多相关文章
- MySql在生产环境中是用mysqldump还是xtrabackup备份和恢复数据
如题,究竟该使用mysqldump还是xtrabackup,要说用,两个都能备份,都支持热备,但是生产环境我们要考虑的是效率,就是不管备份还是恢复,都要快,要稳定. 之前我在维护mysql数据库的时候 ...
- MySQL 备份和恢复数据
备份指定数据库的全部表或指定表 mysqldump -u user -h localhost -p [password] db_name[ tbl_name[,tbl_name.......]]> ...
- mysql导入导出数据,备份,恢复数据
MYSQL 实现导入数据 .备份和恢复数据库 1.使用msql命令导入数据 # mysql -uroot -p 需要选择一个数据库 < runoob.sql #mysql -u username ...
- mysql学习(4)-mysqldump备份和恢复数据
背景 最近在公司做数据迁移方面的工作,使用mysql数据库在测试环境模拟数据迁移,在迁移测试的过程中需要做数据备份和恢复 mysql数据备份和恢复比较简单,可以选择mysqldump工具,这里简单提一 ...
- postgresql批量备份和恢复数据表
备份数据库:pg_dump -h localhost -U root demo02 > /home/arno/dumps/demo02.bak 恢复数据库:psql -h localhost - ...
- 使用mongodump及mongorestore备份及恢复数据
mongodump及mongorestore是用于备份和恢复mongodb数据库的两个命令,位于mongodb安装目录的bin文件夹下. mongodump导出的备份文件为二进制格式,每一个文档的对应 ...
- PostgreSQL备份和恢复数据表
备份数据表: pg_dump -U user_name db_name -t table_name -f /tmp/backup_file.suffix 恢复数据表: 方法1: 登录数据库:\i /t ...
- PostgreSQL数据库常用脚本-初始化、备份、恢复推荐脚本
公司最近开始逐步推广使用PostgreSQL,为方便开发人员和实施人员操作,特整理数据库初始化.备份.恢复的推荐脚本如下: 1. 连接数据库 psql -h 127.0.0.1 -p 1921 -U ...
- xtrbackup备份,及恢复数据
模拟定时任务周日备份数据,周一数据变化,周一crontab定时任务增量备份,周二数据变化,周二crontabl增量备份,然后有人删库,我们进行恢复数据 模拟crontab 里的定时任务周日全备 [ro ...
随机推荐
- java笔记:00 数据类型
- 『德不孤』Pytest框架 — 15、Pytest参数化
目录 1.Pytest参数化说明 2.Pytest参数化方式 3.parametrize装饰器参数说明 4.Pytest参数化(单个参数) 5.Pytest参数化(多个参数) 6.ids参数说明 1. ...
- python3生成10个成绩列表,求其平均分
import random alist = [random.randint(45,101) for _ in range(10)] #在[45.101)之间生成10个随机数 print(alist) ...
- jdr挖的大坑
计数问题小结 很多计数问题在直接拆分计算贡献时都会出现不容易直接表示的情况.在解决这些问题时,往往需要解决一些子问题方案数的递推, 再套用组合数或者分块计算来降低难度或时间复杂度,这里给出几种递推方法 ...
- 【ASP.NET Core】MVC模型绑定:非规范正文内容的处理
本篇老周就和老伙伴们分享一下,对于客户端提交的不规范 Body 如何做模型绑定.不必多说,这种情况下,只能自定义 ModelBinder 了.而且最佳方案是不要注册为全局 Binder--毕竟这种特殊 ...
- python+pytest接口自动化(12)-自动化用例编写思路 (使用pytest编写一个测试脚本)
经过之前的学习铺垫,我们尝试着利用pytest框架编写一条接口自动化测试用例,来厘清接口自动化用例编写的思路. 我们在百度搜索天气查询,会出现如下图所示结果: 接下来,我们以该天气查询接口为例,编写接 ...
- 半吊子菜鸟学Web开发6 -- Vscode开发环境配置
1vscode上手一周不到,终于弄出点门路,终于弄清楚了点vscode的设置是什么样子的了....哭 2就我这两天的使用来看,一般vscode默认只让打开一个文件夹,然后在你打开的文件夹里面自动生成 ...
- java-設計模式-單例模式
單例模式 一种创建型设计模式, 让你能够保证一个类只有一个实例, 并提供一个访问该实例的全局节点. 一个类只有一个实例,且该类能自行创建这个实例的一种模式. 簡單的對比就是: 例如,Windows 中 ...
- screen--后台不挂断运行
方法一:1.进入项目目录下,运行下面程序:nohup python manage.py runserver 0.0.0.0:5008 &nohup(no hang up)用途:不挂断的运行命令 ...
- input 输入框只能输入数字,一行代码解决,兼容谷歌 火狐
<input id="mobile" name="mobile" type="text" onkeyup="this.val ...