如果您使用100%InnoDB,那么您很幸运.您可以使用
XtraBackup对主数据库进行完整备份,而无需任何停机或任何表锁定.这将是一致的快照式备份,与使用READ LOCK或–master-data选项执行FLUSH TABLES时获得的排序相同.
XtraBackup工具还会在备份目录中删除一个额外文件,该文件包含在从站上启动复制所需的MASTER_LOG_POS和MASTER_LOG_FILE信息.
完成备份后,您需要在备份上运行XtraBackup的–prepare选项,将其加载到从站,启动备用MySQL进程备份并告诉它需要的新MASTER_LOG_POS和MASTER_LOG_FILE值.
在启动奴隶之前,你需要在my.cnf中跳过 – 启动 – 启动.
还要记住,默认情况下mysql架构是MyISAM(如果内存正确,它只能是MyISAM),所以在运行备份时你仍然必须小心不要对这些表做任何更改.只要您遵守该规则,主信息仍然是正确的.
对于奴隶来说,ignore the mysql schema in your my.cnf通常是一个好主意,并且只创建具有SELECT权限的用户.即使使用Percona(以及之前的Maatkit)提供的工具,也难以检测到不一致和不同步的从站,并且难以处理.
编辑:
虽然您说您正在使用InnoDB,但是如果您使用MyISAM表,则还有另一种方法.如果您有一个带有快照的卷管理器(例如ZFS或LVM),则可以运行带有READ LOCK的FLUSH TABLES,然后运行SHOW MASTER STATUS,创建一个快照并运行UNLOCK TABLES.停机时间应该相当短.为了比较,昨晚用来备份我们数据库的cron作业用了6秒钟来创建快照,这是数据库“关闭”的位,27分钟是将文件从快照复制到备份服务器.