xtrabackup备份数据库

介绍

一般来说,在生产部署服务的时候,需要考虑,生产数据库需要备份,在主从之外,恢复数据的话,需要可以手动配置的机制,防止出现极端情况,主从全崩。

本文主要参考:https://www.cnblogs.com/linuxk/p/9372990.html这位大佬的操作记录,根据自己实际操作的情况,对实际命令做了一些补充。具体参考本文的话,可以两个博客对照着看。

Xtrabackup中主要包含两个工具:
xtrabackup:是用于热备innodb,xtradb表中数据的工具,不能备份其他类型的表,也不能备份数据表结构;
innobackupex:是将xtrabackup进行封装的perl脚本,提供了备份myisam表的能力(同时也可以备份innodb,xtradb)。
常用选项:
–host 指定主机
–user 指定用户名
–password 指定密码
–port 指定端口
–databases 指定数据库
–incremental 创建增量备份
–incremental-basedir 指定包含完全备份的目录
–incremental-dir 指定包含增量备份的目录
–apply-log 对备份进行预处理操作
一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。
–redo-only 不回滚未提交事务
–copy-back 恢复备份目录

安装

主从都要安装

下载在最后的参考链接部分

安装xtrabackup:

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
yum install -y percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
rpm -qa |grep xtrabackup

安装包复制:

scp -r root@172.30.11.99:/mha/xtrabackup/ /mha/

全量备份

主库全量备份:
新建备份文件夹: BACKUP-DIR 目录自定义

innobackupex --defaults-file=/mha/mysql/install/public/mysql/my.cnf --user=root --password='XXXX' --host=172.30.11.36 --port=3308 --socket=/mha/mysql/install/public/mysql/mysql.sock /mha/xtrabackup/BACKUP-DIR/

从库停止数据库
sh stop.sh
(用户可用mysql自带的命令实现停止数据库命令)

从库复制主库的备份数据

scp -r root@172.30.11.36:/mha/xtrabackup/BACKUP-DIR/ /mha/xtrabackup/

会得到全量备份目录:
2022-02-17_15-28-40

从库上,执行,合并数据,使数据文件处于一致性的状态

innobackupex --apply-log /mha/xtrabackup/BACKUP-DIR/2022-02-17_15-28-40/

从库 在slave上删除原有的数据

rm -rf /mha/mysql/install/public/mysql/data/

其实就是删除data这个文件夹

配置my.cnf的数据目录路径,否则会报错,要和master一致
所以,一般主从复制架构,建议主从配置文件夹一毛一样
datadir=/mha/mysql/install/public/mysql/data

在slave上数据恢复

innobackupex --defaults-file=/mha/mysql/install/public/mysql/my.cnf --user=slave --copy-back /mha/xtrabackup/BACKUP-DIR/2022-02-17_15-28-40/

权限问题
slave上查看数据目录,可以看到数据已经恢复,但是属主会有问题,需要进行修改,所以一般使用mysql的运行用户进行恢复,否则需要进行修改属主和属组信息
修改属主属组—这一步我没做,看服务器情况

chown -R mysql.mysql /mha/mysql/install/public/mysql/data/
chown -R mysql /mha/mysql/install/public/mysql/data/

登录数据库
cd /mha/mysql/install/public/mysql/bin
./mysql -h 127.0.0.1 -P 3308 -u root -pXXXXX

数据权限恢复

----------------------------如果恢复的数据没有权限,可以用如下方式恢复权限-----------------------------

使用工具:pt-show-grants,这个是在percona-toolkit工具集里面,笔者下载rpm,发现无法安装,于是下载了gz格式,解压后,发现bin目录里面就就有这个,可以直接./使用。如下:

xtrabackup

pt-show-grants的功能是格式化打印输出MySQL上的赋权,以便你可以有效地复制、比较以及版本控制。
下载在最后的参考链接部分。

下载工具集:
wget percona.com/get/percona-toolkit.gz

percona-toolkit
tar -xzvf percona-toolkit.tar.gz

在这里:/mha/xtrabackup/percona-toolkit-3.3.1/bin

打印主库权限:

cd /mha/xtrabackup/percona-toolkit-3.3.1/bin
./pt-show-grants --host=172.30.11.36 --port=3308 --user=root --password='XXXX' --socket=/mha/mysql/install/public/mysql/mysql.sock --charset=utf8

