MySQL 8.0.42创建MGR集群

概述

关于MySQL MGR集群的介绍就不在这里做详细的介绍了,大家可以自己到官网上查看阅读。在这里主要是实际操作方面的内容

总体结构设计如下图
在这里插入图片描述

服务器节点信息

序号角色IP地址数据库端口MGR端口
1主节点192.168.56.104330910061
2从节点192.168.56.105330910061
3从节点192.168.56.106330910061

my.cnf配置

节点1

[mysqld]
##basic settings###
server-id=104
port = 3309
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
skip-name-resolve
max_connections=1000
max_user_connections=800
max_allowed_packet=512M
max_connect_errors=100000
datadir = /usr/local/mysql/data
socket = /usr/local/mysql/data/mysql.sock
pid_file = /usr/local/mysql/data/mysql.pid
transaction_isolation = READ-COMMITTED
lower_case_table_names=1
default_time_zone =+8:00
open_files_limit=65535
log_timestamps=system
wait_timeout=900
interactive_timeout=900##innodb setting##
innodb_buffer_pool_size = 256M
innodb_buffer_pool_instances = 1
innodb_io_capacity=2000
innodb_flush_method=O_DIRECT
innodb_flush_neighbors=0
innodb_flush_log_at_trx_commit = 1
innodb_print_all_deadlocks = 1
innodb_online_alter_log_max_size=128M
innodb_lock_wait_timeout=10
innodb_file_per_table=ON
innodb_doublewrite=ON##log settings##
log-error = /usr/local/mysql/data/error.log
log-bin = /usr/local/mysql/data/mysql_bin.log
slow_query_log = 1
slow_query_log_file = /usr/local/mysql/data/mysql_slow_query.log
long_query_time = 10##replication settings##
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1000
relay_log_recovery = 1
relay-log=/usr/local/mysql/data/relay-bin#binlog
log_bin=/usr/local/mysql/data/binlog
#expire_logs_days=10  #MySQL 5.7版本
binlog_expire_logs_seconds = 604800 # 保留7天
max_binlog_cache_size=200M
sync_binlog=1##MGR settings
binlog_checksum = NONE
log_replica_updates = ON
binlog_format=rowplugin_load_add='group_replication.so'
#transaction_write_set_extraction ='XXHASH64'
#loose-group_replication_group_name = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
#loose-group_replication_start_on_boot = off
#loose-group_replication_local_address = '192.168.56.104:10061'
#loose-group_replication_group_seeds ='192.168.56.104:10061,192.168.56.105:10061,192.168.56.106:10061'
#loose-group_replication_bootstrap_group = off
#loose-group_replication_ip_whitelist = '192.168.56.104/24,192.168.56.105/24,192.168.56.106/24'
#loose-group_replication_member_weight=50
#loose-group_replication_single_primary_mode=ON
#loose-group_replication_enforce_update_everywhere_checks=OFF  ###单主模式关闭,多主模式开启[client]
port = 3309
socket = /usr/local/mysql/data/mysql.sock

节点2

[mysqld]
##basic settings###
server-id=105
port = 3309
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
skip-name-resolve
max_connections=1000
max_user_connections=800
max_allowed_packet=512M
max_connect_errors=100000
datadir = /usr/local/mysql/data
socket = /usr/local/mysql/data/mysql.sock
pid_file = /usr/local/mysql/data/mysql.pid
transaction_isolation = READ-COMMITTED
lower_case_table_names=1
default_time_zone =+8:00
open_files_limit=65535
log_timestamps=system
wait_timeout=900
interactive_timeout=900##innodb setting##
innodb_buffer_pool_size = 256M
innodb_buffer_pool_instances = 1
innodb_io_capacity=2000
innodb_flush_method=O_DIRECT
innodb_flush_neighbors=0
innodb_flush_log_at_trx_commit = 1
innodb_print_all_deadlocks = 1
innodb_online_alter_log_max_size=128M
innodb_lock_wait_timeout=10
innodb_file_per_table=ON
innodb_doublewrite=ON##log settings##
log-error = /usr/local/mysql/data/error.log
log-bin = /usr/local/mysql/data/mysql_bin.log
slow_query_log = 1
slow_query_log_file = /usr/local/mysql/data/mysql_slow_query.log
long_query_time = 10##replication settings##
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1000
relay_log_recovery = 1
relay-log=/usr/local/mysql/data/relay-bin#binlog
log_bin=/usr/local/mysql/data/binlog
#expire_logs_days=10  #MySQL 5.7版本
binlog_expire_logs_seconds = 604800 # 保留7天
max_binlog_cache_size=200M
sync_binlog=1##MGR settings
binlog_checksum = NONE
log_replica_updates = ON
binlog_format=rowplugin_load_add='group_replication.so'
#transaction_write_set_extraction ='XXHASH64'
#loose-group_replication_group_name = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
#loose-group_replication_start_on_boot = off
#loose-group_replication_local_address = '192.168.56.105:10061'
#loose-group_replication_group_seeds ='192.168.56.104:10061,192.168.56.105:10061,192.168.56.106:10061'
#loose-group_replication_bootstrap_group = off
#loose-group_replication_ip_whitelist = '192.168.56.104/24,192.168.56.105/24,192.168.56.106/24'
#loose-group_replication_member_weight=50
#loose-group_replication_single_primary_mode=ON
#loose-group_replication_enforce_update_everywhere_checks=OFF  ###单主模式关闭,多主模式开启[client]
port = 3309
socket = /usr/local/mysql/data/mysql.sock

