xtrabackup部署以及使用

xtrabackup部署以及使用

简介

  备份mysql数据库一直是一个比较恶心的工作,主要就是备份的数据库比较大实在是慢。最近开始使用xtrabackup来备份数据库,速度上快了很多,尤其还原速度要快的多。下面我将从安装开始简要介绍一下如何使用xtrabackup来备份数据库。

定义:xtrabackup工具是percona公司用perl语言开发的在线物理热备份工具,由于是采取物理拷贝的方式来做的备份,所以速度非常快,几十G数据也才几分钟就搞定了,而它巧妙的利用了mysql特性做到了在线热备份,不用像以前做物理备份那样关闭数据库才行,直接在线就能完成整库或者是部分库的全量备份和增量备份.

优点:

(1)备份过程快速、可靠

(2)备份过程不会打断正在执行的事务

(3)能够基于压缩等功能节约磁盘空间和流量

(4)自动实现备份检验

(5)还原速度快
Xtrabackup有两个主要的工具:xtrabackup、innobackupex
(1)xtrabackup只能备份InnoDB和XtraDB两种引擎的数据表。
(2)innobackupex备份innodb和myisam两种引擎,但是myisam数据目前不支持增量。理论上就是再xtrabackup基础上封装了备份myisam的功能。

安装

  网上很多钟方式,这里我简单一种(下载二进制安装包)来部署。部署环境cetnos6.5,mysql5.7.24,xtrabackup版本为最新的2.4.9。直接解压即可。

  1.   下载&解压
    # wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/tarball/percona-xtrabackup-2.4.9-Linux-x86_64.tar.gz
    # tar -xf percona-xtrabackup-2.4.9-Linux-x86_64.tar.gz

  2.   添加path环境变量
    echo "export PATH=$PATH:/XXX/bin >> /etc/profile

  3.   source 生效即可使用。

 

 备份

备份主要分为两种模式一种是tar模式一种是xbstream模式。

 其中xbstream模式可以不落盘直接发送到备份服务器,当数据库服务器磁盘不足时是一种不错的方式,当然速度稍慢。顾名思义,流模式由Percona XtraBackup支持,以特殊的tar或xbstream格式将备份发送到STDOUT,而不是将文件复制到备份目录。这种模式允许使用其他程序来过滤备份的输出,从而为备份的存储提供更大的灵活性。例如,通过将输出管道连接到压缩实用程序来实现压缩。流备份和使用Unix管道的好处之一是备份可以被自动加密。
innobackupex在子进程的日志流模式下启动xtrabackup,并将其日志重定向到一个临时文件。然后,它使用xbstream以特殊的xbstream格式将所有数据文件流到STDOUT(二进制)。在它将所有数据文件流化到STDOUT后,它将停止xtrabackup并将保存的日志文件流化。下面看一下实例代码:

xbstream实例:

将完整备份直接存储到一个文件中:

$ innobackupex --stream=xbstream /root/backup/ > /root/backup/backup.xbstream

流式压缩备份:

$ innobackupex --stream=xbstream --compress /root/backup/ > /root/backup/backup.xbstream

解压缩备份到/root/backup/目录:

$ xbstream -x <  backup.xbstream -C /root/backup/

压缩备份发送到另一台主机并解压:

$ innobackupex --compress --stream=xbstream /root/backup/ | ssh user@otherhost "xbstream -x -C /root/backup/"

 

tar实例:

将完整备份直接存储到tar存档中:

$ innobackupex --stream=tar /root/backup/ > /root/backup/out.tar

将tar存档发送到另一个主机:

$ innobackupex --stream=tar ./ | ssh user@destination \ "cat - > /data/backups/backup.tar"

注意

要提取Percona XtraBackup的存档,必须使用tar和-i选项:

$ tar -xizf backup.tar.gz

使用首选的压缩工具进行压缩:

$ innobackupex --stream=tar ./ | gzip - > backup.tar.gz
$ innobackupex --stream=tar ./ | bzip2 - > backup.tar.bz2

恢复数据

xtrabackup有一个xtrabackup –copy-back选项,可以将备份恢复到服务器的datadir:

$ xtrabackup --copy-back --target-dir=/data/backups/

它会将所有与数据相关的文件复制回服务器的datadir,由服务器的my.cnf配置文件决定。
复制数据后应检查文件权限。你可能需要用类似的方法来调整它们:

$ chown -R mysql:mysql /var/lib/mysql

复加密的备份

