详解centos7安装percona xtrabackup以及备份恢复的操作方法
来源:SegmentFault
时间:2023-01-22 11:12:13 227浏览 收藏
对于一个数据库开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《详解centos7安装percona xtrabackup以及备份恢复的操作方法》,主要介绍了MySQL、数据库,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!
xtrabackup介绍:
xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写)
xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表
innobackupex实际上是percona-xtrabackup的perl整合脚本,功能当然更强大一些.
innobackupex主要是为了方便的 同时备份InnoDB和MyISAM引擎的表,但在处理myisam时需要加一个读锁。并且加入了一些使用的选项。如slave-info可以记录备份恢 复后,作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave。
xtrabackup备份实际上是在线的物理热备,为什么和么说呢,因为实际上他是以拷贝mysql物理文件来备份的方式,只是加入了一些锁和钩子来避免数据缺失。
优势
可以快速可靠的完成数据备份(复制数据文件和追踪事务日志)
数据备份过程中不会中断事务的处理(热备份)
节约磁盘空间和网络带宽
自动完成备份鉴定
因更快的恢复时间而提高在线时间
基于文件的物理备份
恢复起来会更快(不需要执行任何的mysql语句,不需要构建索引,innoDB表无需完全缓存到内存)
缺点
缺点就是占用空间大(备份时可以用--compress参数压缩,缩减体积)
选择合适的percona xtrabackup版本
percona xtrabackup2.4 可以兼容mysql5.7和mysql5.6
percona xtrabackup8.0 可以兼容mysql8
安装percona xtrabackup
# 下载 wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.26-1.el7.x86_64.rpm # 安装(rpm安装会有一些依赖包的问题) rpm -ivh percona-xtrabackup-24-2.4.26-1.el7.x86_64.rpm # 安装方式2(会自动解决下载安装依赖包) yum localinstall -y percona-xtrabackup-24-2.4.26-1.el7.x86_64.rpm
全量备份实战
备份参数介绍
innobackupex参数详解:https://www.cnblogs.com/root-...
--defaults-file=[mysql配置文件路径] --datadir=[mysql数据文件夹路径] --host=[mysql连接地址] --port=[mysql端口] --user=[mysql备份账号名称] --password=[mysql备份账号密码] --socket=[用于连接mysql的socket文件] --backup--target-dir=[指定备份的目录]
【 全量备份操作】
# 执行全量备份 innobackupex --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --user=root --password=123456 /backup/mysql # 按Y-m-d目录生成 innobackupex --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --user=root --password=123456 /backup/mysql/$(date +%Y-%m-%d) # 压缩备份 innobackupex --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --compress --compress-threads=2 --user=root --password=123456 /backup/mysql/compress_$(date +%Y-%m-%d) # 解压(需要先安装qpress解压工具) innobackupex --defaults-file=/etc/my.cnf --decompress /backup/mysql/compress_2022-09-18
安装qpress解压工具
# 安装 percona yum源 yum -y install https://downloads.percona.com/downloads/percona-release/percona-release-1.0-9/redhat/percona-release-1.0-9.noarch.rpm # 安装qpress yum -y install qpress
查看备份数据:cd /backup/mysql && ls
这边可以模拟删除一个数据表模拟线上事故
【恢复全量备份操作】
# 第一步: 先停止mysql服务 systemctl stop mysqld # 第二步: 删除旧的mysql数据目录(这边直接用mv重命名,方便操作失败、直接恢复旧的mysql数据) mv /var/lib/mysql /var/lib/mysql_bak20220916 # 第三步:准备(prepare)一个完全备份 innobackupex --apply-log /backup/mysql/2022-09-17_17-15-14 # 第四步:执行恢复操作: innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /backup/mysql/2022-09-17_17-15-14 # 第五步: 更改mysql目录权限 chown -R mysql:mysql /var/lib/mysql # 第六步: 并启动mysql systemctl start mysqld
增量备份实战
说明:第一次全备,第二次在全备的基础上做增量,第三次在第二次增量备份上做增量,同理第四次在第三次的基础上做增量.......(恢复的时候也是依次,第一次整合全备,第二次全备基础是整合增量备份的。第三次在第二次增量基础上整合增量。)
【增量备份操作】
# 增量备份目录(会自动创建) /backup/mysql_increment # 全量备份目录 /backup/mysql_full # 第一步:先执行一次全备份 innobackupex --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --user=root --password=123456 /backup/mysql_full # 第二步:可以模拟新增一张数据表或者数据 # 第三步:执行增量备份one(数据是基于上次的全量备份:/backup/mysql_full/2022-09-17_23-38-46) innobackupex --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --user=root --password=123456 --incremental /backup/mysql_increment --incremental-basedir=/backup/mysql_full/2022-09-17_23-38-46 --parallel=2
查看备份的数量
【增量数据表恢复】
第一步:恢复完全备份(注意这里一定要加–redo-only参数,该参数的意思是只应用xtrabackup日志中已提交的事务数据,不回滚还未提交的数据)
innobackupex --apply-log --redo-only /backup/mysql_full/2022-09-17_23-38-46
第二步:将增量备份one 应用到 完全备份, 到最后一次增量备份去掉–redo-only参数, 如果有多个增量备份,重复此操作
innobackupex --apply-log /backup/mysql_full/2022-09-17_23-38-46 --incremental-dir=/backup/mysql_increment/2022-09-17_23-44-10
第三步:把所有合在一起的完全备份整体进行一次apply操作,回滚未提交的数据
innobackupex --apply-log /backup/mysql_full/2022-09-17_23-38-46
第四步:把恢复完的备份复制到数据库目录文件中,赋权,然后启动mysql数据库,检测数据正确性
# 停止数据库服务 systemctl stop mysqld # 备份旧的mysql数据目录 mv /var/lib/mysql /var/lib/mysql_bak # 执行恢复数据操作 innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /backup/mysql_full/2022-09-17_23-38-46 # 修改目录权限 chown -R mysql:mysql /var/lib/mysql # 重新启动mysql systemctl start msyqld
总结
数据库备份可以使用全量备份加上增量备份同时使用,例如:每天一次全量备份,然后每个小时执行一次增量备份
因为增量备份恢复步骤比较多,到时候可以写成一个脚本去执行
终于介绍完啦!小伙伴们,这篇关于《详解centos7安装percona xtrabackup以及备份恢复的操作方法》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布数据库相关知识,快来关注吧!
-
499 收藏
-
244 收藏
-
235 收藏
-
157 收藏
-
101 收藏
-
134 收藏
-
228 收藏
-
448 收藏
-
136 收藏
-
490 收藏
-
428 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习