- 什么是复制(Replication)
- MySQL复制架构
- 感谢 💖
什么是复制(Replication)
复制技术是MySQL高级特性的基础。它可以将数据从一个 MySQL 实例复制到另一个实例,从而实现数据的同步和备份。
MySQL复制架构
以下是MySQL复制架构的基本组成部分和工作原理:
- 主服务器 (master) 将所有数据和结构更改记录到二进制日志中。
- 数据更改就是DML执行的更改,而数据结构就是数据字典的更改。
- 二进制日志是一种二进制格式的日志文件,记录了数据库中发生的所有重要更改,包括插入、更新、删除等操作,以及数据库结构的更改。
- 二进制日志的格式可以是基于语句的(Statement-Based)、基于行的(Row-Based)或混合的(Mixed-Based),具体的格式由 MySQL 配置中的 binlog_format 参数决定。不同的格式适用于不同的使用情景,可以在配置文件中进行设置。
- 从属服务器 (slave) 从主服务器请求二进制日志并在本地应用其内容。
- 从属服务器是主服务器的副本,它们用于复制主服务器上的数据和结构更改。
- 主服务器将二进制日志的内容发送给从属服务器,从属服务器将这些事件应用到自己的数据库中,以保持与主服务器的数据同步。
- 从属服务器还记录了每个事件的状态,以便在发生服务器重启、网络故障或其他故障情况时,可以从停止的位置继续复制,而不必重新复制所有数据。
- 复制线程:从属服务器上运行的复制线程负责连接到主服务器并请求二进制日志,然后将事件应用到本地数据库。复制线程会维护复制的状态,以便在发生故障或中断时可以从停止的位置继续复制。
- 复制拓扑:MySQL复制支持多种复制拓扑,包括一对多关系、中继从属服务器、双向复制、循环复制和多源复制等。这些拓扑允许数据更改在多个服务器之间传播,以满足不同的需求。
-
一对多关系:一个主服务器可以将日志传送给许多从属服务器。每个从属服务器从一个主服务器读取日志。
-
中继从属服务器:一个中继从属服务器及时上一级的slave,又是下一级的master。在这种情况下,主服务器的更改会传播到更多的从属服务器。
-
更复杂的拓扑:
- 双向 (bi-directional) 拓扑具有两个主服务器,每个主服务器是另一个主服务器的从属服务器。双向拓扑也是一种循环拓扑。第一个服务器上的更改会复制到第二个服务器上,同理第二个服务器的更改也会复制到第一个服务器上。
- 循环 (circular) 拓扑具有任意数量的服务器。每个服务器是一个主服务器并且是另一个主服务器的从属服务器。对任何主服务器的更改将复制到所有主服务器。
- 多源 (Multisource) 复制允许一个从属服务器接收来自多个主服务器的事务。
-
整个复制的过程简单来说就是:主服务器中有一个转储线程,它把二进制日志发送给从属服务器,从属服务器的IO线程就会将二进制日志收集起来重新生成一个二进制日志,叫做中继日志,接着sql线程就会实施应用。
感谢 💖
好啦,这次的分享就到这里,感谢大家看到这里🤞