当前位置: 首页 > news >正文

MySQL集群——高可用架构

目录

一、实现mysql组复制-单主模式

 1. 环境说明

 2. 环境配置

  1)master的配置

  2)从配置

  3)验证结果

二、实现mysql组复制-多主模式

 1. 修改所有的my.cnf的配置文件

 2. 在其中一台主机执行

 3. 三台主机分别执行


一、实现mysql组复制-单主模式

 1. 环境说明

主机名ip操作系统版本mysql版本
master192.168.248.136/24rhel7.9mysql8.0.40
rep1192.168.248.139/24rhel7.9mysql8.0.40
rep2192.168.248.140/24rhel7.9mysql8.0.40

  1)克隆RHEL79_mysql_master两个

  2)修改IP、主机名等

  3)三个主机均需要配置hosts文件的解析,如果不配置域名解析则需要在/etc/my.cnf中加一条配置skip-name-resolve

[root@mysql-master ~]# vim /etc/hosts
192.168.248.136 master
192.168.248.139 rep1
192.168.248.140 rep2

 2. 环境配置

  1)master的配置

# 1)修改配置文件
[root@mysql-master ~]# vim  /etc/my.cnf
添加如下内容:
[mysqld]
log_timestamps=SYSTEM  
server_id=136
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"  
gtid_mode=ON 
enforce_gtid_consistency=ON
log_bin=binlog 
log_slave_updates=ON
binlog_format=ROW 
transaction_write_set_extraction=XXHASH64  
plugin_load_add='group_replication.so' 
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"  
group_replication_start_on_boot=off 
group_replication_local_address= "192.168.248.136:33061" 
group_replication_group_seeds= "s1:33061,s2:33061,s3:33061" 
group_replication_bootstrap_group=off  
group_replication_ip_whitelist="192.168.248.0/24,127.0.0.1/8"  
group_replication_recovery_use_ssl=on 
[root@master ~]# /etc/init.d/mysqld restart# 2)在主的数据库中使用sql语句添加复制账号并授予权限,从上面也需要设置一样的账号-------
SET SQL_LOG_BIN=0;
CREATE USER rp@'%' IDENTIFIED BY '123';
GRANT REPLICATION SLAVE ON *.* TO rp@'%';
GRANT CONNECTION_ADMIN ON *.* TO rp@'%';
GRANT BACKUP_ADMIN ON *.* TO rp@'%';
GRANT GROUP_REPLICATION_STREAM ON *.* TO rp@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE REPLICATION SOURCE TO SOURCE_USER='rp', SOURCE_PASSWORD='123' FOR CHANNEL 'group_replication_recovery';# 注意:如果需要重置则使用命令reset master;# 3)查看是否有group_replication插件----------------------------------------------
mysql> show plugins;
|group_replication| ACTIVE|GROUP REPLICATION|group_replication.so|GPL|# 4)启动MGR集群----------------------------------------------------------------
# 使用当前服务器作为引导服务器启动一个新的群组复制过程或者恢复一个已经存在的群组
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION USER='rp',PASSWORD='123';
SET GLOBAL group_replication_bootstrap_group=OFF;# 在主上查看组信息
mysql> SELECT * FROM performance_schema.replication_group_members;

  2)从配置

# 1)在从上写配置文件------------------------------------------------------------
[root@master-rep1 ~]# vim /etc/my.cnf
添加如下内容:
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log_timestamps=SYSTEM
server_id=139
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
gtid_mode=ON
enforce_gtid_consistency=ON
plugin_load_add='group_replication.so'
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
group_replication_start_on_boot=off
group_replication_local_address="192.168.248.139:33061"
group_replication_group_seeds="192.168.248.136:33061,192.168.248.139:33061,192.168.248.140:33061"
group_replication_ip_whitelist="192.168.248.0/24,127.0.0.1/8"
group_replication_bootstrap_group=off
group_replication_recovery_use_ssl=on [root@master-rep1 ~]# /etc/init.d/mysqld restart[root@master-rep2 ~]# vim  /etc/my.cnf
添加如下内容:
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log_timestamps=SYSTEM
server_id=140
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
gtid_mode=ON
enforce_gtid_consistency=ON
plugin_load_add='group_replication.so'
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
group_replication_start_on_boot=off
group_replication_local_address="192.168.248.140:33061"
group_replication_group_seeds="192.168.248.136:33061,192.168.248.139:33061,192.168.248.140:33061"
group_replication_ip_whitelist="192.168.248.0/24,127.0.0.1/8"
group_replication_bootstrap_group=off
group_replication_recovery_use_ssl=on # 2)在所有从的数据库中使用sql语句添加复制账号并授予权限,从上面也需要设置一样的账号--
SET SQL_LOG_BIN=0;
CREATE USER rp@'%' IDENTIFIED BY '123';
GRANT REPLICATION SLAVE ON *.* TO rp@'%';
GRANT CONNECTION_ADMIN ON *.* TO rp@'%';
GRANT BACKUP_ADMIN ON *.* TO rp@'%';
GRANT GROUP_REPLICATION_STREAM ON *.* TO rp@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE REPLICATION SOURCE TO SOURCE_USER='rp', SOURCE_PASSWORD='123' FOR CHANNEL 'group_replication_recovery';# 3)开启组复制----------------------------------------------------------------
mysql> START GROUP_REPLICATION USER='rp', PASSWORD='123';#查看组信息
mysql> SELECT * FROM performance_schema.replication_group_members;

  3)验证结果

