文章目录

  • 1. 工具介绍
  • 2. Xtrabackup 优点
  • 3. 备份原理
  • 4. 参数选项
  • 5. 备份实验

1. 工具介绍

  Xtrabackup 是由 percona 开源的免费数据库热备份软件,它能对 InnoDB 存储引擎和 XtraDB 存储引擎的数据库非阻塞地备份(对于 MyISAM 的备份需要加表锁)。mysqldump 备份方式是采用的逻辑备份,其最大的缺陷是备份和恢复速度较慢,如果数据库大于 50G,mysqldump 备份就不太适合。


2. Xtrabackup 优点

  • 备份速度快,物理备份可靠
  • 备份过程不会打断正在执行的事务(无需锁表)
  • 能够基于压缩等功能节约磁盘空间和流量
  • 自动备份校验
  • 还原速度快
  • 可以平滑的将备份文件传输到另外一台机器上
  • 在不增加服务器负载的情况备份数据
  • 物理备份工具,在同级数据量基础上,都要比逻辑备份性能要好的多(几十 G 到不超过 TB 级别的条件下)。在同数据量级别,物理备份工具在恢复数据上也有一定优势

3. 备份原理

对于 Innodb 表可以实现热备:

  • 在数据库还有修改操作的时刻,直接将数据文件备走,此时,备份走的数据对于当前 mysql 来讲是不一致的
  • 将备份过程中的 redo 和 undo 一并备走
  • 为了恢复的时候,只要保证备份出来的数据页 lsn 能和 redo lsn 匹配,将来恢复的就是一致的数据。redo 应用和 undo 应用

对于 MyISAM 表实现自动锁表拷贝文件:

  • 备份开始时首先会开启一个后台检测进程,实时检测 mysql redo 的变化,一旦发现有新的日志写入,立刻将日志记入后台日志文件 xtrabackup_log 中,之后复制 innodb 的数据文件一系统表空间文件 ibdatax,复制结束后,将执行 flush tables with readlock,然后复制 .frm MYI MYD 等文件,最后执行 unlock tables,最终停止 xtrabackup_log。

4. 参数选项

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

5. 备份实验

安装 xtrabackup 软件

yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum -y install percona-xtrabackup-24.x86_64

完全备份

mkdir -p /backupinnobackupex  --user=root --password=123456  --socket=/usr/local/mysql/mysql.sock --no-timestamp /backup/full1
innobackupex  --user=root --password=123456  --use-memory=32M --no-timestamp /backup/xfull/

恢复数据前的准备(合并 xtabackup_log_file 和备份的物理文件)

innobackupex --apply-log --use-memory=32M /backup/xfull/#查看合并后的 checkpoints 其中的类型变为 full-prepared 即为可恢复
cat /backup/xfull/xtrabackup_checkpointsbackup_type = full-prepared
from_lsn = 0
to_lsn = 2901604
last_lsn = 2901613
compact = 0
recover_binlog_info = 0
flushed_lsn = 2901613

直接删掉 data 目录

