admin 管理员组

文章数量: 1184232

一、项目概述

成功部署并验证了MySQL 8.3.0一主两从复制集群,实现了数据自动同步、高可用性和读写分离基础架构。该项目涵盖了从环境准备、软件安装、配置优化到故障排查的全流程。

MySQL 集群(MySQL Cluster)本质是为了解决单节点 MySQL 的 性能瓶颈 (高并发)、 可用性风险 (单点故障)和 数据可靠性 (数据丢失)问题,通过多台服务器协同工作,将数据分散 / 复制存储、请求分散处理,最终实现:

  • 高可用(HA) :单个节点故障不影响整体服务;

  • 高扩展(Scalability) :可通过增加节点提升处理能力;

  • 数据一致性 :集群内数据保持同步(不同架构一致性级别不同

二、实验环境

  • 操作系统 :RHEL 9

  • MySQL版本 :8.3.0(源码编译安装)

  • 服务器规划:

服务器 IP地址 角色 server-id 复制用户
主服务器 172.25.254.100 Master 1 repl_user
从服务器1 172.25.254.200 Slave1 2 repl_user
从服务器2 172.25.254.210 Slave2 3 mysqlave
  • 网络环境 :内网互通,关闭防火墙或开放3306端口

三、完整实验步骤

3.1 环境准备

3.1.1 系统更新与依赖安装

dnf update -y
dnf install -y gcc gcc-c++ cmake make ncurses-devel openssl-devel

3.1.2 创建MySQL用户和组

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

3.1.3 关闭防火墙和SELinux

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

3.2 MySQL 8.3.0编译安装

3.2.1 下载并解压源码包

wget 
tar -zxvf mysql-8.0.33.tar.gz
cd mysql-8.0.33

3.2.2 编译配置

cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci

3.2.3 编译并安装

make -j$(nproc)
make install

3.2.4 初始化MySQL

cd /usr/local/mysql
bin/mysqld --initialize-insecure --user=mysql

验收标准:

3.3 主服务器配置(Master)

3.3.1 修改配置文件 /etc/my.cnf

[mysqld]
server-id=1
log-bin=mysql-bin
binlog_format=ROW
expire_logs_days=7
max_binlog_size=100M

3.3.2 创建复制用户

CREATE USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'Repl@123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

3.3.3 查看主服务器状态

CREATE USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'Repl@123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

3.4 从服务器配置(slave1和slave2)

3.4.1 修改配置文件/etc/my.cnf

[mysqld]
server-id=2  # 每个从服务器唯一
relay-log=mysql-relay-bin
read_only=1
super_read_only=1

3.4.2 配置主从复制

STOP SLAVE;
CHANGE MASTER TO
MASTER_HOST='172.25.254.100',
MASTER_USER='repl',
MASTER_PASSWORD='Repl@123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=156;
START SLAVE;

3.4.3 验证复制状态

SHOW SLAVE STATUS\G;
-- 检查Slave_IO_Running和Slave_SQL_Running是否为Yes

slave1:

slave2:

3.5 验证整个集群数据同步

3.5.1 基础同步验证

1.创建测试环境
-- 在主服务器上创建测试数据库和表
CREATE DATABASE IF NOT EXISTS cluster_test;
USE cluster_test;
-- 创建测试表
CREATE TABLE sync_test (
    id INT AUTO_INCREMENT PRIMARY KEY,
    data_content VARCHAR(255),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    source_server VARCHAR(50) DEFAULT 'master'
);
-- 插入初始测试数据
INSERT INTO sync_test (data_content) VALUES 
('初始测试数据1'),
('初始测试数据2'),
('初始测试数据3');
2.验证从服务器数据同步
-- 分别在两个从服务器上执行
USE cluster_test;
SELECT '从服务器1' AS server_name, COUNT(*) as row_count FROM sync_test;
SELECT * FROM sync_test ORDER BY id;

3.5.2 实时同步测试

1.增量数据同步验证
-- 在主服务器上连续插入数据
DELIMITER $$
CREATE PROCEDURE insert_test_data()
BEGIN
    DECLARE i INT DEFAULT 1;
    WHILE i <= 10 DO
        INSERT INTO sync_test (data_content) 
        VALUES (CONCAT('批量测试数据-', i, '-', NOW()));
        SET i = i + 1;
        DO SLEEP(1);  -- 每秒插入一条
    END WHILE;
END
$$
DELIMITER ;
-- 执行存储过程
CALL insert_test_data();
2.实时监控同步状态
# 监控脚本:sync_monitor.sh
#!/bin/bash
echo "=== 实时数据同步监控 ==="
echo "监控开始时间: $(date)"
echo ""
while true; do
    clear
    echo "=== 集群数据同步状态 ==="
    echo "时间: $(date)"
    echo ""
    
    # 主服务器数据
    echo "            
            
            

本文标签: 数据 从服务器 编程

更多相关文章

从GRUB到完美Windows:双系统引导修复全记录,一步到位

7天前

一次清理电脑引发的“血案”:Windows+Ubuntu双系统启动失败,GRUB命令行救急与永久修复实录1. 问题背景 作为Windows 10 + Ubuntu 20.04双系统用户,我在清理电脑时不小心破坏了

Ubuntu中的QQ玩得不愉快?解决自动关闭的秘诀!

7天前

如何处理(ubuntu版QQ)自动关闭的问题。sudo gedit usrbinqq打开后在第二行加入这一句:export GDK_NATIVE_WINDOWS=true保存即可。

QQ浏览器自动更新设置误关?快跟着这篇教程重新开启

7天前

QQ浏览器自动更新功能关闭后如何重新启用?详细步骤解析 在日常使用电脑过程中,浏览器作为核心上网工具,其安全性和功能更新至关重要。近期不少用户反馈遇到QQ浏览器自动更新功能被意外关闭的情况,这不仅可能导致浏览器长期处于旧版本状

彻底搞定QQ迷你首页小程序,一键关闭,还你纯净界面!

7天前

我有3个QQ,每天都要登录,可是登录后,"腾讯网迷你首页"就会自动弹出,干扰了我的心情(呵呵~~只有会员才免遭此罪哦).于是,我编写了个程序:在10分钟内主动查找"腾讯网迷你首页",发现就把它关掉,不

Ubuntu新手遇QQ崩溃?揭秘问题根源与解决之道

7天前

腾讯官方出的linux版QQ在ubuntu下经常自动关闭,频率很高。在ubuntu中文论坛看到的方法:打开 usrbinqq命令:  sudo gedit usr

一步到位:教你彻底关闭QQ小程序的不二法门

7天前

我有3个QQ,每天都要登录,可是登录后,"腾讯网迷你首页"就会自动弹出,干扰了我的心情(呵呵~~只有会员才免遭此罪哦).于是,我编写了个程序:在10分钟内主动查找"腾讯网迷你首页",发现就把它关掉,不

如何利用192.168.1.1优化你的家庭网络体验

7天前

虽然前面小编也发布过关于的相关信息,但是都是解释相关的问题的,没有好好介绍关于的信息,今天小编星期八就给大家介绍一下的详细信息! 是什么? 192.168.0.1属于IP地址的

192.168.1.1轻松登录:Adobe Flash Player玩转新途径

7天前

【登陆官网】网友提问:怎么用的呢?的时候,官网登陆不了怎么办?热心网友答:要进入192.1.1.1,需要手机连接路由器发射出来的Wi

192.168.0.1隐藏的路由器入口,教你快速进入并优化网络!

7天前

有不少的用户在反馈,说在的时候,登录入口打不开找不到,从而无法对进行设置,问我应该怎么办? 根据鸿哥的经验来看,出现无法打开的登录入口问题,绝大数情况下是用户自己操作有误引起的,极少数情况

192.168.1.1的秘密通道:探索家庭网络的入口

7天前

虽然前面小编也发布过关于的相关信息,但是都是解释相关的问题的,没有好好介绍关于的信息,今天小编星期八就给大家介绍一下的详细信息! 是什么? 192.168.0.1属于IP地址的

192.168.0.1与192.168.1.1:家庭网络地址的细微区别

7天前

哈哈,这个问题问得真好!让我来给你讲讲192.168.0.1和192.168.1.1这两个"网络小管家"的区别吧~ 其实啊,它们就像是两个不同性格的邻居,虽然住在一个大社区(192.168.0.0-192.168

192.168.0.1设备探索:零基础入门

7天前

有不少的用户在反馈,说在的时候,登录入口打不开找不到,从而无法对进行设置,问我应该怎么办? 根据鸿哥的经验来看,出现无法打开的登录入口问题,绝大数情况下是用户自己操作有误引起的,极少数情况

轻松搞定192.168.0.1,从初学者到高手的路由器设置技巧

7天前

摘 要 (导读:192.168.0.1路由器设置)1、路由器正确安装:2、IP地址设置3、登录路由器4、设置路由器目录本文将介绍192.168.0.1路由器设置的方法及教程;适用于小白新手换新路由器或者路" (导读

告别重装系统,用DISM轻松解决电脑问题

7天前

介绍了解: DISM(部署映像服务和管理)是三种 Windows 诊断工具中最强大的。当遇到频繁的崩溃、冻结和错误,或者 SFC 要么无法修复您的系统文件,或者根本无法运行时,可以使用该工具。 相连文章: 修复

从0到1:Dism++教你快速完成系统安装,新手必备技能!

7天前

系统安装是一个简单而又复杂的活。有的仅仅为了安装系统,先把ESD转为ISO。 有的因为安装器不支持ESD,而转换为WIM。还有的在解压ISO……反正各种心烦 本文将通过一些实例,帮助大家驾驭Dism 。 目录

Dism助力:快速上手实现Flash Player无缝安装与更新

7天前

相关文章推荐:Windows ADK 下载地址: 命令示例:Gimagex图形化演示:以下命令由DISMGUI生成,原汁原味1.首次备份镜像【Captu

Windows系统维护新纪元:Dism命令的高效应用实践

7天前

Dism是什么? dism 命令(Deployment Image Servicing and Management)是Windows操作系统中的一个命令行工具,用于管理和维护映像文件(如Windows安装映像或修复映像)。d

告别系统崩溃,通过DISM工具让电脑重获新生

7天前

介绍了解: DISM(部署映像服务和管理)是三种 Windows 诊断工具中最强大的。当遇到频繁的崩溃、冻结和错误,或者 SFC 要么无法修复您的系统文件,或者根本无法运行时,可以使用该工具。 相连文章: 修复

CentOS系统备份攻略:避免数据丢失的不二法门

7天前

CentOS 是一种广泛使用的 Linux 操作系统,对于保护系统和数据的安全,定期备份是非常重要的。本文将介绍如何备份 CentOS 系统,包括文件和配置。完整系统备份完整系统备份是一种将整个 CentOS

老毛桃:你的个人数据保护小能手,备份恢复系统轻松搞定!

7天前

我们工作中难免遇到各种各样的问题,造成系统损坏、文件或数据丢失等等,为了快速恢复我们的数据,我们应该习惯性的备份系统和数据,以免造成不必要的损失,正所谓“数据无价”。 我前两天就吃了没备份的亏咯,数据全没了,试想一下这要是

发表评论

全部评论 0
暂无评论