【MySQL】怎么理解复制技术中的复制冲突(Replication Conflicts)?什么时候使用复制技术?

  • 前言
  • 复制冲突(Replication Conflicts)是什么
  • 复制技术使用场景
    • 水平横向扩展复制
    • 商业智能和分析复制
    • 地理数据分布复制
    • 使用 BLACKHOLE 存储引擎进行复制
    • 高可用性复制
  • 感谢

前言

上一篇文章【MySQL】MySQL中的复制技术是什么?它有哪些组成部分?介绍了MySQL中复制技术的一些基本概念。这篇文章来看下复制技术中的复制冲突(Replication Conflicts)怎么理解以及什么时候使用复制技术。

复制冲突(Replication Conflicts)是什么

在数据库复制技术中,复制冲突(Replication Conflicts)是指在多个数据库副本之间复制数据时可能发生的数据不一致或冲突的情况。这种冲突可以在分布式数据库系统或数据复制环境中发生,通常是由于并行写入、复制延迟、网络问题或其他因素引起的。尤其在多主节点(Master)的MySQL复制拓扑中。在多主节点的环境中,不同主节点上的数据可能会在某些情况下发生冲突,导致数据不一致。这是因为每个主节点可以独立地接收客户端的写入操作,而不一定会考虑其他主节点上的操作。

但是MySQL复制本身不提供内置的冲突解决机制。解决数据冲突的责任通常落在应用程序的开发人员和数据库管理员身上。应用程序必须能够处理数据冲突,以确保最终数据的一致性。

复制技术使用场景

常见用例:

  • 水平横向扩展:在多个从属服务器中分布查询工作负荷。
  • 商业智能和分析:在从属服务器上运行开销昂贵的报表和分析,使主服务器集中处理生产应用程序。
  • 地理数据分布:使用本地应用程序为本地用户提供服务,并将业务智能数据复制到企业服务器。
  • 高可用性:在多台服务器之间提供冗余,并实施受控切换或滚动升级。

水平横向扩展复制

实现复制的最常见的原因是将查询工作负载分布到一个或多个从服务器上,以提高整个应用程序中读操作的性能。在这种情况下,在主服务器上执行写操作而将读取操作分布在从属服务器之间。但如果在写入一个值后立即读取它肯可能会发生冲突,因为写是在主服务器上,读是在从属服务器上,而在网络中从主服务器向从属服务器传送二进制日志时会有一定延迟。

商业智能和分析复制

为不同的业务单位使用多个从属服务器,让主服务器专注于产品业务。
昂贵的报表就是系统开销很大的报表,往往一个报表就要算好几个小时,因为数据量大而且运算的算法很复杂,所以它需要的CPU和内存资源就更多,那么就可以将这类报表单独放在从属服务器中。在每个从属服务器上配置索引和存储引擎以针对不同的分析需求进行优化。可以使用复制过滤器或 BLACKHOLE 存储引擎来避免复制不需要存储在每个从属服务器上的表数据。

地理数据分布复制

将地理相关数据存储在位于主要用户附近的服务器上,然后将汇总复制到总部企业服务器。
具有分布式地理位置的公司可以从复制中获益,通过在每个区域都有服务器来处理本地数据并跨组织复制这些数据。这提供了与客户和劳动力的性能和管理好处,同时也使整个公司的数据意识。多源复制是地理位置上的分布式服务器的理想选择。

使用 BLACKHOLE 存储引擎进行复制

BLACKHOLE 存储引擎无提示地放弃所有数据更改,而不发出警告。它虽然会丢弃掉收到的数据,但依然能接受插入或更新数据的 DML 请求。
当中继从属服务器将所有更改复制到深一层的从属服务器,但是自身不需要将数据存储在
特定表中时,就可将 BLACKHOLE 用于这些表

高可用性复制

复制允许各种高可用性用例。

  • 受控切换:在硬件或系统升级期间使用副本来代替生产服务器。
  • 服务器冗余:在系统故障时执行故障转移到副本服务器。
  • 联机模式更改:在具有多个服务器的环境中执行滚动升级来避免整个系统故障。
  • 软件升级:在环境升级期间,可以跨不同版本的MySQL进行复制。

感谢

好啦,这次的分享就到这里,感谢大家看到这里

你可能感兴趣的:(mysql,数据库)