节点3

[mysqld]
##basic settings###
server-id=106
port = 3309
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
skip-name-resolve
max_connections=1000
max_user_connections=800
max_allowed_packet=512M
max_connect_errors=100000
datadir = /usr/local/mysql/data
socket = /usr/local/mysql/data/mysql.sock
pid_file = /usr/local/mysql/data/mysql.pid
transaction_isolation = READ-COMMITTED
lower_case_table_names=1
default_time_zone =+8:00
open_files_limit=65535
log_timestamps=system
wait_timeout=900
interactive_timeout=900##innodb setting##
innodb_buffer_pool_size = 256M
innodb_buffer_pool_instances = 1
innodb_io_capacity=2000
innodb_flush_method=O_DIRECT
innodb_flush_neighbors=0
innodb_flush_log_at_trx_commit = 1
innodb_print_all_deadlocks = 1
innodb_online_alter_log_max_size=128M
innodb_lock_wait_timeout=10
innodb_file_per_table=ON
innodb_doublewrite=ON##log settings##
log-error = /usr/local/mysql/data/error.log
log-bin = /usr/local/mysql/data/mysql_bin.log
slow_query_log = 1
slow_query_log_file = /usr/local/mysql/data/mysql_slow_query.log
long_query_time = 10##replication settings##
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1000
relay_log_recovery = 1
relay-log=/usr/local/mysql/data/relay-bin#binlog
log_bin=/usr/local/mysql/data/binlog
#expire_logs_days=10  #MySQL 5.7版本
binlog_expire_logs_seconds = 604800 # 保留7天
max_binlog_cache_size=200M
sync_binlog=1##MGR settings
binlog_checksum = NONE
log_replica_updates = ON
binlog_format=rowplugin_load_add='group_replication.so'
#transaction_write_set_extraction ='XXHASH64'
#loose-group_replication_group_name = 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
#loose-group_replication_start_on_boot = off
#loose-group_replication_local_address = '192.168.56.106:10061'
#loose-group_replication_group_seeds ='192.168.56.104:10061,192.168.56.105:10061,192.168.56.106:10061'
#loose-group_replication_bootstrap_group = off
#loose-group_replication_ip_whitelist = '192.168.56.104/24,192.168.56.105/24,192.168.56.106/24'
#loose-group_replication_member_weight=50
#loose-group_replication_single_primary_mode=ON
#loose-group_replication_enforce_update_everywhere_checks=OFF  ###单主模式关闭,多主模式开启[client]
port = 3309
socket = /usr/local/mysql/data/mysql.sock

三个节点的配置参数只是server-id和loose-group_replication_local_address不一样。在初始化的时候先注释掉mgr相关的参数,否则会提示ERROR,待初始化完成之后在取消注释

初始化数据库

所有节点

# 初始化数据目录
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/usr/local/mysql # 生成的临时密码会显示在终端,务必记录!
cat /usr/local/mysql/data/error.log # 启动关闭数据库
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
/usr/local/mysql/bin/mysqladmin -uroot -p123456 --socket=/usr/local/mysql/data/mysql.sock shutdown &# 修改初始密码
/usr/local/mysql/bin/mysql -uroot -p 
alter user 'root'@'localhost' identified WITH mysql_native_password by '123456';
flush privileges;

配置MGR

节点1
#创建 MGR 同步用户

SET SQL_LOG_BIN=0;
CREATE USER 'rpl_user'@'%' IDENTIFIED WITH mysql_native_password BY 'rpl_pass';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
select host,user,plugin from mysql.user;reset master;
change master tomaster_user='rpl_user',master_password='rpl_pass'for channel 'group_replication_recovery';

