介绍
- MySQL的Replication是一种多个MySQL的数据库做主从同步的方案,特点是异步,广泛用在各种对MySQL有更高性能,更高可靠性要求的场合。与之对应的另一个技术是同步的MySQL Cluster,但因为比较复杂,使用者较少。
组复制的特点
● 高一致性
基于原生复制及 paxos 协议的组复制技术,并以插件的方式提供,提供一致数据安全保证;
● 高容错性
只要不是大多数节点坏掉就可以继续工作,有自动检测机制,当不同节点产生资源争用冲突时,不会出现错误,按照先到者优先原则进行处理,并且内置了自动化脑裂防护机制;
● 高扩展性
节点的新增和移除都是自动的,新节点加入后,会自动从其他节点上同步状态,直到新节点和其他节点保持一致,如果某节点被移除了,其他节点自动更新组信息,自动维护新的组信息;
● 高灵活性
有单主模式和多主模式,单主模式下,会自动选主,所有更新操作都在主上进行;
多主模式下,所有 server 都可以同时处理更新操作。
组夫复制的两种模式
- 组复制有单主模式和多主模式。其中单主模式是默认模式。
单主模式
- 单主模式中,只有设置为primary的节点有写入能力,其他节点是只读节点。这种模式下,集群中的primary节点出现故障时会进行重新选举的过程:
-
因为其余secondary节点没有写的能力,因此需要重新选出一个primary节点来提供服务。这个选举的过程是Paxos协议保证的。
-
现在大部分的分布式集群是基于Raft协议实现的,Raft协议只会支持单主模式的实现,因此现存的大部分分布式数据库系统,都是单点写入,即便是实现了分片,在每一个片中也只是一个节点在提供写服务。
多主模式
- 多主模式中,集群中所有的节点都可以是priamry,这样也就不存在单主模式中的选举的概念了,那么多主模式的故障处理应该是这样的:
多主模式的实现
实验环境:
server1 172.25.9.1
server3 172.25.9.3
server4 172.25.9.4
mysql版本 8.0.21
[root@server1 mysql]# mysql --version
mysql Ver 8.0.21 for Linux on x86_64 (Source distribution)
- 实验开始之前(清空数据缓存文件)
cd /data/mysql
rm -fr *
- vim /etc/my.cnf(仅仅保留最初始的配置,否则有可能初始化失败)
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/data/mysql/mysql.sock
character-set-server=utf8mb4
server-id=