iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >详解如何利用Xtrabackup进行mysql增量备份
  • 163
分享到

详解如何利用Xtrabackup进行mysql增量备份

2024-04-02 19:04:59 163人浏览 安东尼
摘要

目录利用Xtrabackup进行Mysql增量备份安装设置数据库用于备份账户全量备份增量备份提问总结原理为什么最后一次增量备份不用 "--apply-log-only"为什么备份完后要准备备份 &qu

利用Xtrabackup进行mysql增量备份

现在xtrabackup版本升级到了8.0,但是只对mysql8.0才有支持, 我们这还是使用2.4, 但是2.4相比之前的2.1有了比较大的变化:innobackupex 功能全部集成到 xtrabackup 里面,只有一个 binary,另外为了使用上的兼容考虑,innobackupex 作为 xtrabackup 的一个软链,即 xtrabackup 现在支持非Innodb表备份,并且 Innobackupex 在下一版本中移除(8.0已经移除了),建议通过xtrabackup替换innobackupex。还有其他的一些新特性,更多的说明可以看xtrabackup新版详细说明。

下载地址: https://www.percona.com/downloads/Percona-XtraBackup-LATEST/

文档地址: Https://docs.percona.com/percona-xtrabackup/2.4/index.html

安装

如果安装需要依赖就把依赖安装一下

wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
sudo apt-get update
sudo apt-get install percona-xtrabackup-24

设置数据库用于备份账户

mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY '123456';
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATioN CLIENT ON *.* TO 'bkpuser'@'localhost';
mysql> FLUSH PRIVILEGES;

全量备份

xtrabackup --user=bkpuser --passWord=123456 --backup --target-dir=/data/backups/mysql
# 会看到输出
200603 09:55:37 Executing UNLOCK TABLES
200603 09:55:37 All tables unlocked
200603 09:55:37 [00] Copying ib_buffer_pool to /data/backups/mysql/ib_buffer_pool
200603 09:55:37 [00]        ...done
200603 09:55:37 Backup created in directory '/data/backups/mysql/'
200603 09:55:37 [00] Writing /data/backups/mysql/backup-my.cnf
200603 09:55:37 [00]        ...done
200603 09:55:37 [00] Writing /data/backups/mysql/xtrabackup_info
200603 09:55:37 [00]        ...done
xtrabackup: Transaction log of lsn (837940114) to (837940123) was copied.
200603 09:55:37 completed OK!
  • 准备备份
xtrabackup --prepare --target-dir=/data/backups/mysql
  • 复制备份

我这里为了演示全量备份就直接将我博客 mysql 存储的数据目录给移动一下

mv /var/lib/mysql /var/lib/mysql_bak
mkdir /var/lib/mysql
xtrabackup --copy-back --target-dir=/data/backups/mysql  # 这样会保留原始备份 他会将当时读到my.cnf的datadir设置为恢复路径
200603 10:47:42 [01]        ...done
200603 10:47:42 [01] Copying ./perfORMance_schema/mutex_instances.frm to /var/lib/mysql/performance_schema/mutex_instances.frm
200603 10:47:42 [01]        ...done
200603 10:47:42 [01] Copying ./performance_schema/events_transactions_history_long.frm to /var/lib/mysql/performance_schema/events_transactions_history_long.frm
200603 10:47:42 [01]        ...done
200603 10:47:42 [01] Copying ./xtrabackup_info to /var/lib/mysql/xtrabackup_info
200603 10:47:42 [01]        ...done
200603 10:47:42 [01] Copying ./ibtmp1 to /var/lib/mysql/ibtmp1
200603 10:47:42 [01]        ...done
200603 10:47:42 completed OK!
  • 备份成功 重新启动 博客还能正常访问 哈哈哈哈
# 将恢复目录的属主更改一下
chown -R mysql:mysql mysql
/etc/init.d/mysql start

如果恢复玩不想要备份数据可以使用 xtrabackup --move-back 命令

增量备份

增量是基于已有数据进行备份的,也就行需要先创建一次全量备份,然后记录当时的记录点

  • 创建备份
xtrabackup --user=bkpuser --password=123456 --backup --target-dir=/data/backups/base
# 基于全量备份进行增量
xtrabackup --user=bkpuser --password=123456 --backup --target-dir=/data/backups/inc1 --incremental-basedir=/data/backups/base
  • 查看备份类型 确认是增量备份了
root@longing:/data/backups/inc1# cat xtrabackup_checkpoints 
backup_type = incremental
from_lsn = 837943393
to_lsn = 837943393
last_lsn = 837943402
compact = 0
recover_binlog_info = 0
flushed_lsn = 837943402

from_lsn 是备份的起始 LSN,对于增量备份,它必须to_lsn与先前 base 备份的相同。