参数说明:

 1 --compress:该选项表示压缩innodb数据文件的备份。
 2 --compress-threads:该选项表示并行压缩worker线程的数量。
 3 --compress-chunk-size:该选项表示每个压缩线程worker buffer的大小,单位是字节,默认是64K。
 4 --encrypt:该选项表示通过ENCRYPTION_ALGORITHM的算法加密innodb数据文件的备份,目前支持的算法有ASE128,AES192,AES256。
 5 --encrypt-threads:该选项表示并行加密的worker线程数量。
 6 --encrypt-chunk-size:该选项表示每个加密线程worker buffer的大小,单位是字节,默认是64K。
 7 --encrypt-key:该选项使用合适长度加密key,因为会记录到命令行,所以不推荐使用。
 8 --encryption-key-file:该选项表示文件必须是一个简单二进制或者文本文件,加密key可通过以下命令行命令生成:openssl rand -base64 24 9 --include:该选项表示使用正则表达式匹配表的名字[db.tb],要求为其指定匹配要备份的表的完整名称,即databasename.tablename。
10 --user:该选项表示备份账号。
11 --password:该选项表示备份的密码。
12 --port:该选项表示备份数据库的端口。
13 --host:该选项表示备份数据库的地址。
14 --databases:该选项接受的参数为数据名,如果要指定多个数据库,彼此间需要以空格隔开;如:"xtra_test dba_test",同时,在指定某数据库时,也可以只指定其中的某张表。如:"mydatabase.mytable"。该选项对innodb引擎表无效,还是会备份所有innodb表。此外,此选项也可以接受一个文件为参数,文件中每一行为一个要备份的对象。
15 --tables-file:该选项表示指定含有表列表的文件,格式为database.table,该选项直接传给--tables-file。
16 --socket:该选项表示mysql.sock所在位置,以便备份进程登录mysql。
17 --no-timestamp:该选项可以表示不要创建一个时间戳目录来存储备份,指定到自己想要的备份文件夹。
18 --ibbackup:该选项指定了使用哪个xtrabackup二进制程序。IBBACKUP-BINARY是运行percona xtrabackup的命令。这个选项适用于xtrbackup二进制不在你是搜索和工作目录,如果指定了该选项,innoabackupex自动决定用的二进制程序。
19 --slave-info:该选项表示对slave进行备份的时候使用,打印出master的名字和binlog pos,同样将这些信息以change master的命令写入xtrabackup_slave_info文件。可以通过基于这份备份启动一个从库。
20 --safe-slave-backup:该选项表示为保证一致性复制状态,这个选项停止SQL线程并且等到show status中的slave_open_temp_tables为0的时候开始备份,如果没有打开临时表,bakcup会立刻开始,否则SQL线程启动或者关闭知道没有打开的临时表。如果slave_open_temp_tables在--safe-slave-backup-timeount(默认300秒)秒之后不为0,从库sql线程会在备份完成的时候重启。
21 --rsync:该选项表示通过rsync工具优化本地传输,当指定这个选项,innobackupex使用rsync拷贝非Innodb文件而替换cp,当有很多DB和表的时候会快很多,不能--stream一起使用。
22 --kill-long-queries-timeout:该选项表示从开始执行FLUSH TABLES WITH READ LOCK到kill掉阻塞它的这些查询之间等待的秒数。默认值为0,不会kill任何查询,使用这个选项xtrabackup需要有Process和super权限。
23 --kill-long-query-type:该选项表示kill的类型,默认是all,可选select。
24 --ftwrl-wait-threshold:该选项表示检测到长查询,单位是秒,表示长查询的阈值。
25 --ftwrl-wait-query-type:该选项表示获得全局锁之前允许那种查询完成,默认是ALL,可选update。
26 --galera-info:该选项表示生成了包含创建备份时候本地节点状态的文件xtrabackup_galera_info文件,该选项只适用于备份PXC。
27 --stream:该选项表示流式备份的格式,backup完成之后以指定格式到STDOUT,目前只支持tar和xbstream。
28 --defaults-file:该选项指定了从哪个文件读取MySQL配置,必须放在命令行第一个选项的位置。
29 --defaults-extra-file:该选项指定了在标准defaults-file之前从哪个额外的文件读取MySQL配置,必须在命令行的第一个选项的位置。一般用于存备份用户的用户名和密码的配置文件。
30 ----defaults-group:该选项表示从配置文件读取的组,innobakcupex多个实例部署时使用。
31 --no-lock:该选项表示关闭FTWRL的表锁,只有在所有表都是Innodb表并且不关心backup的binlog pos点,如果有任何DDL语句正在执行或者非InnoDB正在更新时(包括mysql库下的表),都不应该使用这个选项,后果是导致备份数据不一致,如果考虑备份因为获得锁失败,可以考虑--safe-slave-backup立刻停止复制线程。
32 --tmpdir:该选项表示指定--stream的时候,指定临时文件存在哪里,在streaming和拷贝到远程server之前,事务日志首先存在临时文件里。在 使用参数stream=tar备份的时候,你的xtrabackup_logfile可能会临时放在/tmp目录下,如果你备份的时候并发写入较大的话 xtrabackup_logfile可能会很大(5G+),很可能会撑满你的/tmp目录,可以通过参数--tmpdir指定目录来解决这个问题。
33 --history:该选项表示percona server 的备份历史记录在percona_schema.xtrabackup_history表。
34 --incremental:该选项表示创建一个增量备份,需要指定--incremental-basedir。
35 --incremental-basedir:该选项表示接受了一个字符串参数指定含有full backup的目录为增量备份的base目录,与--incremental同时使用。
36 --incremental-dir:该选项表示增量备份的目录。
37 --incremental-force-scan:该选项表示创建一份增量备份时,强制扫描所有增量备份中的数据页。
38 --incremental-lsn:该选项表示指定增量备份的LSN,与--incremental选项一起使用。
39 --incremental-history-name:该选项表示存储在PERCONA_SCHEMA.xtrabackup_history基于增量备份的历史记录的名字。Percona Xtrabackup搜索历史表查找最近(innodb_to_lsn)成功备份并且将to_lsn值作为增量备份启动出事lsn.与innobackupex--incremental-history-uuid互斥。如果没有检测到有效的lsn,xtrabackup会返回error。
40 --incremental-history-uuid:该选项表示存储在percona_schema.xtrabackup_history基于增量备份的特定历史记录的UUID。
41 --close-files:该选项表示关闭不再访问的文件句柄,当xtrabackup打开表空间通常并不关闭文件句柄目的是正确的处理DDL操作。如果表空间数量巨大,这是一种可以关闭不再访问的文件句柄的方法。使用该选项有风险,会有产生不一致备份的可能。
42 --compact:该选项表示创建一份没有辅助索引的紧凑的备份。
43 --throttle:该选项表示每秒IO操作的次数,只作用于bakcup阶段有效。apply-log和--copy-back不生效不要一起用。

 

