xtrabackup 注意事项
XtraBackup 2.4,适用于 MySQL 5.6 和 MySQL 5.7。
XtraBackup 8.0,适用于 MySQL 8.0。
注意,两者不可混用,因为 MySQL 8.0 的 redo log 和数据字典的格式发生了变化。
在XtraBackup 2.4中,还有 innobackupex,不过它是xtrabackup 的一个软链。
在XtraBackup 2.3 之前,xtrabackup 只支持 InnoDB 表的备份,MyISAM 等非事务性存储引擎表的备份是通过 innobackupex 来实现的。从实现上看,innobackupex 是 Perl脚本,而 xtrabackup 是用 C/C+编译的二进制文件。前者调用后者来备份 InnoDB 表,并在此基础上,实现非 InnoDB 表的备份、数据库的一致性备份及并行备份等。
这看上去似乎没问题,但既然是两个不同的工具协同处理同一个任务,就必然涉及这两个工具之间的交互。之前的解决方案是在不同的阶段,通过创建或删除不同的临时文件(xtrabackup suspended 1xtrabackup_suspended_2、xtrabackup log_copied)与对方交互。但这种实现存在风险,例如在备份的过程中,临时文件可能被人误删。
于是从XtraBackup 2.3 开始,Percona 用 C语言重写了 innobackupex,并将其作为 xtrabackup 的-个软链。它依旧支持之前的语法,但不会增加新的特性,所有新的特性都只会集成在 xtrabackup 中。
建议从 XtraBackup 2.3 开始只使用 xtrabackup,而不是 innobackupex,后者在 XtraBackup 8.0 中被移除了。所以,下面的演示只使用 xtrabackup,没有使用innobackupex。