mysql5.7.24主从_centos7下配置mysql5.7.24主从复制

本文详细介绍了如何在两台CentOS7服务器上配置MySQL5.7.24的主从复制,包括安装MySQL、创建复制用户、配置主从服务器、启动复制,并针对遇到的错误‘ Slave_IO_Running: No’给出了解决方案,即由于克隆导致的服务器UUID相同的问题。通过解决此问题,最终实现了主从复制的成功配置。
摘要由CSDN通过智能技术生成

前置条件

准备两台服务器(可以是虚拟机),系统为centos7

此处演示的两台服务器:192.168.8.134、192.168.8.135

第一步:安装mysql5.7.24

先在两台服务器上安装mysql5.7.24,安装可参考:

安装成功后,启动mysql。如果是虚拟机的话,在一台安装好之后,可以使用克隆功能,克隆后的虚拟机也会有安装好的mysql。

第二步:配置主从复制

配置之前,先在两台服务器上开启mysql。

master:192.168.8.134

slave: 192.168.8.135

配置master

创建一个名为repl的用户 CREATE USER repl IDENTIFIED BY 'L2019Mysql@';

授权slave数据库REPLICATION 权限 GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'L2019Mysql@';

授权slave服务器可以通过repl用户可以远程访问master,来读取binlog中数据,实现数据同步。

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

在/etc/my.cnf的[mysqld]下加入如下配置: # 启用二进制日志文件

log-bin=mysql-bin

# 服务器唯一ID

server-id=1

log-bin: 开启binlog

server-id:指定服务器id(唯一,不能与slave服务器server-id相同)

重启mysql sudo systemctl restart mysqld

查看master二进制文件名称和偏移量 show master status; +------------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000002 | 154 | | | |

+------------------+----------+--------------+------------------+-------------------+

此处二进制文件名称为:mysql-bin.000002,偏移量为:154

配置slave

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

在/etc/my.cnf的[mysqld]下加入如下配置: # 服务器唯一ID

server-id=2

# 开启中继日志

relay-log=slave-relay-bin

# 开启中继日志索引

relay-log-index=slave-relay-bin.index

# 设置只读

read_only=1

此处设置只读是因为,在主从复制的情况下,通常数据写入master,从slave中读取数据。

重启mysql sudo systemctl restart mysqld

建立同步连接 CHANGE MASTER TO master_host = '192.168.8.134',

master_port = 3306,

master_user = 'repl',

master_password = 'L2019Mysql@',

master_log_file = 'mysql-bin.000002',

master_log_pos = 154;

master_host: master服务器ip

master_port: master上mysql服务端口

master_user: 配置master时创建的repl用户

master_password: master上repl用户密码

master_log_file: 配置master第5步查询到的二进制日志文件名称

master_log_pos: 配置master第5步查询到的偏移量

启动slave start slave;

查看slave状态 show slave status \G

此时Slave_IO_Running、Slave_SQL_Running值都是Yes,说明主从复制配置成功

3f2b17ae3fea74ccfa74d946b81a058b.png

测试

在master上新建一个名为test的数据库

create database test;

在slave上查看

show databases;

可以看到test数据库已经同步到slave上了

b97b6165a21cdadf7ed98577ad2314c9.png

可能出现的错误

[ERROR] Slave I/O for channel '': 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. Error_code: 1593

我在查看slave状态时,发现 Slave_IO_Running: No

查看日志

tail -f /var/log/mysqld.log

发现上面的错误。

原因:我在master: 192.168.8.134 上安装好mysql之后,使用克隆功能,创建了slave:192.168.8.135,导致master和slave上的server-uuid相同。

在master和slave上分别查看server-uuid

sudo cat /var/lib/mysql/auto.cnf

发现值都是:server-uuid=a1ae101b-13e3-11e9-8f07-000c29b2fc93

解决方法:

先重命名slave上的auto.cnf

sudo mv /var/lib/mysql/auto.cnf /var/lib/mysql/auto.cnf.bk

然后重启slave上的mysql

sudo systemctl restart mysqld

查看slave状态

show slave status \G

此时Slave_IO_Running、Slave_SQL_Running值都是Yes,说明主从复制配置成功

f20f2c59d4dc4d2f9d7c9f315795ecf8.png

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值