Linux-xtrabackup工具-总结
工具介绍
Percona 公司
- percona-server
- InnoDB --> XtraDB
Xtrabackup备份工具
percona提供的mysql数据库备份工具,惟一开源的能够对innodb和xtradb数据库进行热备的工具
手册:https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html
下载: https://www.percona.com/downloads/
xtrabackup 特点:
- 备份还原过程快速、可靠
- 备份过程不会打断正在执行的事务
- 能够基于压缩等功能节约磁盘空间和流量
- 自动实现备份检验
- 开源,免费
xtrabackup工具文件组成
- Xtrabackup2.2 版之前包括4个可执行文件
- innobackupex: Perl 脚本
- xtrabackup: C/C++, 编译的二进制程序
- xbcrypt: 加解密
- xbstream: 支持并发写的流文件格式
说明:
xtrabackup 是用来备份 InnoDB 表的,不能备份非 InnoDB 表,和 MySQL Server 没有交互innobackupex 脚本用来备份非 InnoDB 表,同时会调用 xtrabackup 命令来备份 InnoDB 表,还会和 MySQL Server 发送命令进行交互,如加全局读锁(FTWRL)、获取位点(SHOW SLAVE STATUS) 等。即innobackupex是在 xtrabackup 之上做了一层封装实现的
- xtrabackup的新版变化
xtrabackup版本升级到2.4后,相比之前的2.1有了比较大的变化:innobackupex 功能全部集成到 xtrabackup 里面,只有一个 binary程序,另外为了兼容考虑,innobackupex作为 xtrabackup 的软链 接,即xtrabackup现在支持非Innodb表备份,并且 Innobackupex 在下一版本中移除,建议通过 xtrabackup替换innobackupex
- 备份生成的相关文件
使用innobackupex备份时,其会调用xtrabackup备份所有的InnoDB表,复制所有关于表结构定义的相 关文件(.frm)、以及MyISAM、MERGE、CSV和ARCHIVE表的相关文件,同时还会备份触发器和数据库配 置信息相关的文件。这些文件会被保存至一个以时间命名的目录中,在备份时,innobackupex还会在备 份目录中创建如下文件:
-
- xtrabackup_info:文本文件,innobackupex工具执行时的相关信息,包括版本,备份选项,备份 时长,备份LSN(log sequence number日志序列号),BINLOG的位置
- xtrabackup_checkpoints:文本文件,备份类型(如完全或增量)、备份状态(如是否已经为 prepared状态)和LSN范围信息,每个InnoDB页(通常为16k大小)都会包含一个日志序列号LSN。 LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的
- xtrabackup_binlog_info:文本文件,MySQL服务器当前正在使用的二进制日志文件及至备份这一 刻为止二进制日志事件的位置,可利用实现基于binlog的恢复
- backup-my.cnf:文本文件,备份命令用到的配置选项信息
- xtrabackup_logfile:备份生成的二进制日志文件
xtrabackup 安装
在EPEL源中
yum install percona-xtrabackup
最新版本下载安装:
https://www.percona.com/downloads/Percona-XtraBackup-LATEST/
xtrabackup 用法
xtrabackup工具备份和还原,需要三步实现
- 备份:对数据库做完全或增量备份
- 预准备: 还原前,先对备份的数据,整理至一个临时目录
- 还原:将整理好的数据,复制回数据库目录中
xtrabackup 选项参考:
https://docs.percona.com/percona-xtrabackup/latest/genindex.html
语法
innobackupex [option] BACKUP-ROOT-DIR
选项
--user:#该选项表示备份账号 --password:#该选项表示备份的密码 --host:#该选项表示备份数据库的地址 --databases:#该选项接受的参数为数据库名,如果要指定多个数据库,彼此间需要以空格隔开; 如:"xtra_test dba_test",同时,在指定某数据库时,也可以只指定其中的某张表。 如:"mydatabase.mytable"。该选项对innodb引擎表无效,还是会备份所有innodb表 --defaults-file:#该选项指定从哪个文件读取MySQL配置,必须放在命令行第一个选项位置 --incremental:#该选项表示创建一个增量备份,需要指定--incremental-basedir --incremental-basedir:#该选项指定为前一次全备份或增量备份的目录,与--incremental同时使用 --incremental-dir:#该选项表示还原时增量备份的目录 --include=name:#指定表名,格式:databasename.tablename
Prepare预准备:
innobackupex --apply-log [option] BACKUP-DIR
选项说明:
--apply-log:#一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚 未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。此选项作 用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态 --use-memory:#和--apply-log选项一起使用,当prepare 备份时,做crash recovery分配的内存大 小,单位字节,也可1MB,1M,1G,1GB等,推荐1G --export:#表示开启可导出单独的表之后再导入其他Mysql中 --redo-only:#此选项在prepare base full backup,往其中合并增量备份时候使用,但不包括对最后 一个增量备份的合并
还原:
innobackupex --copy-back [选项] BACKUP-DIR
innobackupex --move-back [选项] [--defaults-group=GROUP-NAME] BACKUP-DIR
选项说明:
--copy-back:#做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir --move-back:#这个选项与--copy-back相似,唯一的区别是它不拷贝文件,而是移动文件到目的地。这 个选项移除backup文件,用时候必须小心。使用场景:没有足够的磁盘空间同事保留数据文件和Backup副本 --force-non-empty-directories #指定该参数时候,使得innobackupex --copy-back或--moveback选项转移文件到非空目录,已存在的文件不会被覆盖。如果--copy-back和--move-back文件需要从备 份目录拷贝一个在datadir已经存在的文件,会报错失败
还原注意事项:
- datadir 目录必须为空。除非指定innobackupex --force-non-empty-directorires选项指定,否则-- copy-back选项不会覆盖
- 在restore之前,必须shutdown MySQL实例,不能将一个运行中的实例restore到datadir目录中
- 由于文件属性会被保留,大部分情况下需要在启动实例之前将文件的属主改为mysql,这些文件将 属于创建备份的用户, 执行chown -R mysql:mysql /data/mysql,以上需要在用户调用 innobackupex之前完成
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