复制打印的权限,在从库执行以root用户:

具体权限就不贴出来了,是一批sql语句,可以直接运行的那种。注意查看权限是否对。

增量备份

使用innobackupex进行增量备份,每个InnoDB的页面都会包含一个LSN信息,每当相关的数据发生改变,相关的页面的LSN就会自动增长。这正是InnoDB表可以进行增量备份的基础,即innobackupex通过备份上次完全备份之后发生改变的页面来实现。在进行增量备份时,首先要进行一次全量备份,第一次增量备份是基于全备的,之后的增量备份都是基于上一次的增量备份的,以此类推。
需要注意的是,增量备份仅能应用于InnoDB或XtraDB表,对于MyISAM表而言,执行增量备份时其实进行的是完全备份。

“准备”(prepare)增量备份与整理完全备份有着一些不同,尤其要注意的是:
①需要在每个备份 (包括完全和各个增量备份)上,将已经提交的事务进行"重放"。“重放"之后,所有的备份数据将合并到完全备份上。
②基于所有的备份将未提交的事务进行"回滚”

主库全量备份
笔者用了上面的全量备份数据,这里就没有操作,和上面的一样,生成一个全量备份文件夹

主库:使用innobackupex进行增量备份

innobackupex --user=root --password='XXXX' --host=127.0.0.1 --port=3308 --incremental /mha/xtrabackup/BACKUP-DIR/ --incremental-basedir=/mha/xtrabackup/BACKUP-DIR/2022-02-17_15-28-40/

获取的备份数据案例:
#: 全量的备份: 2022-02-17_15-28-40
#: 增量的备份: 2022-02-18_17-30-24

全量:
backup_type = full-backuped
from_lsn = 0
to_lsn = 2617200
last_lsn = 2617209
compact = 0
recover_binlog_info = 0

增量:
backup_type = incremental
from_lsn = 2617200
to_lsn = 2635316
last_lsn = 2635325
compact = 0
recover_binlog_info = 0

可以看到
lsn
0----->2617200 – 全量
2617200------>2635316 – 增量

模拟宕机
关掉主数据库,模拟宕机,删除主库数据

cd /mha/mysql/mysqlpackage
sh stop.sh
cd /mha/mysql/install/public/mysql/
rm -rf data/

---------执行到这里了。。。。。。。。。。。。。。 从库99 主库36
这次在主库上操作:

主库:合并全备数据目录,确保数据的一致性

“准备”(prepare)增量备份与整理完全备份有着一些不同,尤其要注意的是:
①需要在每个备份 (包括完全和各个增量备份)上,将已经提交的事务进行"重放"。“重放"之后,所有的备份数据将合并到完全备份上。
②基于所有的备份将未提交的事务进行"回滚”

注意,这里的主库恢复数据和上面的不一样,增加了 --redo-only选型

innobackupex --apply-log --redo-only /mha/xtrabackup/BACKUP-DIR/2022-02-17_15-28-40/

主库:将增量备份数据合并到全备数据目录当中
注意,这里的主库恢复数据和上面的不一样,增加了 --redo-only选项

innobackupex --apply-log --redo-only /mha/xtrabackup/BACKUP-DIR/2022-02-17_15-28-40/ --incremental-dir=/mha/xtrabackup/BACKUP-DIR/2022-02-18_17-30-24/

恢复数据(数据会合并到完全备份的数据上):

-- innobackupex --copy-back /backups/2022-02-17_15-28-40/
innobackupex --defaults-file=/mha/mysql/install/public/mysql/my.cnf --user=root --copy-back /mha/xtrabackup/BACKUP-DIR/2022-02-17_15-28-40/

启动数据库,查看恢复情况

参考博客:

xtrabackup:
https://www.cnblogs.com/linuxk/p/9372990.html
https://www.dqzboy.com/1346.html
下载:
https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/

pt-show-grants:

https://dba.stackexchange.com/questions/41165/xtrabackup-backup-grants
https://www.cnblogs.com/bjx2020/p/10614979.html
https://blog.csdn.net/sweeper_freedoman/article/details/79939638
下载:
https://www.percona.com/doc/percona-toolkit/3.0/pt-show-grants.html#downloading
https://www.percona.com/software/mysql-database/percona-xtrabackup

