首页 > 数据库 > MySQL > 正文

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

2024-07-24 12:32:27
字体:
来源:转载
供稿:网友
        我在解决方案团队工作多年,发现数据库复制总是被误解,甚至有些人根本完全不理解,所以本文将来回顾一下MySQL环境中的复制概念,并且澄清一些大家对于复制的误解。
 
        什么是复制?
 
        复制:保证信息被复制并有目的地填充到另一个环境中,而不是仅存储在一个位置(基于源环境的事务)。如果更白话一点来说就是在您的基础架构上使用辅助服务器来读取或使用其他管理解决方案。
 
        如果我们把范围缩小到MySQL中,那么在复制时我们有几种选择呢?
 
        标准异步复制
 
        异步复制意味着事务完全在本地环境中完成,并且不受复制从属本身的影响。完成更改后,主服务器将使用数据修改或实际语句(基于行的复制或基于语句的复制之间的差异会在之后讲)填充二进制日志。此转储线程读取二进制日志并将其发送到从IO线程。从站使用其IO线程将其置于自己的预处理队列(称为中继日志)中。从站使用SQL线程执行从站数据库上的每个更改。
 
需要注意的是,半同步复制可确保主服务器等待继续处理特定会话中的事务,直到至少有一个从服务器确认接收到事务(或达到超时)。这与异步复制不同,因为半同步允许额外的数据完整性。
 
请记住,半同步复制会影响性能,因为它需要等待来自从站的实际ACK的往返。
 
组复制
 
这是MySQL Community Edition 5.7中引入的新概念,并且在MySQL 5.7.17中进行了GA。这是一个用于虚拟同步复制的新插件。
 
每当在节点上执行事务时,插件都会尝试与其他节点达成共识,然后再将其返回给客户端。 虽然与标准MySQL复制相比,该解决方案是完全不同的概念,但它基于使用binlog生成和处理日志事件。
 
以下是组复制的示例体系结构。

(编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表