cd /usr/local/mysql/data/
rm -rf ./*

使用 innobackupex 命令进行恢复

innobackupex --copy-back /backup/xfull

无论使用哪种恢复方法,恢复后都需要更改属主属组

chown -R mysql.mysql /usr/local/mysql/

MySQL 数据库管理之 --- Xtrabackup 工具实现热备份相关推荐

  1. MySQL数据库管理 (可视化工具SQLyog)

    目录 1.创建数据库 2.查看数据库 3.修改数据库 4.删除数据库 1.创建数据库,基本语法格式如下: CREATE DATABASE | SCHEMA [IF NOT EXISTS] <库名 ...

  2. Mysql数据库管理工具简介

    数据库管理工具可以可视化,SQLyog.phpMyAdmin.Navicat这三种工具,分别不同,下面简单说说三者直接的区别 1,SQLyog是一个易于使用的.快速而简洁的图形化管理MYSQL数据库的 ...

  3. MySQL常用维护管理工具

    MySQL是一个非常流行的小型关 系型数据库管理系统,2008年1月16号被Sun公司收购.目前MySQL被广泛地应用在Internet上的中小型网站中.由于其体积小.速度快.总 体拥有成本低,尤其是 ...

  4. MySQL实用第三方客户端工具收集

    如前所述,MySQL是一个基于客户机--服务器的DBMS,因此,为了使用MySQl,你需要有一个客户机软件给MySQL提供要执行的命令.即你需要一个编写和测试MySQL脚本的工具. 1.MySQL命令 ...

  5. 常用MySQL图形化管理工具

    MySQL的管理维护工具非常多,除了系统自带的命令行管理工具之外,还有许多其他的图形化管理工具,这里我介绍几个经常使用的MySQL图形化管理工具,供大家参考. MySQL是一个非常流行的小型关系型数据 ...

  6. 11 款超赞的 MySQL 图形化管理工具,推荐收藏!

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! ​ MySQL 是一个非常流行的小型关系型数据库管理系统,2008年1月16号被Sun公司收购.目前 MySQL ...

  7. mysql 热备份 数据一致性_MySQL 使用 XtraBackup 进行数据热备份指导 [全量+增量]

    背景 最近一直涉猎 MySQL 数据库的操作.集群部署 注意到,为保证数据安全,掌握数据备份是极为重要的 相比小型服务的冷备份而言 在此推荐并整理更受推崇的 XtraBackup 下的热备份技巧 ☞ ...

  8. 推荐轻量级MySQL数据库管理工具 Adminer

    服务器上一直用 phpMyAdmin 管理 MySQL 数据库, 有点囊肿, 配置也麻烦, 所以换了个轻量级的 Adminer 数据库管理替换. Adminer 就一个单文件, 知道什么就轻量级了吧, ...

  9. mysql5.7的客户端软件_mysql数据库管理客户端工具|mysql数据库管理软件 v5.7.22 64位官方版 - 软件下载 - 绿茶软件园|33LC.com...

    mysql数据库管理软件是一个多线程的,结构化查询语言(SQL)数据库服务器.mysql数据库管理软件在世界上是最流行的数据库语言,很多人都选择MySQL,最大的特点就是MySQL的执行性能非常高,运 ...

最新文章

  1. 怎么重置mysql密码是多少钱_mysql怎么重置密码
  2. 如今网络营销行业火爆网络营销外包专员如何做好整合营销?
  3. Flask 模型操作
  4. MySQL高级-索引是什么
  5. 如何突破瓶颈又释放工作量? 深度剖析《闪耀暖暖》游戏从2D到3D的美术开发过程
  6. matlab求解线性方程组
  7. Leetcode--461. 汉明距离
  8. pow python用法菜鸟_pow在python中的含义及用法
  9. CHM乱码解决方案!
  10. c语言lnk1104无法打开exe,error LNK1104: 无法打开文件“C:\Users\Administrator\Desktop\....\\xxxx.exe”...
  11. 可多语句执行下不用单引号outfile写shell
  12. 关于python列表去重复后按照元列表序列输出
  13. java gbk文件转utf8_java 将GBK编码文件转为UTF-8编码
  14. GIT与SVN世纪大战
  15. visio付款流程图_visio流程图软件
  16. android 资源id 闪退,【报Bug】android闪退,勾选Push消息推送自定义基座后 获取oaid,vaid,aaid, app闪退...
  17. 底量超顶量超级大黑马指标源码_清华女教授忠言:只要出现“底量超顶量”走势,后期必有暴走趋势...
  18. MS-DOS系统的操作命令
  19. 31.SAP MII产品介绍(06)功能详解(04)数据服务和系统资源
  20. VMS和Windows NT的首席设计师大卫·卡特勒(David Cutler)

热门文章

  1. OpenJudge NOI 1.9.14 铺地毯
  2. 在PowerBI中使用R的限制
  3. 一文将大数据、云计算、物联网、5G(移动网)、人工智能等最新技术串起来
  4. 美云智数移动互联技术被众多企业认可,助力了企业更好发展
  5. Yarn管理页面中Aplication history无法访问问题以及Aggregation is not enabled问题
  6. Android API与Android版本的关系
  7. 【计算摄影学】总目录
  8. 云计算巨头鏖战,下一个十年会是华为云吗?
  9. win32com调用ATL编写的COM组件
  10. VS 2019中利用C#语言在.Net Framework 4.5框架上开发简易倒计时器