MySQL 3主集群搭建

news/2025/1/8 9:31:31/

由于工作需要,搭建了一套MySQL3主集群。集群使用了MySQL 8.0,在3台Redhat 8.10上完成的搭建。过程如下:

直接官网下载mysql数据库 上传到服务器,解压然后执行 yum localinstall *.rpm

修改数据库配置文件/etc/my.cnf

[mysqld]
server-id=1133  # 集群中每个节点id值唯一,如第一个1133,第二个1134,第三个1135
port=3306
datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock
lower_case_table_names=1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
symbolic-links=0
character-set-server=utf8mb4
collation-server=utf8mb4_general_cilog-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pidlong_query_time=2
slow_query_log_file=/var/log/mysql_slowsql.log
slow_query_log=1
log-queries-not-using-indexes=off
default_authentication_plugin=mysql_native_password
max_connections=1000
max_connect_errors=6000
thread_cache_size=32
log_bin_trust_function_creators=TRUE
group_concat_max_len=102400
skip_ssl
table_open_cache=614
external-locking=FALSE
sort_buffer_size=2M
join_buffer_size=2M
read_buffer_size=1M
thread_cache_size=300
thread_stack=192K
transaction_isolation=READ-COMMITTED
tmp_table_size=256M
max_heap_table_size=256M
myisam_sort_buffer_size=128M
myisam_max_sort_file_size=10G
innodb_buffer_pool_size=2048M
innodb_thread_concurrency=4
innodb_flush_log_at_trx_commit=2
innodb_log_buffer_size=16M
# innodb_log_file_size=128M
innodb_redo_log_capacity = 1G  # 设置适当的值,视具体需求而定
innodb_log_files_in_group=3
innodb_max_dirty_pages_pct=90
innodb_lock_wait_timeout=120
innodb_file_per_table=0
log-bin=binlog
#binlog-format=Row
binlog-format=ROW
binlog_cache_size=4M
max_binlog_cache_size=512M
max_binlog_size=512M
# bin log 保留时间
expire_logs_days=7auto_increment_offset=1    # 节点1为1,节点2为2,节点3为3
auto_increment_increment=3 # 集群自增长的步长,一般等于节点数
binlog-format=mixed# 通过 GTID(全局事务 ID)实现自动定位,简化复制配置
gtid_mode=ON
enforce_gtid_consistency=ON# 每台主机都需要充当主从角色,因此需要启用 relay log(中继日志)
relay_log=relay-bin
# 避免数据循环传播(即自己写的数据被再次同步回自己)
log_slave_updates=ON
# MySQL 的多源复制可以使用多个 SQL 线程并行处理事务
slave_parallel_type=LOGICAL_CLOCK
slave_parallel_workers=4 # 根据 CPU 核数调整,建议 4 或以上
# 增加中继日志的处理效率
sync_relay_log=1
sync_relay_log_info=1# 中继日志清理 防止中继日志占用过多空间
relay_log_purge=ON
# 主从间网络优化 确保网络连接可靠性,配置超时
net_read_timeout=60
net_write_timeout=60

配置集群同步

三台机分别安装MySQL数据库,设置如上的参数,然后启动数据库systemctl start mysqld,然后修改数据库密码:

more /var/log/mysqld.log |grep temp # 将会显示数据库密码# 修改数据库密码
alter user 'root'@'localhost' identified by 'Password!';# 创建数据库复制所用的账号
CREATE USER 'repl'@'%' IDENTIFIED BY 'Password!';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

配置数据库复制,节点1将从节点2和节点3复制(执行第2条和第3条),节点2将从节点1和节点3复制,节点3类似:

