mysql组复制

MySQL组复制是一种实现容错系统的技术,确保集群中所有server以相同顺序应用相同更改,保持组内一致。配置包括创建复制用户,更改配置文件,启动组复制,并通过CHANGE MASTER TO语句连接各个server。在配置完成后,对一个节点的操作会同步到所有其他节点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql组复制

组复制是一种可用于实现容错系统的技术。 复制组是一个通过消息传递相互交互的 server 集群。通信层提供了原子消息(atomic message)和完全有序信息交互等保障机制,实现了基于复制协议的多主更新,复制组由多个 server成员构成,并且组中的每个 server 成员可以独立地执行事务。但所有读写(RW)事务只有在冲突检测成功后才会提交。只读(RO)事务不需要在冲突检测,可以立即提交。句话说,对于任何 RW 事务,提交操作并不是由始发 server 单向决定的,而是由组来决定是否提交。准确地说,在始发 server 上,当事务准备好提交时,该 server 会广播写入值(已改变的行)和对应的写入集(已更新的行的唯一标识符)。然后会为该事务建立一个全局的顺序。最终,这意味着所有 server 成员以相同的顺序接收同一组事务。因此,所有 server 成员以相同的顺序应用相同的更改,以确保组内一致。
实验主机:
Server1—->172.25.25.1
Server2—->172.25.25.2
Server3—->172.25.25.3
根据 MySQL 组复制要求更改配置文件/etc/my.cnf
以server1为例,其他两个一样,只是id号与local_address不同,id号不要冲突,local_address为本机ip地址

[root@server1 ~]# vim /etc/my.cnf
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW
##组复制设置
transaction_write_set_extraction=XXHASH64  #指示Server必须为每个事务收集写集合,并使用XXHASH64哈希算法将其编码为散列
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"#表示将加入或者创建的复制组命名为aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,可以自己指定
loose-group_replication_start_on_boot=off  #插件在 server 启动时不自动启动组复制
loose-group_replication_local_address= "172.25.25.1:24901"#绑定本地的172.25.25.1以及25901端口接受其他组成员的连接,IP地址必须为其他组成员可正常访问
loose-group_replication_group_seeds="172.25.1:24901,172.25.25.2:24901,172.25.25.3:24901" #本行为告诉服务器当服务器加入组时,应当连接到172.25.25.1:24901,172.25.25.2:24901,172.25.25.3:24901这些种子服务器进行配置。本设置可以不是全部的组成员服务地址
loose-group_replication_bootstrap_group= off#配置是否自动引导组
loose-group_replication_ip_whitelist=”172.25.25.0/24,127.0.0.1/8#开启白名单,认情况下只允许白名单连接到复制组,如果是其他IP则需要配置。
loose-group_replication_single_primary_mode=off#设置组自动选择一个 server 来处理读/写工作。 这个 server 是主(PRIMARY),所有其他的都是从
loose-group_replication_update_everywhere_checks=on

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

这里写图片描述
配置数据库
在其中一个节点,如Server3上
更改数据库密码
这里写图片描述
创建具有 REPLICATION-SLAVE 权限的 MySQL 用户。 此操作不应记录到二进制日志中,
避免将更改传递到其他 server
这里写图片描述
用户进行上述配置后,需要使用 CHANGE MASTER TO 语句将 server 配置为,在下次需要从其他成员恢复其状态时,使用 group_replication_recovery 复制通道的给定凭据
启动组复制
配置并启动 server s1后,安装组复制插件
这里写图片描述
要检查插件已成功安装
这里写图片描述
要启动组,请指示 server s1 引导组,然后启动组复制程序。 此引导应仅由单个 sever 独立完成,该 server 启动组并且只启动一次。如果将其保存在配置文件中,则在重新启动时,server 会自动引导具有相同名称的第二个组。 这将导致两个不同的组具有相同的名称。 同样的道理适用于停止和重新启动插件,并且此选项设置为 ON。
这里写图片描述
查看,显示为online则配置成功,检查该组现在是否已创
建并且其中已经有一个成员
这里写图片描述

其他两个主机(server1,server2)与server3的过程类似,在配置文件就位的情况下启动 server
Server2
这里写图片描述
这里写图片描述
装组复制插件,并启动将 server 加入组的程序
与之前的步骤不同,这里与 s1 上执行的那些步骤有一个区别
就是不执行 SET GLOBAL group_replication_bootstrap_group = ON 的操作; 在启动组复制之前,因为该组已由 server s1创建和引导。 此时,server s2 只需要添加到已经存在的组中
这里写图片描述
检查该组现在是否已创建并且其中已经加入一个成员
这里写图片描述
Server1
与server2 的配置完全一样
这里写图片描述
这里写图片描述
这里写图片描述
查看server1已加入组且已与组中的其他 server 成员同步
这里写图片描述
测试
在其中一个节点上操作数据库,其他两个节点都会同步到
如在server3上操作数据库
这里写图片描述
server2查看
这里写图片描述
server1查看
这里写图片描述
在server1或server2上操作数据库,同样也会同步到其余两个主机上面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值