暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

17.1.1.6 Creating a Data Snapshot Using Raw Data Files

原创 Kevin U 2020-02-25
475

如果您的数据库很大,则复制原始数据文件比使用mysqldump并在每个从属服务器上导入文件更有效。INSERT 在重播语句时,此技术跳过了更新索引的开销。

将此方法与具有复杂缓存或日志记录算法的存储引擎中的表一起使用时,需要执行额外的步骤才能生成完美的“ 时间点 ”快照:即使您已获取全局读取锁定,初始copy命令也可能会忽略缓存信息和日志记录更新。存储引擎对此的响应方式取决于其崩溃恢复能力。

这种方法还不能可靠地工作,如果主机和从机有不同的价值观 ft_stopword_file, ft_min_word_len或者 ft_max_word_len你是具有全文索引复制表。

如果使用InnoDB表,则可以使用MySQL Enterprise Backup组件中的mysqlbackup命令生成一致的快照。该命令记录日志名称和与快照相对应的偏移量,以便稍后在从属服务器上使用。MySQL Enterprise Backup是商业产品,包含在MySQL Enterprise订阅中。有关详细信息,请参见 第25.2节“ MySQL企业备份概述”。

否则,请使用冷备份技术来获取InnoDB表的可靠二进制快照 :在缓慢关闭 MySQL Server 之后,复制所有数据文件。

要创建MyISAM 表的原始数据快照,您可以使用标准的复制工具(例如 cp或copy),远程复制工具(例如scp或rsync),归档工具(例如zip或 tar)或文件系统快照工具(例如 dump)。前提是您的MySQL数据文件存在于单个文件系统中。如果仅复制某些数据库,则仅复制与那些表相关的那些文件。(对于InnoDB,所有数据库中的所有表都存储在 系统表空间 文件中,除非您具有 innodb_file_per_table 选项已启用。)

您可能要专门从存档中排除以下文件:

与mysql数据库有关的文件。

主信息存储库文件(如果使用)(请参见 第17.2.2节“复制中继和状态日志”)。

主站的二进制日志文件,但二进制日志索引文件除外(如果要使用该文件查找从站的主二进制日志坐标)。

任何中继日志文件。

为了通过原始数据快照获得最一致的结果,请在此过程中关闭主服务器,如下所示:

获取读锁并获取主机的状态。请参见 第17.1.1.4节“获取复制主二进制日志坐标”。

在另一个会话中,关闭主服务器:

shell> mysqladmin shutdown
制作MySQL数据文件的副本。以下示例显示了执行此操作的常用方法。您只需要选择其中之一:

shell> tar cf /tmp/db.tar ./data
shell> zip -r /tmp/db.zip ./data
shell> rsync --recursive ./data /tmp/dbdata
重新启动主服务器。

如果不使用InnoDB表,则可以从主服务器获取系统快照,而无需按照以下步骤中所述关闭服务器:

获取读锁并获取主机的状态。请参见 第17.1.1.4节“获取复制主二进制日志坐标”。

制作MySQL数据文件的副本。以下示例显示了执行此操作的常用方法。您只需要选择其中之一:

shell> tar cf /tmp/db.tar ./data
shell> zip -r /tmp/db.zip ./data
shell> rsync --recursive ./data /tmp/dbdata
在获取读锁的客户端中,释放锁:

mysql> UNLOCK TABLES;
创建数据库的存档或副本后,在开始从属复制过程之前,将文件复制到每个从属。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论