企业级Mysql数据库集群--Mysql全同步复制

组复制

组复制是一种可用于实现容错系统的技术。 复制组是一个通过消息传递相互交互的 server 集群。通信层提供了原子消息(atomic
message)和完全有序信息交互等保障机制,实现了基于复制协议的多主更新复制组由多个 server成员构成,并且组中的每个 server成员可以独立地执行事务。但所有读写(RW)事务只有在冲突检测成功后才会提交。只读(RO)事务不需要在冲突检测,可以立即提交。对于任何 (RW )事务,提交操作并不是由始发 server 单向决定的,而是由组来决定是否提交。准确地说,在始发 server上,当事务准备好提交时,该server会广播写入值(已改变的行)和对应的写入集(已更新的行的唯一标识符)。然后会为该事务建立一个全局的顺序。最终,这意味着所有server成员以相同的顺序接收同一组事务
因此,所有 server 成员以相同的顺序应用相同的更改,以确保组内一致

MySQL组复制是Mysql 5.7.17开始引入的新功能,为主从复制实现高可用功能

它支持单主模型和多主模型两种工作方式(默认是单主模型)

单主模型:从复制组中众多个Mysql节点中自动选举一个master节点,只有master节点可以写,其他节点自动设置为read only

当master节点故障时,会自动选举一个新的master节点,选举成功后,它将设置为可写,其他slave将指向这个新的master

多主模型:复制组中的任何一个节点都可以写,因此没有master和slave的概念

只要突然故障的节点数量不太多,这个多主模型就能继续可用

Mysql 组复制提供了高可用性,高弹性,可靠的 Myaql 服务

但是组复制的效率很低

当master节点写数据的时候,会等待所有的slave节点完成数据的复制,然后才继续往下进行

组复制的每一个节点都可能是slave

环境

ip:172.25.30.1/24
server1

ip:172.25.30.2/24
server2

ip:172.25.30.3/24
server3

server1、server2、server3、安装Mysqld服务

操作流程

组复制,互相为master和slave 相当于一个集群,都可以作为master和slave只需要在一个上面开启组复制即可,大家都是master

server1

vim /etc/mysql.cnf

server_id=1

第一个节点

gtid_mode=ON

gtid模块

enforce_gtid_consistency=ON

master_info_repository=TABLE

relay_log_info_repository=TABLE

binlog_checksum=NONE

关闭binlog校验

log_slave_updates=ON

log_bin=binlog

binlog_format=ROW

组复制依赖基于行的复制格式

transaction_write_set_extraction=XXHASH64

loose-group_replication_group_name="系统生成的uuid"(cat/var/lib/mysql/auto.cnf)

loose-group_replication_start_on_boot=off

loose-group_replication_local_address= "172.25.30.1:3306"

当前节点的ip

loose-group_replication_group_seeds="172.25.30.1:3306,172.25.30.2:3306,172.25.30.3:3306"

loose-group_replication_bootstrap_group=off

插件是否自动引导,这个选项一般都要off掉,只需要由发起组复制的节点开启,并只启动一次,如果是on,下次再启动时,会生成一个同名的组,可能会发生脑裂

loose-group_replication_ip_whitelist="127.0.0.1,172.25.30.0/24"

loose-group_replication_enforce_update_everywhere_checks=ON

loose-group_replication_single_primary_mode=OFF

开启多主模式的参数

systemctl start mysqld

grep password /var/log/mysqld.log

mysql -uroot -p*

alter user root@localhost identified by 'Wps+123ld';

修改密码

SET SQL_LOG_BIN=0

关闭二进制日志

CREATE USER rpl_user@'%' IDENTIFIED BY 'Wps+123ld';

创建用户

GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';

用户授权

FLUSH PRIVILEGES;

刷新用户授权表

SET SQL_LOG_BIN=1;

开启二进制日志

CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='Wps+123ld' FOR CHANNEL 'group_replication_recovery';

配置用户

INSTALL PLUGIN group_replication SONAME 'group_replication.so';

安装组复制插件

SET GLOBAL group_replication_bootstrap_group=ON;

在第一个节点上要先打开一次

START GROUP_REPLICATION;

开启组复制

SET GLOBAL group_replication_bootstrap_group=OFF;

关闭组复制激活

SELECT * FROM performance_schema.replication_group_members;

查看组的状态,当前只有一个节点在线

CREATE DATABASE test;

创建库

USE test;

进入库

CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 TEXT NOT NULL);

INSERT INTO t1 VALUES (1, 'Luis');

插入数据

SELECT * FROM t1;

查看数据

在这里插入图片描述

/etc/my.cnf配置文件,使用scp /etc/my.cnf root@172.25.30.2:/etc

scp /etc/my.cnf root@172.25.30.3:/etc

给server2和server3传送my.cnf的配置文件

server2

vim /etc/my.cnf

只需要修改server_id等于2,local_address=172.25.30.2(本机ip)即可

systemctl start mysqld

grep password /var/log/mysqld.log

mysql -uroot -p*

alter user root@localhost identified by 'Wps+123ld';

SET SQL_LOG_BIN=0;

CREATE USER rpl_user@'%' IDENTIFIED BY 'Wps+123ld';

GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';

FLUSH PRIVILEGES;

SET SQL_LOG_BIN=1;

CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='Wps+123ld' FOR CHANNEL 'group_replication_recovery';

INSTALL PLUGIN group_replication SONAME 'group_replication.so';