在这种情况下,您可以看到to_lsn (最后一个检查点LSN)和last_lsn(最后一个复制的LSN)之间存在差异,这意味着在备份过程中服务器上有一些流量。

  • 我们可以测试一下 对第一个增加继续创建增量 创建增量之前先创建几条数据
xtrabackup --user=bkpuser --password=123456 --backup --target-dir=/data/backups/inc2 --incremental-basedir=/data/backups/inc1
  • 准备恢复

已经有3个备份了,我们要先对基础数据进行准备,然后对两个增量进行准备

xtrabackup --user=bkpuser --password=123456 --prepare --apply-log-only --target-dir=/data/backups/base
xtrabackup --user=bkpuser --password=123456 --prepare --apply-log-only --target-dir=/data/backups/base --incremental-dir=/data/backups/inc1
xtrabackup --user=bkpuser --password=123456 --prepare --target-dir=/data/backups/base --incremental-dir=/data/backups/inc2

xtrabackup --apply-log-only 合并除最后一个以外的所有增量时应使用, 一旦准备好,增量备份就与完整备份相同,可以用相同的方式还原它们。

  • 恢复
xtrabackup --copy-back --target-dir=/data/backups/base

中间插入的数据就能看见了,真棒!

提问总结

  • 增量备份步骤
  • 创建基础备份
  • 一定条件进行增量备份创建
  • 对所有备份进行准备 所有增量基于基础备份 相当于合并操作
  • 最后和全量备份一样 直接恢复即可

原理

InnoDB内部会维护一个redo日志文件,我们也可以叫做事务日志文件.事务日志会存储每一个InnoDB表数据的记录修改。当InnoDB启动时,InnoDB会检查数据文件和事务日志,并执行两个步骤:它应用(前滚)已经提交的 事务日志到数据文件,并将修改过但没有提交的数据进行回滚操作。

Xtrabackup 在启动时会记住log sequence number(LSN), 并且复制所有的数据文件。复制过程需要一些时间,所以这期间如果数据文件有改动,那么将会使数据库处于一个不同的时间点。这时,xtrabackup 会运行一个后台进程,用于监视事务日志,并从事务日志复制最新的修改。Xtrabackup 必须持续的做这个操作,是因为事务日志是会轮转重复的写入,并且事务日志可以被重用。所以 xtrabackup 自启动开始,就不停的将事务日志中每个数据文件的修改都记录下来。上面就是 xtrabackup 的备份过程。

为什么最后一次增量备份不用 "--apply-log-only"

最后一次"准备"操作可以不用跳过回滚操作,这样用来恢复的数据文件本地就处理好了,当服务启动后就不会再进入到回滚阶段,如果最后一次使用了这个参数,服务器启动后将进入回滚阶段。所以这个--apply-log-only 只是用来合并增量用的避免下一个增量不可用。 可以参见 参见 man xtrabackup

为什么备份完后要准备备份 "prepare"

一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。他作用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态。

为什么选择这个做备份?

  • mysqldump 备份缺点

效率较低,备份和还原速度慢,份过程中,数据插入和更新操作会被挂起

跨平台性差,备份时间长,冗余备份,浪费存储空间

  • XtraBackup

备份过程中不库表,适合生产环境,由专业组织Percona提供( 改进MySQL分支 )

  • XtraBackup能对表 库进行备份吗?

当然了,只不过博主太懒了,写起来太麻烦了,不过原理都是差不多,操作也差不多,大家自己搞搞!

xtrabackup --user=bkpuser --password=123456 --backup --databases="u_test" --no-timestamp --target-dir=/data/backups/u
xtrabackup --prepare --target-dir=/data/backups/u

还原

  • prepare,利用--apply-log的作用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态
  • copy,因为是部分备份,不能直接用--copy-back,只能手动来复制需要的库,也要复制ibdata(数据字典)
  • cp /data/backups/u/ibdata1 /var/lib/mysql/
  • cp -r u/u_test /var/lib/mysql/

以上就是详解如何利用Xtrabackup进行mysql增量备份的详细内容,更多关于mysql 增量备份 Xtrabackup的资料请关注我们其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: 详解如何利用Xtrabackup进行mysql增量备份