xtrabackup备份数据库相关推荐

  1. Centos 推荐使用xtrabackup备份数据库

    mysqldump是一种逻辑备份方式,将数据转换成sql文件,其最大的缺陷就是备份和恢复时间很长,对于一个小于10G的数据库而言,这个速度还是可以接受的,但是如果数据库较大,那在使用mysqldump ...

  2. Percona Xtrabackup备份mysql大数据库(完整备份与增量备份)

    Percona Xtrabackup备份mysql大数据库(完整备份与增量备份) 文章目录 [隐藏] Xtrabackup简介 Xtrabackup安装 Xtrabackup工具介绍 innoback ...

  3. xtrabackup备份还原MySQL数据库

    原文:xtrabackup备份还原MySQL数据库 mysqldump 备份鉴于其自身的某些特性(锁表,本质上备份出来insert脚本或者文本,不支持差异备份),不太适合对实时性要求比较高的情况 Xt ...

  4. MariaDB之基于Percona Xtrabackup备份大数据库[完整备份与增量备份]

    MariaDB之基于Percona Xtrabackup备份大数据库[完整备份与增量备份] 1.Xtrabackup的安装 percona-xtrabackup-2.2.3-4982.el6.x86_ ...

  5. devops+备份mysql_使用Xtrabackup备份 MySQL 数据库

    使用Xtrabackup备份 MySQL 数据库 mysql的备份无非有下面几种方式: 1.mysqldump 2.mysqlhotcopy 3.采用Linux LVM的 snapshot 功能进行数 ...

  6. MySQL之Xtrabackup备份恢复数据库

    一.Xtrabackup介绍 1.Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbac ...

  7. xtrabackup 备份与还原 mysql数据库

    xtrabackup 备份与还原 mysql数据库 安装 官网地址: xtrabackup centos (apt,tar解压安装方式见上链接) $ yum install http://www.pe ...

  8. MySQL Xtrabackup备份和恢复

    简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具.特点: (1)备份过程快速.可靠 ...

  9. MySQL建表枚举分区SQL,【mysql备份】02、Xtrabackup备份mysql

    一.Xtrabackup概述 1.Xtrabackup简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb ...

最新文章

  1. 微软学者 | 郭达雅:瞄准科研目标主动出击,挑战“不可思议”
  2. ASP.NET控件事件丢失的探究
  3. linux stat函数讲解
  4. 【模块】脉搏血氧仪和心率监测仪生物传感器MAX30102
  5. windows下解决mysql5中文乱码的问题
  6. Visual Studio上开发Python?你不可不知道的六大功能!
  7. 《MySQL必知必会》笔记--数据库基础
  8. PHP输出Excel实例代码
  9. 配置php7开发环境,Windows7系统环境安装配置PHP开发环境
  10. 不采用服务器虚拟化的优缺点,为什么要进行虚拟化部署?虚拟化的缺点是什么?...
  11. Linux下sz下载文件超过4G办法
  12. FaWave(发微)-Chrome上的多微博全能插件
  13. 黎曼的zeta函数(1)
  14. 法律硕士毕业论文应该怎么写?
  15. (完美)华为nova2 PIC-AL00的USB调试模式在哪里打开的流程
  16. 前端图像处理之马赛克
  17. python程序设计江红答案_python程序设计江红答案
  18. 什么是cache,有什么用?
  19. 国科大 计算机学院 雁栖湖校区(研一上)
  20. NAT-DDNS内网穿透技术,解决动态域名解析难题

热门文章

  1. 面向对象题目,经典点的(java的 也可以用c#做下)
  2. 马斯克的火星梦:SpaceX将在5年半内将人类送上火星
  3. 高通SDM855平台Sensor学习——1.框架
  4. 使用Colab 运行Novel AI
  5. 怎样才能画好漫画人物眼睛里的阴影?
  6. vue3创建一个响应屏幕高度变化的全局指令
  7. 儿童房现代动物主题时钟装饰
  8. 魅族微信无法连接到服务器,原来魅族手机要搞定这几个设置,微信才会更好用!...
  9. Video Style Transfer汇总
  10. 【1】WIN10连接上了wifi,但显示无网络访问权限的解决方法