MYSQL主从复制搭建

目录

前言

一、搭建环境

1.1整个实验的环境 以及服务器信息

1.2主从服务器时间同步

1.2.1下载ntpdate 命令

1.2.2使用ntpdate 命令同步时间

1.3关闭防火墙和防火墙增强功能

1.4从库同主库

二、安装MySQL

2.1、环境准备

2.2获取压缩包并源码解压与依赖

2.3进入MySQL解压文件目录,CMake 编译配置

2.4编译安装

2.5MySQL配置

2.6MYSQL服务及登录修改密码

2.7 从服务器同主服务器,步骤同上

三、配置主从同步

3.1修改master 配置

3.2配置从数据库

3.3测试主从配置

总结


前言

在当今数据驱动的业务场景中,数据库的高可用性和读写分离能力已成为系统架构设计的核心需求。MySQL 主从复制(Master-Slave Replication)作为一种成熟、可靠的数据同步方案,能够有效提升数据库的可用性、扩展数据备份容灾能力,并为读写分离提供基础支撑。

本文旨在为运维工程师、数据库管理员及开发人员提供一份详尽的实战指南,手把手演示如何在 CentOS 7.9 操作系统上,通过源码编译方式安装 MySQL 5.7,并配置一主两从的数据库集群。教程内容涵盖从环境准备、时间同步、防火墙配置,到 MySQL 编译安装、主从同步参数配置,以及最终的同步验证全流程。

通过跟随本文步骤,读者将能够:

  • 理解 MySQL 主从复制的基本原理与核心配置项;
  • 掌握在 Linux 环境下源码编译安装 MySQL 5.7 的完整流程;
  • 独立完成一主两从架构的搭建与联调测试;
  • 识别并规避配置过程中常见的陷阱与错误。

无论您是初次接触 MySQL 高可用架构,还是希望巩固实战技能,本文都将为您提供清晰、可复现的操作指引。让我们开始吧!

一、搭建环境

1.1整个实验的环境 以及服务器信息

环境部署cetos7.9
虚拟机服务环境
Master服务器:192.168.1.111 mysql5.7
slave1服务器:192.168.1.116 mysql5.7
Slave2服务器:192.168.1.17 mysql5.7

1.2主从服务器时间同步

1.2.1下载ntpdate 命令

yum -y install ntpdate ntp

1.1

1.2.2使用ntpdate 命令同步时间

ntpdate ntp.aliyun.com

1-2

1.3关闭防火墙和防火墙增强功能

1.3.1关闭防火墙

systemctl disable --now firewalld

1-3

1.3.2关闭增强功能

setenforce 0 ; getenfoece

1-4

1.4从库同主库

1.4.1执行时间同步

1.4.2关闭防火墙和增强功能

二、安装MySQL

2.1、环境准备

yum-yinstallgccgcc-c++ncurses ncurses-devel bison cmake

1-5

2.2获取压缩包并源码解压与依赖

tar -zxvf mysql-5.7.17.tar.gz-C/opt

1-6

tar -zxvf boost_1_59_0.tar.gz-C/usr/local/
mv/usr/local/boost_1_59_0 /usr/local/boost

1-7

2.3进入MySQL解压文件目录,CMake编译配置

cd /otp/mysql-5.7.17

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1\
-DWITH_ARCHIVE_STORAGE_ENGINE=1\
-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1\
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-DWITH_SYSTEMD=1

1-8

2.4编译安装

make-j2&&makeinstall

1-9

2.5MySQL配置

2.5.1权限配置
useradd -M -s /sbin/nologn mysql
chown-Rmysql:mysql /usr/local/mysql/ #属组 -R递归
chownmysql:mysql /etc/my.cnf #mysql配置文件

1-10

2.5.2修改配置文件
vim /etc/my.cnf

1-11

2.5.3环境变量设置
echo"PATH=$PATH:/usr/local/mysql/bin">> /etc/profile
source/etc/profile

1-12

2.5.4数据库初始化
cd/usr/local/mysql/bin/
./mysqld \
--initialize-insecure\
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

1-13

2.6MYSQL服务及登录修改密码

2.6.1 设置MySQL服务

cp/usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
2.6.2启动MySQL并开启自启
systemctl daemon-reload
systemctlstartmysqld.service
systemctl enable mysqld
netstat-anpt|grep3306

1-14

2.6.3账号密码管理
设置mysqladmin-uroot-ppassword"123456" 第一次登录密码为空直接enter

1-15

登录mysql-uroot-p123456

1-16

2.7 从服务器同主服务器,步骤同上

注:MySQL版本必须一样

三、配置主从同步

3.1修改master 配置

vim /etc/mys.cnf

3.1.1在mysqld模块下修改内容
开启二进制日志文件(之后生成的日志名为master-bin) log_bin=master-bin
开启从服务器日志同步 log_slave-updates=true

2-1

3.1.2重启MySQL

2-2

3.1.3创建用户并授权

create user 'z1'@'%' identified by '123456';

grant all on *.* to 'z1'@'%' identified by '123456';

grant replication slave on *.* to 'z1'@'%' identified by '123456';

2-3

3.1.4刷新权限并查看master数据库状态

2-4

3.2配置从数据库

vim /etc/my.cnf

3.2.1mysqld模块下修改内容

#开启二进制日志文件
log-bin=master-bin
#设置server id22slave223
server_id = 22
#从主服务器上同步日志文件记录到本地
relay-log=relay-log-bin
#定义relay-log的位置和名称(index索引)
relay-log-index=slave-relay-bin.index

2-5

3.2.2重启MySQL并登录开启从服务器功能

systemctl restart mysqld

mysql -uroot -p123456

change master to master_host='192.168.1.111',master_user='z1',master_password='123456',master_log_file

='master-bin.000004',master_log_pos=1716;

start slave;

2-6

3.2.3 另一从库同上

注:server_id 不同

3.3测试主从配置

3-1

3-2

总结

本文详细介绍了在 CentOS 7.9 环境下搭建 MySQL 5.7 一主两从集群的完整流程。整个过程可分为三个主要阶段:

  1. 环境搭建:包括服务器时间同步、防火墙关闭等基础环境配置,确保主从服务器间网络与时间一致。
  2. MySQL 安装与配置:通过源码编译方式安装 MySQL 5.7,完成权限、配置文件、环境变量及服务启动等步骤,并在主从服务器上分别完成相同操作。
  3. 主从同步配置与测试:在主库开启二进制日志并创建同步账号,在从库配置 server_id、relay-log 并指向主库,最后通过数据操作验证同步是否成功。

关键注意事项:

  • 主从服务器时间必须同步,避免因时间差导致数据不一致。
  • MySQL 版本需保持一致,推荐使用相同版本的源码编译安装。
  • 主从配置中的 server_id 必须唯一,且从库的 relay-log 配置需正确指向主库的 binlog 文件与位置。
  • 配置完成后务必通过show slave status\G检查 Slave_IO_Running 和 Slave_SQL_Running 是否为 Yes,确保同步线程正常运行。

通过以上步骤,可以搭建一个高可用、读写分离的 MySQL 主从复制环境,为后续业务的数据冗余与负载均衡提供基础支撑。