实操系列-MySQL主从复制

本文详细介绍了如何在Linux环境下搭建MySQL8.x的一主一从及多主多从集群。从安装MySQL、配置my.cnf文件、创建用户与授权,到设置主从复制,最后进行环境验证,全程提供了具体的操作步骤和注意事项,旨在帮助读者避开常见陷阱,成功构建高可用的MySQL集群。
摘要由CSDN通过智能技术生成

准备2台Linux机器

安装MySQL8.x

安装步骤csdn上有很多教程,就不copy了,安装好查看下mysql的启动状态
我的MySQL 安装基本路径/usr/local/mysql

# 查看MySQL的启动状态
systemctl status mysqld

systemctl status mysqld

一主一从搭建

主机(master)创建slave授权

保证MySQL的root用户是管理员账号

  • 主机登录MySQL服务:mysql -uroot -proot
  • 执行SQL给root用户的改变权限
use mysql;
update user set host='%' where user='root';
grant all privileges on *.* to 'root'@'%' ;
select user,host from user;

grant all privileges on *.* to 'root'@'%' ;
select user,host from user

创建slave用户并授权

CREATE USER slave IDENTIFIED BY '123123';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
FLUSH PRIVILEGES;

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
FLUSH PRIVILEGES;

配置MySQL的my.cnf

  • 主机创建或编辑my.cnf 文件并追加以下内容
vim /usr/local/mysql/conf/my.cnf

# 主机的serverId,任意数字,集群内唯一
server-id=1
# 开启logbin,并设置路径
log-bin=/usr/local/mysql/logs/mysql-bin

# 设置不要复制的数据库(可以重复设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema

# 设置需要赋值的数据库
binlog-do-db=testdb

# binlog 格式:statement(默认) / row / mixed
binlog_format=STATEMENT
  • 从机创建或编辑my.cnf 文件并追加以下内容
vim /usr/local/mysql/conf/my.cnf

# 从机的serverId,任意数字,集群内唯一
server-id=2
# 启用中继日志
relay-log=/usr/local/mysql/logs/mysql-relay
  • 主机重启 systemctl restart mysqld
  • 从机重启 systemctl restart mysqld
  • 主机登录MySQL服务,查看master状态信息并记录下File、Position两个字段值:
show master status;

在这里插入图片描述

  • 从机登录MySQL服务,并执行下面的SQL脚本
CHANGE MASTER TO MASTER_HOST='192.168.3.74',
MASTER_USER='slave',
MASTER_PASSWORD='123123',
MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=157;

在这里插入图片描述

  • 从机执行start slave;

  • 从机查看主从状态show slave status \G;
    如果出现下图红框中的内容则说明你配置成功。
    在这里插入图片描述

  • 因为我的服务器是虚拟机克隆出来的,所以两台MySQL的UUID是一样的,如遇到这种问题,则删除从机的auto.cnf文件即可

# 删除 auto.cnf 文件
rm -rf /usr/local/mysql/data/auto.cnf

Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.

验证搭建的一主一从环境

  • 主机上创建数据库create database testdb;
    在这里插入图片描述
  • 从机查看数据库列表show databases;
    在这里插入图片描述
    从机可以正常显示出主机创建testdb数据库,则说明环境搭建成功!

多主多从搭建

相信小伙伴已经将上面的一主一从环境已经搭建成功了,那下面的多主多从对于聪明的你来说非常容易

多主多从的环境说明

为了简单说明问题,我用2主(m1,m2)2从(s1,s2)共4台服务来搭建环境。
其中m1:s1,m2:s2互为主从,然后m1:m2互为主备。
m1:s1主从环境就借用上面搭建好的。然后再根据这个搭建一组m2:s2的主从

IP角色
192.168.3.75Master1
192.168.3.77Slave1
192.168.3.78Master2
192.168.3.79Slave2

编辑Master1的 my.cnf文件

server-id=1
log-bin=/usr/local/mysql/logs/mysql-bin

# 设置不要复制的数据库(可以重复设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema

# 设置需要赋值的数据库
binlog-do-db=testdb

# binlog 格式:statement(默认) / row / mixed
binlog_format=STATEMENT

# 注意,在作为从数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates
#表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535
auto-increment-increment=2
# 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535
auto-increment-offset=1

编辑Slave1的 my.cnf文件

server-id=2

# 作为从机, 需要配置relay-log,不需要log-bin
#log-bin=/usr/local/mysql/logs/mysql-bin

# 启用中继日志
relay-log=/usr/local/mysql/logs/mysql-relay

编辑Master2的 my.cnf文件

server-id=3
log-bin=/usr/local/mysql/logs/mysql-bin

# 设置不要复制的数据库(可以重复设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema

# 设置需要赋值的数据库
binlog-do-db=testdb

# binlog 格式:statement(默认) / row / mixed
binlog_format=STATEMENT

# 注意,在作为从数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates
#表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535
auto-increment-increment=2
# 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535
auto-increment-offset=2

编辑Slave2的 my.cnf文件

server-id=4

# 作为从机, 需要配置relay-log,不需要log-bin
#log-bin=/usr/local/mysql/logs/mysql-bin

# 启用中继日志
relay-log=/usr/local/mysql/logs/mysql-relay

主从搭建

  • Slave1执行脚本:
    登录MySQL服务后,执行下面的脚本,注册主从关系
CHANGE MASTER TO MASTER_HOST='192.168.3.75',
MASTER_USER='slave',
MASTER_PASSWORD='123123',
MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=157;

在这里插入图片描述

  • Slave2执行脚本:
    登录MySQL服务后,执行下面的脚本,注册主从关系
CHANGE MASTER TO MASTER_HOST='192.168.3.78',
MASTER_USER='slave',
MASTER_PASSWORD='123123',
MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=157;

在这里插入图片描述

  • Slave1,Slave2 分别执行启动命令:start slave;
    在这里插入图片描述

  • 查看主从状态:show slave status \G;
    在这里插入图片描述在这里插入图片描述

至此两组的主从关系搭建完成

多主多从搭建

  • Master1 执行脚本:
    登录MySQL服务后,执行下面的脚本,注册主从关系
CHANGE MASTER TO MASTER_HOST='192.168.3.78',
MASTER_USER='slave',
MASTER_PASSWORD='123123',
MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=157;

在这里插入图片描述

  • Master2执行脚本:
    登录MySQL服务后,执行下面的脚本,注册主从关系
CHANGE MASTER TO MASTER_HOST='192.168.3.75',
MASTER_USER='slave',
MASTER_PASSWORD='123123',
MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=157;

在这里插入图片描述

  • Master1,Master2分别执行启动命令:start slave;
    在这里插入图片描述

  • 查看主从状态:show slave status \G;
    在这里插入图片描述
    在这里插入图片描述

  • 双主双从环境搭建完成

验证双主双从

  • Master1 创建数据库
    在MySQL服务下执行命令create database testdb
    在这里插入图片描述
  • 任意的一台从机上查看是否存在testdb数据库
    在这里插入图片描述

全部搭建结束

没有过多的理论描述,只有自己一步一步执行下来的截图,中间也有很多次的踩坑跳坑经验,如果能按照我这个流程完成操作下来,应该能让你规避很多坑。如果有不对的地方请指正~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值