#查看确认 MGR 组件

#install plugin group_replication soname 'group_replication.so';
show plugins;

#启动MGR复制组

set global group_replication_bootstrap_group=on;
start group_replication;
set global group_replication_bootstrap_group=off;select * from performance_schema.replication_group_members;###查看读写属性
select @@read_only, @@super_read_only;

节点2
#创建 MGR 同步用户

SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%' IDENTIFIED WITH mysql_native_password BY 'rpl_pass';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
select host,user,plugin from mysql.user;reset master;
change master tomaster_user='rpl_user',master_password='rpl_pass'for channel 'group_replication_recovery';###启动 MGR 复制组
start group_replication;select * from performance_schema.replication_group_members;###查看读写属性
select @@read_only, @@super_read_only;

节点3
#创建 MGR 同步用户

SET SQL_LOG_BIN=0;
CREATE USER rpl_user@'%' IDENTIFIED WITH mysql_native_password BY 'rpl_pass';
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
select host,user,plugin from mysql.user;reset master;
change master tomaster_user='rpl_user',master_password='rpl_pass'for channel 'group_replication_recovery';###启动 MGR 复制组
start group_replication;select * from performance_schema.replication_group_members;###查看读写属性
select @@read_only, @@super_read_only;

结果

mysql> select * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 62f03723-6ade-11f0-8bc8-080027859595 | mgrser1     |        3309 | ONLINE       | PRIMARY     | 8.0.42         | XCom                       |
| group_replication_applier | 6afd9b46-6adf-11f0-88b8-080027238cc1 | mgrser2     |        3309 | ONLINE       | SECONDARY   | 8.0.42         | XCom                       |
| group_replication_applier | db344a82-6adf-11f0-ae5d-0800275e0275 | mgrser3     |        3309 | ONLINE       | SECONDARY   | 8.0.42         | XCom                       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.00 sec)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/91042.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91042.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/91042.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Go Web编程实战派--从入门到精通》的随笔笔记