# 从节点1复制
CHANGE MASTER TO MASTER_HOST='192.168.1.133', MASTER_USER='repl', MASTER_PASSWORD='Password!', MASTER_AUTO_POSITION=1 FOR CHANNEL 'node1';
START REPLICA FOR CHANNEL 'node1';
# 从节点2复制
CHANGE MASTER TO MASTER_HOST='192.168.1.134', MASTER_USER='repl', MASTER_PASSWORD='Password!', MASTER_AUTO_POSITION=1 FOR CHANNEL 'node2';
START REPLICA FOR CHANNEL 'node2';
# 从节点3复制
CHANGE MASTER TO MASTER_HOST='192.168.1.135', MASTER_USER='repl', MASTER_PASSWORD='Password!', MASTER_AUTO_POSITION=1 FOR CHANNEL 'node3';
START REPLICA FOR CHANNEL 'node3';

查询节点状态Show slave status\G",每个通道 Slave_SQL_Running 和 Slave_IO_Running 都为Yes则为正常状态:

mysql -uroot -p -e "Show slave status\G" | grep -E "Slave_IO_Running:|Slave_SQL_Running:"
Enter password:Slave_IO_Running: YesSlave_SQL_Running: YesSlave_IO_Running: YesSlave_SQL_Running: Yes

同步测试

可以在任何一台数据库中执行数据库修改语句,在其他库中查询数据库更改:

mysql> create database test11;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test11             |
+--------------------+
5 rows in set (0.01 sec)

本文由博客一文多发平台 OpenWrite 发布!


http://www.ppmy.cn/news/1561182.html

相关文章

第三部分:微服务01

1.认识微服务 1.1 单体架构 单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署; 优点:架构简单、部署成本低; 缺点:团队协作成本高、系统发布效率低、系统可用性差; 单体架构适合…

LLaMA:开放和高效的基础语言模型集

大家读完觉得有意义记得关注和点赞!!! 目录 摘要 1 引言 1.1 大模型训练:更多参数 vs 更大的数据集 1.2 LLaMA:减少参数,增大数据集 1.3 内容组织 2 方法(Approach) 2.1 预训…

web应用安全评估报告:会话Cookie未设置Secure属性(如果网站未部署 HTTPS,则无法使用 Secure 属性。)

文章目录 引言I 低危漏洞: 会话Cookie未设置Secure属性HTTP Cookie 定义限制访问 Cookie缓解涉及 Cookie 的攻击的方法II 漏洞修复Nginx下设置Java解决 Cookie未设置HttpOnly && Cookie未设置Secure标识问题Java EE 手工标识secure在设置认证COOKIE时,加入Secure。PH…

oceanbase集群访问异常问题处理

1.报错现象 2.问题排查 检查obproxy状态发现为不可用状态 重启obproxy 依次重启Obproxy集群 观察任务状态 重启完成 Obproxy状态正常 3.验证登录 登录成功

c# 快捷键模块

文章目录 命名空间和类类成员静态成员 静态方法GenerateHotkeyIdWndProcGetWindowHandleAndSourceRegisterUnregister 静态方法(外部调用)RegisterHotKey 和 UnRegisterHotKey 委托HotKeyCallbackHandler 枚举HotkeyModifiers 应用示例 using System; us…

「Java 数据结构全面解读」:从基础到进阶的实战指南

「Java 数据结构全面解读」:从基础到进阶的实战指南 数据结构是程序设计中的核心部分,用于组织和管理数据。Java 提供了丰富的集合框架和工具类,涵盖了常见的数据结构如数组、链表、栈、队列和树等。本文将系统性地介绍这些数据结构的概念、…

SQL把字符串按逗号分割成记录

在 SQL 中,可以通过以下方法将字符串按逗号分割,并将每个分割的值作为单独的记录插入到结果集中。以下是针对不同数据库系统的实现方法: 1. 使用 STRING_SPLIT(SQL Server 2016) STRING_SPLIT 是 SQL Server 提供的内置…

【HarmonyOS】:DevEco Studio安装与应用工程创建指南

前言 本文旨在为初涉 HarmonyOS 开发的开发者提供一份详尽的入门指南,涵盖从安装最新版 DevEco Studio 到使用该 IDE 创建首个应用工程的具体步骤。通过遵循本指南,您将能够顺利搭建起自己的开发环境,并迈出构建HarmonyOS应用的第一步。 一、…