# 在主库节点数据库上执行--------------------------------------------------------
mysql> create database test;
mysql> use test;#必须设置主键,不然无法插入数据
mysql> create table t1(id int primary key,name char(30));
mysql> insert into t1 values (1,'xiaoming');# 在三个节点均可以查看到新增信息
mysql> select * from test.t1;
+----+----------+
| id | name     |
+----+----------+
|  1 | xiaoming |
+----+----------+# 在从节点测试写入,验证不支持写入操作---------------------------------------------
mysql> insert into test.t1 values (2,'xiaohong');
ERROR 1290 (HY000): The MySQL server is running with the --super-read-only option so it cannot execute this statement# 测试主节点宕机
mysql> stop  GROUP_REPLICATION;# 从库节点查看,发现仅剩2个节点,并且自动选举出主节点
mysql> SELECT * FROM performance_schema.replication_group_members;# 在重新选举出来的rep1上测试插入数据
mysql> insert into test.t1 values (3,'xiaohei');mysql> select * from test.t1;
+----+----------+
| id | name     |
+----+----------+
|  1 | xiaoming |
|  3 | xiaohei  |
+----+----------+# 重新启动前面的master主节点,可以看到master已经作为从节点加入到群组中
mysql> START GROUP_REPLICATION;
Query OK, 0 rows affected, 1 warning (10.73 sec)mysql> SELECT * FROM performance_schema.replication_group_members;

二、实现mysql组复制-多主模式

 1. 修改所有的my.cnf的配置文件

# 修改所有的my.cnf的配置文件,添加如下内容:
# 关闭单master模式
loose-group_replication_single_primary_mode=off# 多主一致性检查
loose-group_replication_enforce_update_everywhere_checks=ON[root@mysql-master ~]# /etc/init.d/mysqld restart

 2. 在其中一台主机执行

# 在其中一台主机里面执行以下mysql命令
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;#在另外两台主机里面执行以下mysql命令,开启组复制
mysql> START GROUP_REPLICATION;
mysql> SELECT * FROM performance_schema.replication_group_members;

 3. 三台主机分别执行

# 在三个主机上面分别执行以下三条命令测试是否都可以执行写入操作
mysql> insert test.t1 values (4,'xiaolan');
mysql> insert test.t1 values ('5','xiaozi');
mysql> insert test.t1 values (6,'xiaohei');
mysql> select * from test.t1;
+----+----------+
| id | name     |
+----+----------+
|  1 | xiaoming |
|  3 | xiaohei  |
|  4 | xiaolan  |
|  5 | xiaozi   |
|  6 | xiaohei  |
+----+----------+


文章转载自:

http://ky0rCmHN.yxnkr.cn
http://Vwrvgf9G.yxnkr.cn
http://ScxAjKkd.yxnkr.cn
http://ndLiHdaE.yxnkr.cn
http://FD7lxlAK.yxnkr.cn
http://G58pvVcy.yxnkr.cn
http://eSADNLuB.yxnkr.cn
http://uXCNhYSu.yxnkr.cn
http://3oc025V4.yxnkr.cn
http://xOF0YGuF.yxnkr.cn
http://Fk92AFDy.yxnkr.cn
http://1AQMFFXx.yxnkr.cn
http://W5oZjZis.yxnkr.cn
http://fbNlZXL9.yxnkr.cn
http://ziPR3Vcc.yxnkr.cn
http://dWHBCqE8.yxnkr.cn
http://5Abe4miJ.yxnkr.cn
http://cPJ3UUuI.yxnkr.cn
http://GT3RpPy1.yxnkr.cn
http://7H4KwiZk.yxnkr.cn
http://touCdZZM.yxnkr.cn
http://nLSBL1uh.yxnkr.cn
http://7Kh2ek2h.yxnkr.cn
http://qu92B8r2.yxnkr.cn
http://dlYH5uvD.yxnkr.cn
http://9NqfL5c8.yxnkr.cn
http://ufA0nM16.yxnkr.cn
http://GRLLWcEi.yxnkr.cn
http://lqtlPONw.yxnkr.cn
http://4TKKg7RR.yxnkr.cn
http://www.dtcms.com/a/369348.html

相关文章:

  • 记录自己看过的电子书方法
  • Typer 命令行工具使用示例
  • 绿算技术与清智图灵签署战略合作协议
  • AI配音工具哪个好用?7款热门配音软件推荐指南!
  • 【关系型数据库SQL】MySql数据库基础学习(一)
  • 软考刷题真题app,软考真题题库推荐
  • 25高教社杯数模国赛【B题高质量成品论文+无盲点解析】第一弹
  • CAD【xplode】和【explode】功能的区别
  • MOSFET SOA曲线评估
  • 《计算机网络安全》实验报告一 现代网络安全挑战 拒绝服务与分布式拒绝服务攻击的演变与防御策略(3)
  • c++ 压缩与解压缩
  • 代码改变生活:我用Python+LLM给自己写了个健身私教
  • python创建并写入excel文件
  • Anaconda下载安装及详细配置的保姆级教程【Windows系统】
  • 【休闲娱乐】“无用”之大用——会玩,是成年人的顶级能力
  • 【leetcode】77.组合
  • 【算法--链表】82.删除排序链表中的重复元素 II--通俗讲解
  • 【CMake】变量作用域1——块作用域
  • 你的提问方式错了!让AI生成高质量实验方案的秘诀
  • Java第十四幕集合啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦
  • VS2022运行openCV报错:应用程序无法正常启动(0xc000279)
  • 敏捷开发-Scrum(下)
  • 【CAN通信】AUTOSAR架构下TC3xx芯片是如何将一帧CAN报文接收上来的
  • 为什么外网主机可以telnet通内网nginx端口,但是http请求失败?
  • Java-面试八股文-并发编程篇
  • Vue CLI 环境变量和文件加载规则.env文件
  • JS网站测压代码
  • 前端笔记:基于Dialog自定义实现类似抽屉效果
  • 分片上传-
  • 在复杂工况中,天硕工业级SSD固态硬盘是如何保障数据安全的?