本文链接: https://www.lsjlt.com/news/116961.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解如何利用Xtrabackup进行mysql增量备份
    目录利用Xtrabackup进行mysql增量备份安装设置数据库用于备份账户全量备份增量备份提问总结原理为什么最后一次增量备份不用 "--apply-log-only"为什么备份完后要准备备份 &qu...
    99+
    2024-04-02
  • 怎么利用Xtrabackup进行mysql增量备份
    本篇内容主要讲解“怎么利用Xtrabackup进行mysql增量备份”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么利用Xtrabackup进行mysql增量备份”吧!利用Xtrabackup...
    99+
    2023-07-04
  • MySQL利用xtrabackup进行增量备份的详细过程
    本篇内容主要讲解“MySQL利用xtrabackup进行增量备份的详细过程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL利用xtrabackup进行增...
    99+
    2024-04-02
  • 如何进行MySQL 5.6 xtrabackup 全量和增量的备份及恢复
    今天就跟大家聊聊有关如何进行MySQL 5.6 xtrabackup 全量和增量的备份及恢复,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。xtrab...
    99+
    2024-04-02
  • xtrabackup备份工具命令如何进行单库增量备份还原
    这期内容当中小编将会给大家带来有关xtrabackup备份工具命令如何进行单库增量备份还原,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Innobackupex 参数解释...
    99+
    2024-04-02
  • 如何进行MySQL中的xtrabackup备份恢复
    这篇文章给大家介绍如何进行MySQL中的xtrabackup备份恢复,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。    XtraBackup是Percona推出...
    99+
    2024-04-02
  • MySQL如何使用Xtrabackup备份
    这篇文章给大家分享的是有关MySQL如何使用Xtrabackup备份的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。01 背景    Xtrabackup是Percona公司开发的一款...
    99+
    2023-06-14
  • 如何使用Btrfs快照进行增量备份
    这篇文章主要为大家展示了“如何使用Btrfs快照进行增量备份”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Btrfs快照进行增量备份”这篇文章吧。使用快照进行备份快照驻留在子卷所在的同一...
    99+
    2023-06-15
  • mysql如何全量备份和增量备份
    本篇内容主要讲解“mysql如何全量备份和增量备份”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql如何全量备份和增量备份”吧!mysql 全量备份:vi...
    99+
    2024-04-02
  • mysql 增量备份与恢复使用详解
    目录 一、前言 二、数据备份策略 2.1 全备 2.2 增量备份 2.3 差异备份 三、mysql 增量备份概述 3.1 增量备份实现原理 3.1.1 基于日志的增量备份 3.1.2 基于时间戳的增量备份 3.2 增量备份常用实现方式 3....
    99+
    2023-09-11
    mysql增量备份 mysql增量备份与恢复 mysql增量备份方案 xtrabackup使用 xtrabackup增量备份
  • 如何使用Xtrabackup远程备份Mysql
    小编给大家分享一下如何使用Xtrabackup远程备份Mysql,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Xtrabackup的远程备份,是把备份传到标准输出,再传到远程服务器。首先,...
    99+
    2024-04-02
  • 如何用Percona XtraBackup进行MySQL从库的单表备份和恢复
    环境说明: 主库:192.168.0.1 从库1:192.168.0.2 从库2:192.168.0.3 备份工具 : Percona xtrabackup version 2.4.8 based on M...
    99+
    2024-04-02
  • 如何使用Xtrabackup备份MySQL数据库
    这篇文章将为大家详细讲解有关如何使用Xtrabackup备份MySQL数据库,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。本文则演示如何从xtrabackup的备份中进行...
    99+
    2024-04-02
  • centos7中如何利用crontab进行mysql定时备份
    目录centos7用crontab进行mysql定时备份备注附crontab文件的一些例子总结centos7用crontab进行mysql定时备份 1、建立 mysql3306_ba...
    99+
    2024-04-02
  • 如何使用xtrabackup备份和还原mysql
    这篇文章给大家介绍如何使用xtrabackup备份和还原mysql,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、安装percona-xtrabackup# 下载安装包:# ...
    99+
    2024-04-02
  • mysql中lnnobackupex怎么进行全备加上增量的备份恢复
    mysql中lnnobackupex怎么进行全备加上增量的备份恢复,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 ...
    99+
    2024-04-02
  • 如何进行MySQL mysqldump从库备份
    如何进行MySQL mysqldump从库备份,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 #!/bin/bash MYSQL_PATH...
    99+
    2024-04-02
  • CentOS7 MySQL如何进行定时备份
    本篇内容主要讲解“CentOS7 MySQL如何进行定时备份”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CentOS7 MySQL如何进行定时备份”吧! ...
    99+
    2024-04-02
  • 如何进行mysql的备份的分析
    这篇文章将为大家详细讲解有关如何进行mysql的备份的分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在linux下的mysql在刚安装时候的默认用户都是...
    99+
    2024-04-02
  • mysql如何利用binlog进行数据恢复详解
    前言 最近线上误操作了一个数据,由于是直接修改的数据库,所有唯一的恢复方式就在mysql的binlog。binlog使用的是ROW模式,即受影响的每条记录都会生成一个sql。同时利用了binlog2sql项...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作