文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

关于不同的MySQL复制解决方案概述

2024-04-02 19:55

关注

我在解决方案团队工作多年,发现数据库复制总是被误解,甚至有些人根本完全不理解,所以本文将来回顾一下MySQL环境中的复制概念,并且澄清一些大家对于复制的误解。

什么是复制?

复制:保证信息被复制并有目的地填充到另一个环境中,而不是仅存储在一个位置(基于源环境的事务)。如果更白话一点来说就是在您的基础架构上使用辅助服务器来读取或使用其他管理解决方案。

下图展示了MySQL复制环境的示例。

关于不同的MySQL复制解决方案概述

如果我们把范围缩小到MySQL中,那么在复制时我们有几种选择呢?

标准异步复制

异步复制意味着事务完全在本地环境中完成,并且不受复制从属本身的影响。完成更改后,主服务器将使用数据修改或实际语句(基于行的复制或基于语句的复制之间的差异会在之后讲)填充二进制日志。此转储线程读取二进制日志并将其发送到从IO线程。从站使用其IO线程将其置于自己的预处理队列(称为中继日志)中。从站使用SQL线程执行从站数据库上的每个更改。

关于不同的MySQL复制解决方案概述

半同步复制

半同步复制意味着从设备和主设备相互通信以保证事务的正确传输。主设备仅填充binlog并继续其会话,其中一个从设备确认事务已正确放置在从设备的中继日志中。

半同步复制可确保正确复制事务,但不保证实际发生从设备上的提交。

关于不同的MySQL复制解决方案概述

需要注意的是,半同步复制可确保主服务器等待继续处理特定会话中的事务,直到至少有一个从服务器确认接收到事务(或达到超时)。这与异步复制不同,因为半同步允许额外的数据完整性。

请记住,半同步复制会影响性能,因为它需要等待来自从站的实际ACK的往返。

组复制

这是MySQL Community Edition 5.7中引入的新概念,并且在MySQL 5.7.17中进行了GA。这是一个用于虚拟同步复制的新插件。

每当在节点上执行事务时,插件都会尝试与其他节点达成共识,然后再将其返回给客户端。 虽然与标准MySQL复制相比,该解决方案是完全不同的概念,但它基于使用binlog生成和处理日志事件。

以下是组复制的示例体系结构。

关于不同的MySQL复制解决方案概述

如果对Group Replication感兴趣,请参考以下文章:

http://mysqlhighavailability.com/mysql-group-replication-its-in-5-7-17-ga/

http://mysqlhighavailability.com/performance-evaluation-mysql-5-7-group-replication/

Percona XtraDB Cluster/ Galera Cluster

另一种允许将信息复制到其他节点的解决方案是Percona XtraDB Cluster。此解决方案侧重于提供一致性,使用认证过程来保证事务避免冲突并正确执行。在这种情况下,我们讨论的是集群解决方案,每个环境都受相同数据的约束,并且节点之间存在通信以保证一致性。

Percona XtraDB Cluster有多个组件:

该解决方案几乎是同步的,可与组复制相媲美。但是,它还具有使用多主复制的功能。像Percona XtraDB Cluster这样的解决方案是提高数据库基础架构可用性的一个组件。

关于不同的MySQL复制解决方案概述

基于行的复制与基于语句的复制

使用基于语句的复制,SQL查询本身将写入二进制日志。例如,从站执行完全相同的INSERT / UPDATE / DELETE语句。

该方法有很多优缺点:

基于行的复制是自MySQL 5.7.7以来的默认选择,具有许多优点。行更改记录在二进制日志中,并且不需要上下文信息,消除了非确定性查询的影响。

其它优点包括:

其缺点包括:

关于复制的误解

复制是集群

标准异步复制不是同步集群。请记住,标准和半同步复制不保证环境服务于同一数据集。使用Percona XtraDB Cluster时,每个服务器实际上需要分别处理每个更改。如果不是,则从群集中删除受影响的节点。异步复制不具有此故障安全性,在不一致的情况下,仍然可以接受读操作。

从理论上讲,环境应具有可比性。但是,有许多参数会影响数据传输的效率和一致性。只要使用异步复制,就无法保证事务正确发生。使用者可以通过增强配置的持久性来避免这种情况,但这会带来性能损失。

使用pt - table - checksum工具验证主服务器和从服务器的一致性 。

有复制就不需要备份了

没错,复制是一个很好的解决方案,可以获得数据集的可访问副本(例如报告问题,读取查询,生成备份)。但其并不能替代备份解决方案。通过异地备份,可以在发生重大灾难、用户错误或其他原因时可以重建环境。有些人使用 delayed slaves ,但它也不能取代适当的灾难恢复程序。

有复制,所以环境将负载平衡事务

虽然通过使用相同数据集运行辅助实例可能会提高环境的可用性,但仍可能需要将读取查询指向从属服务器,而将写查询指向主服务器。你可以使用代理工具或在自己的应用程序中定义此功能。

复制会显着减慢速度

复制对主服务器的性能影响很小。 Peter Zaitsev在一篇文章中曾讨论过从服务器对主服务器的潜在影响。请记住,写入二进制日志可能会影响性能,尤其是当您有许多小事务,然后被多个从服务器转储和接收时。

当然,除此之外还有许多其他参数都可能会影响实际主从设置的性能。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