总结

   本篇简单介绍了xtrabackup的部署和使用,当然还有很多地方比如增量备份还原以及各种参数的使用,将在以后进行深入说明。最后汇总一下 xtrabackup一些功能:

  • 在不暂停数据库的情况下创建热的InnoDB备份
  • 进行MySQL的增量备份
  • 将压缩的MySQL备份传输到另一台服务器
  • 在MySQL服务器之间移动表格
  • 轻松创建新的MySQL复制从站
  • 在不增加服务器负载的情况下备份MySQL

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119670.html原文链接:https://javaforall.net

(0)
上一篇 2021年11月27日 上午9:00
下一篇 2021年11月27日 上午9:00


相关推荐

  • 面向对象多态概念理解

    面向对象多态概念理解1 nbsp 什么是多态一句话概括 父类对象引用子类变量调用的是子类的实现例子 子类 publicclassC publicvoidhe System out println 我是中国人 publicvoidba System out println 我来拜年了

    2026年3月16日
    2
  • 阿扣的Verilog HDL学习笔记④

    阿扣的Verilog HDL学习笔记④第 4 章模块和端口模块定义 模块名 端口列表 参数 变量声明 数据流描述语句 行为语句 调用 实例引用 其他模块及任务 函数 定义和声明端口列表 端口连接规则 用有序列表和名字将端口与外部信号相连 层次引用 4 1 模块模块 模块定义 Verilog 源文件中可定义多个模块 不考虑排列顺序 内部含变量声明 数据流语句 低层模块实例 行为语句快 任务和函数 顺序和出现位置任意

    2026年3月19日
    3
  • 豆包大模型

    豆包大模型

    2026年3月12日
    3
  • caller与callee[通俗易懂]

    caller与callee[通俗易懂]这两个对象,是用于判断函数调用和执行的对象函数的。其中,arguments.callee返回当前正在执行的函数,func.caller返回函数的调用体所在函数。而arguments.caller永远返回undefined。如果调用函数是在全局进行,那么func.caller将返回null。注意,在严格模式下这两个对象将被禁用。我们举刚才的一个代码为例:[javascri

    2025年7月28日
    4
  • java分割字符串(特殊字符) split

    java分割字符串(特殊字符) split使用 java 中的 split 方法分割包含特殊字符的字符串

    2025年8月2日
    11
  • python数组基本操作总结

    python数组基本操作总结一 列表 元祖 nbsp nbsp 1 元祖 nbsp nbsp nbsp nbsp nbsp nbsp 1 创建 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp tuple01 创建空元组 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp tuple01 2 nbsp 元组中只包含一个元素时 需要在元素后面添加逗号 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp tuple01 joe susan black monika nbsp nbsp nbsp nbsp nbsp nbsp 2 将元组转换为

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号