set global group_replication_allow_local_disjoint_gtids_join=on;

START GROUP_REPLICATION;

server3

vim /etc/my.cnf

只需要修改server_id等于3,local_address=172.25.30.3(本机ip)即可

systemctl start mysqld

grep password /var/log/mysqld.log

mysql -uroot -p*

alter user root@localhost identified by 'Wps+123ld';

SET SQL_LOG_BIN=0;

CREATE USER rpl_user@'%' IDENTIFIED BY 'Wps+123ld';

GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';

FLUSH PRIVILEGES;

SET SQL_LOG_BIN=1;

CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='Wps+123ld' FOR CHANNEL 'group_replication_recovery';

INSTALL PLUGIN group_replication SONAME 'group_replication.so';

set global group_replication_allow_local_disjoint_gtids_join=on;

START GROUP_REPLICATION;

测试

server1

mysql -uroot -p*

SELECT * FROM performance_schema.replication_group_members;

查看三台server是否同时在线

server2

mysql -uroot -p*

insert into t1 valuse(2,'westos');

select * from t1;

在这里插入图片描述

server1 与 server3

mysql -uroot -p*

select * from t1;

在这里插入图片描述

组复制同步完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MySQL是一种流行的关系型数据库管理系统,它是由瑞典MySQL AB公司开发的,现在被Oracle公司拥有和维护。MySQL被广泛用于Web应用程序的数据存储和管理,也被用于处理大型数据集和高并发负载。MySQL支持多种操作系统,包括Windows、Linux、Unix等。 MySQL的主要优点包括: 1. 可靠性:MySQL被广泛使用,它已经被证明是一个非常可靠和稳定的数据库管理系统。 2. 可扩展性:MySQL可以轻松地扩展到支持更多的用户和更大的数据集。 3. 性能:MySQL是一个快速的数据库管理系统,它可以处理高并发负载,并且可以在短时间内处理大量数据。 4. 开源:MySQL是一个开源的数据库管理系统,这意味着用户可以自由地使用、修改和分发MySQL。 5. 易于使用:MySQL提供了一个易于使用的命令行界面和基于Web的管理工具,可以帮助用户轻松地管理和维护他们的数据库。 总的来说,MySQL是一种功能强大、可靠、可扩展和易于使用的数据库管理系统,它被广泛应用于各种Web应用程序和大型数据集的处理。 ### 回答2: MySql数据库是一种功能强大、灵活性高的关系型数据库管理系统。它是由瑞典MySQL AB公司开发的,后来被Oracle公司收购。 MySQL数据库具有以下特点: 1. 开源性:MySQL是一种免费的开源数据库系统,吸引了大量的开发者进行研究和改进。开放的开发模式使MySQL的性能、安性和稳定性得到了不断的提升。 2. 简单易用:MySQL使用的是结构化查询语言(SQL),这种语言的语法规则简单易懂,使得开发人员可以快速上手。同时,MySQL还提供了图形界面工具,使得数据库的管理和维护更加简单方便。 3. 跨平台性:MySQL可以在多种操作系统上运行,包括Windows、Linux、Unix等。这意味着开发人员可以在不同的平台上运行相同的数据库并保持数据一致性。 4. 高性能:MySQL具有优秀的性能表现,可以处理大量的并发请求。它支持内存表和索引,这使得数据库查询的速度更快。此外,MySQL还支持数据的压缩和分区功能,有助于提高查询和存储效率。 5. 可扩展性:MySQL可以轻松地扩展以适应不断增长的数据需求。它支持主从复制集群部署,可以将负载分布到多个服务器上,提高数据库的处理能力和可用性。 6. 安性:MySQL提供了多种安机制,包括数据加密、用户权限管理、防止SQL注入等功能。这些功能有助于保护数据库中的数据不被非法访问或篡改。 MySQL数据库在Web应用开发中被广泛使用,它为开发人员提供了一个可靠、高效的数据存储和管理解决方案。从个人网站到大型企业应用都可以选择MySQL作为数据库的首选。 ### 回答3: MySQL数据库是一个开源的关系型数据库管理系统,广泛应用于互联网应用和Web开发领域。MySQL支持跨平台,可以安装在多种操作系统上,并提供了多种编程语言的API接口,如C、C++、Java和Python等。它具有良好的性能、稳定性和安性,被许多大型网站、企业和组织所采用。 MySQL提供了多种存储引擎,可以根据实际需要灵活选择,其中最常用的引擎是InnoDB。InnoDB引擎支持事务处理和ACID特性,保证数据的一致性和可靠性。此外,MySQL还支持主从复制集群部署,实现数据的高可用性和负载均衡。 MySQL具有简单易用的特点,用户可以通过命令行工具或图形化界面管理数据库。它提供了丰富的SQL语法和查询优化功能,可以快速高效地处理大量的数据。此外,MySQL还支持存储过程、触发器和事件等高级功能,方便用户进行复杂的数据处理和业务逻辑操作。 MySQL数据库还提供了可靠的安机制,包括用户权限管理、加密数据传输和数据备份等功能,保护数据库的安性和完整性。同时,MySQL还支持扩展性,可以通过添加更多的服务器节点来扩展数据库的处理能力,满足不断增长的数据存储需求。 总之,MySQL数据库是一款功能强大、性能优越、易用且灵活的关系型数据库管理系统,广泛应用于各个领域,是开发者首选的数据库之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值