是的,我将对它们两个都运行strace ...但是,我想知道...
- 除了rsync -ac src dest以外,XtraBackup在做什么?
- XtraBbackup有什么特别之处?
- XtraBackup如何与mysqld交互?
是的,我将对它们两个都运行strace ...但是,我想知道...
Answers:
rsync只是从一个地方到另一个地方的强力逐字节数据复制。您将执行多个rsync,直到最后一个rsync,这非常快。然后,您将完全关闭MySQL,然后再执行一次rsync。
XtraBackup是一个功能全面的工具,其行为类似于rsync,但在生活中具有一定的针对性。它可以开始复制所有InnoDB数据和表空间。它具有在内部创建检查点并就地执行InnoDB崩溃恢复的功能,以帮助获得完美的时间点备份。XtraBackup还具有一项额外功能,可用于创建增量备份。另一个附加功能是创建InnoDB日志文件,该文件也由就地崩溃恢复构建。还有一些包装器软件也可以提供MyISAM表的冻结复制。
两种方法都很棒。XtraBackup只是在大多数初始复制中实现了InnoDB事务功能。Xtrabackup创建的文件可以放入已建立的MySQL基础结构中。可以说,XtraBackup提供了工具备份和实例化的非常有用的InnoDB文件。
使用rsync会强制您多次管理复制过程,并使用mysql shutdown将其关闭,以要求对rsync进行一次干预。
一个使用另一个可能是个人喜好。必须承认一件事:XtraBackup进行的备份要比复制的数据大一些。我将方法的选择留给这个问题的读者。
我更喜欢rsync,因为它使用简单,我可以确定进程开始之前的特定时间点,我还可以完全控制锁定mysqld或关闭它,何时可以执行这样的控制,以及我指定的顺序。
两种备份方式有一个共同点:使用XtraBackup,在备份过程完成之前,实际的时间点是一个移动的目标,您必须信任XtraBackup(到目前为止,下载量为200,000。Facebook是该应用程序的最大用户之一)它赢得了很多信任)。换句话说,如果我在午夜启动XtraBackup并且备份持续到2:20 AM,那么备份的实际时间点就是2:20 AM。使用rsync具有相同的移动目标问题,因为您必须手动执行多个rsync,然后确定何时在最终rsync之前发出“服务mysql停止”。
这些方法的不同之处在于必须使用rsync方法关闭mysqld,而XtraBackup的行为独立于mysqld。实际上,除了通过包装软件处理MyISAM表外,XtraBackup根本不与mysqld交互。XtraBackup尝试使用独立于mysqld的InnoDB存储引擎操作来构建功能齐全的InnoDB数据和日志文件。
对于rsync方法,关闭mysql是非常必要的,这有一个很大的原因:InnoDB缓冲池可以容纳“脏页”,即那些没有写回到磁盘的数据页和索引页(1页= 16KB)。使用rsync不会捕获InnoDB缓冲池中暂挂的数据更改。为了加快mysqld对于最终rsync的关闭速度,请运行以下命令:
SET GLOBAL innodb_max_dirty_pages_pct = 0;
该命令将脏页的数量保持在最低限度。在执行rsync备份方法之前,应运行此命令约一小时。尽管XtraBackup不需要关闭mysql,但这甚至可以帮助XtraBackup。