第二章 Go Web 开发基础2.1第一个Go Web 程序package mainimport ("fmt""net/http" )func hello(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "Hello World") } func main() {server : &http.Server{Addr: "0.0.0.0:80&q…

MySQL在Linux环境下的性能调优

📊 MySQL性能基准测试:知己知彼建立性能基线的关键指标# 核心性能指标监控脚本 #!/bin/bash echo " MySQL Performance Baseline " mysql -e "SHOW GLOBAL STATUS LIKE Questions;" mysql -e "SHOW GLOBAL STATUS LIKE Uptime;…

PyQt事件处理机制深度指南:超越信号与槽的底层掌控

—— 5大核心策略实战案例,解锁GUI交互的底层密码 🔍 事件与信号槽的本质差异维度事件处理机制信号与槽机制抽象层级操作系统消息的原始封装对事件的高级封装应用场景控件行为定制/底层交互常规业务逻辑绑定执行顺序先于信号槽触发在事件处理完成后触发性…

10_opencv_分离颜色通道、多通道图像混合

split() 通道分离 void cv::split(const Mat & src,Mat * mvbegin ) merge() 通道合并 void cv::merge(InputArrayOfArrays mv,OutputArray dst ) Mat::at()方法 Mat::at()方法返回一个引用到指定的数组元素。 注意是引用,相当于两者等价,也就是…

Kotlin的datetime库

kotlinx 是一组不是 Kotlin 标准库一部分,但非常实用的扩展项目集合。其中,kotlinx-datetime 是一个跨平台的 Kotlin 时间日期处理库。 如何在项目中使用该库 Gradle 项目中 在 repositories 块中添加 Maven Central 仓库: repositories {…

基于模型蒸馏的大模型文案生成最佳实践

背景 大语言模型在生成高质量文案方面表现优异,然而其巨大的计算资源消耗和存储需求,使得实际应用尤其是在资源受限场景中的应用充满挑战。企业在寻求高效的文案生成时,常常面临着在性能和资源之间权衡的困境。在这种背景下,模型…

调用通义千问大模型实现流式对话

前言 我使用的是硅基流动中通义千问免费的大模型:我的技术栈使用的 Next14.2 全栈框架。 代码结构 需要使用的库: npm i ai openai目录结构: 基础测试页面 test-openai/page.tsx: use client;import { useChat } from ai/react;ex…

如何搭建Linux环境下的flink本地集群

第一步,搭建Linux环境 这里我使用的是 WSL2 安装前,先用管理员打开终端,执行以下三条命令,目的是开启安装 WSL2所需要的环境 //开启适用于windows的Linux子系统 dism.exe /online /enable-feature /featurename:Microsoft-Wind…

算法:链表part02:24. 两两交换链表中的节点 + 19. 删除链表的倒数第 N 个结点 + 面试题 02.07. 链表相交

24. 两两交换链表中的节点题目:https://leetcode.cn/problems/swap-nodes-in-pairs/description/ 讲解:https://programmercarl.com/0024.%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.html 复习可以先…

【Linux学习】(11)进程的概念

前言在上一章我们知道了什么是进程,并简单了解了PCB。 本文我们将继续深入学习进程概念相关知识点: 学习进程状态,学会创建进程,掌握僵尸进程和孤儿进程,及其形成原因和危害了解进程调度,Linux进程优先级&a…

UniappDay04

1.登录模块-小程序快捷登录定义接口,封装 import { http } from /utils/httptype loginParams {code: stringencryptedData: stringiv: string } export const postLoginWxMinAPI (data: loginParams) > {return http({method: POST,url: /login/wxMin,data,})…

NPM/Yarn完全指南:前端开发的“基石“与“加速器“

开篇:当你第一次运行npm install时... "这node_modules文件夹怎么比我的项目代码还大100倍?!" —— 每个前端新手第一次看到node_modules时的反应都出奇地一致。别担心,今天我要带你彻底搞懂这个让项目"膨胀"的"罪魁祸首",以及如何用NPM/Y…

vue页面自定义滚动条

效果图实现思路 固定整个灰色滚动条的长度计算可滚动区域占整个可视视图的比例&#xff0c;来确定橙色块的长度监听页面滚动&#xff0c;计算橙色块向右偏移距离 主要代码 template&#xff1a; <div v-show"showBar" ref"barRef" class"scrollbar…

企业级JWT验证最佳方案:StringUtils.hasText()

在企业级Java开发中&#xff0c;判断JWT令牌是否有效的最全面且常用的方式是结合以下两种方法&#xff1a; ✅ 推荐方案&#xff1a;StringUtils.hasText(jwt)&#xff08;Spring框架&#xff09; import org.springframework.util.StringUtils;if (!StringUtils.hasText(jwt))…

灵动画布:快手可灵 AI 推出的多人协作 AI 创意工作台

灵动画布&#xff1a;快手可灵 AI 推出的多人协作 AI 创意工作台 来源&#xff1a;Poixe AI 一、什么是灵动画布 灵动画布是快手旗下可灵 AI 于 2025 世界人工智能大会期间发布的全新创意工作台功能。该功能集无限可视化画布空间、多人实时协作及 AI 智能辅助于一体&#xf…

【Linux篇】进程间通信:进程IPC

目录 共享内存空间 共享内存是在用户空间还是内核空间&#xff1f;——用户空间 共享内存的生命周期 如何使用共享内存 共享内存的权限 共享内存是进程间通信中&#xff0c;速度最快的方式&#xff1a; 共享内存的缺点&#xff1a; 进程间通信标准&#xff1a; system …

Kubernetes 存储入门

目录 Volume 的概念 Volume 的类型 通过 emptyDir 共享数据 编写 emptyDir 的 Deployment 文件 部署该 Deployment 查看部署结果 登录 Pod 中的第一个容器 登录 Pod 中的第二个容器查看 /mnt 下的文件 删除此 Pod 使用 HostPath 挂载宿主机文件 编写 Deployment 文件…

深入理解Redission释放锁过程

lock.unlock();调用unlock方法&#xff0c;往下追Override public void unlock() {try {// 1. 执行异步解锁操作并同步等待结果// - 获取当前线程ID作为锁持有者标识// - unlockAsync()触发Lua脚本执行实际解锁// - get()方法阻塞直到异步操作完成get(unlockAsync(Thread.curre…

四、计算机组成原理——第4章:指令系统

目录 4.1指令系统 4.1.1指令集体系结构 4.1.2指令的基本格式 1.零地址指令 2.一地址指令 3.二地址指令 4.三地址指令 5.四地址指令 4.1.3定长操作码指令格式 4.1.4扩展操作码指令格式 4.1.5指令的操作类型 1.数据传送 2.算术和逻辑运算 3.移位操作 4.转移操作 …

RAG面试内容整理-检索器与生成器的解耦架构

在RAG系统中,检索器(Retriever)与生成器(Generator)的解耦架构是实现灵活高效的关键设计。所谓解耦,即将检索相关文档和生成答案两个步骤分开,由不同的模块或模型负责。这种架构带来的直接好处是模块独立优化:我们可以针对检索任务微调或更换检索模型,而不必影响生成模…