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-devel3.1.2 创建MySQL用户和组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql3.1.3 关闭防火墙和SELinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 03.2 MySQL 8.3.0编译安装
3.2.1 下载并解压源码包
wget
tar -zxvf mysql-8.0.33.tar.gz
cd mysql-8.0.333.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_ci3.2.3 编译并安装
make -j$(nproc)
make install3.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=100M3.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=13.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是否为Yesslave1:
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 "
版权声明:本文标题:MySQL进阶之路:一主双副架构下的数据备份与恢复策略 内容由网友自发贡献,该文观点仅代表作者本人,
转载请联系作者并注明出处:http://roclinux.cn/p/1772305037a3554429.html,
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
更多相关文章
从GRUB到完美Windows:双系统引导修复全记录,一步到位
一次清理电脑引发的“血案”:Windows+Ubuntu双系统启动失败,GRUB命令行救急与永久修复实录1. 问题背景 作为Windows 10 + Ubuntu 20.04双系统用户,我在清理电脑时不小心破坏了
NTBOOTAutoFix:双系统启动菜单的终极修复大师
简介:双系统启动菜单工具NTBOOTautofix是一款专业软件,用于管理和修复双系统或多系统的启动菜单问题。它特别适用于Windows系列操作系统,并提供修复启动菜单、恢复MBR、修复BCD、数据备份与恢复、命令行模式操作、安全扫描
QQ浏览器自动更新不想受?三步操作,让升级由你掌握!
如何关闭QQ浏览器自动更新功能:详细步骤与常见问题解析在日常使用电脑的过程中,许多用户都曾遇到过软件自动更新的困扰。以QQ浏览器为例,其自动更新功能虽然旨在为用户提供最新版本的功能和安全补丁,但部分用户反馈新版本可能存在
告别QQ浏览器2020版永不更新的痛苦,轻松开启自动更新模式!
QQ浏览器自动更新功能关闭后如何重新开启?详细操作指南 在日常使用电脑过程中,软件自动更新功能对于保障系统安全性和功能完整性至关重要。近期收到不少用户反馈,称QQ浏览器的自动更新功能被意外关闭后,无法通过常规途径获取新版本更新
Ubuntu 9.10中,摆脱QQ频繁自动关闭的困扰
[align=center][img]转载:作者:tianwanjun8680.blog.163.comQQ每次打开聊天 窗口,和别人聊天时,点击历史或者传输文件和图片时,或者正和别人聊天QQ就自动关闭了,搞得老
彻底搞定QQ迷你首页小程序,一键关闭,还你纯净界面!
我有3个QQ,每天都要登录,可是登录后,"腾讯网迷你首页"就会自动弹出,干扰了我的心情(呵呵~~只有会员才免遭此罪哦).于是,我编写了个程序:在10分钟内主动查找"腾讯网迷你首页",发现就把它关掉,不
奇怪的BUG:点击好友,QQ就关闭!
曾经遇到过该问题,以为是偶然或是RP问题,昨天有同事也出现了类似症状,觉得大概与RP无关啦,所以写下比较简单的但有效的解决方法。下面描述一下症状:针对某个QQ号码,选择某个特定的好友,准备输入消息的时候,该QQ号会自动关闭;同个
QQ浏览器新手宝典:自动更新功能怎么开?详解教程
QQ浏览器自动更新功能关闭后的开启方法详解 在日常使用QQ浏览器的过程中,部分用户可能会遇到自动更新功能被意外关闭的情况。当该功能处于禁用状态时,浏览器将无法自动检测并安装新版本,可能导致安全漏洞修复延迟、功能更新滞后等问题。
Ubuntu新手遇QQ崩溃?揭秘问题根源与解决之道
腾讯官方出的linux版QQ在ubuntu下经常自动关闭,频率很高。在ubuntu中文论坛看到的方法:打开 usrbinqq命令: sudo gedit usr
Ubuntu系统QQ频繁断线?一文教你快速修复方法!
每次开机启动电脑,Ubuntu 10 linux qq 老是自动退出,QQ登陆了还没几分钟呢,刚想聊几句天的,悄无声息的QQ自动关闭了。 只要修改一下qq配置文件(usrbinqq)就可以了。 具体如下。
192.168.0.127与Flash中心:解决Adobe Flash Player网络接入问题的策略
首先得明白 192.168.0.1是个 IP地址,更细一点的话,属于 C类型的,后面的 27则表示 网络号的长度
系统优化新纪元:Dism++ x64 2025最新版,Windows精简与C盘瘦身的终极攻略
一、 为什么技术人都要用 Dism++? 在 Windows 运维和优化领域, Dism++被称为“全球第一款基于 CBS 的 Dism GUI 实现”。 对于普通用户,这可能听起来很拗口。简单
Dism助力:快速上手实现Flash Player无缝安装与更新
相关文章推荐:Windows ADK 下载地址: 命令示例:Gimagex图形化演示:以下命令由DISMGUI生成,原汁原味1.首次备份镜像【Captu
让Dism++帮您驾驭Windows系统,轻松优化
简介:Dism++是一款先进的系统维护工具,专注于清理电脑垃圾、释放内存,提供全面的系统优化解决方案。最新版本Dism++10.1.1000.100_2d2bf466baca088c4b35248f5a7316f4e00cac0b特别
深度解析Dism++:打造Windows的私人优化专家
Dism++终极指南:免费高效的Windows系统优化解决方案 Dism++是一款功能强大的Windows系统优化工具,通过Dism-Multi-language项目提供全面的多语言支持,让全球用户都能以母语轻松使用其强大的系
一文读懂Dism命令行,Adobe Flash Player安装不再难!
相关文章推荐:Windows ADK 下载地址: 命令示例:Gimagex图形化演示:以下命令由DISMGUI生成,原汁原味1.首次备份镜像【Captu
Windows备份不求人:自助指南助你一臂之力
win系统环境搭建(十五)——如何将Windows系统备份 1.为什么要做备份?windows蓝屏警告!!!
CentOS系统备份攻略:避免数据丢失的不二法门
CentOS 是一种广泛使用的 Linux 操作系统,对于保护系统和数据的安全,定期备份是非常重要的。本文将介绍如何备份 CentOS 系统,包括文件和配置。完整系统备份完整系统备份是一种将整个 CentOS
C盘大搬家?别怕,Ghost备份带你安全过!
推荐用U盘制作启动工具 大白菜or老毛桃 备份:以老毛桃为例,进入PE,点击左下角开始,可见ghost功能选项 运行Ghost后,单击“OK”。 选择“Local”→“Partition”→“
一文教会你AIX系统备份:mksysb实用指南
一、备份的原因及时间备份的原因1,在系统损坏后恢复系统2,保留用户的工作3,将映像推送到新计算机上备份的时间:系统应处于最空闲的状态二、系统数据和用户数据
发表评论