centos7下配置mysql5.7.24主从复制
Posted 醉东风
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos7下配置mysql5.7.24主从复制相关的知识,希望对你有一定的参考价值。
前置条件
准备两台服务器(可以是虚拟机),系统为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,说明主从复制配置成功
测试
在master上新建一个名为test的数据库
create database test;
在slave上查看
show databases;
可以看到test数据库已经同步到slave上了
可能出现的错误
- [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,说明主从复制配置成功
参考资料
以上是关于centos7下配置mysql5.7.24主从复制的主要内容,如果未能解决你的问题,请参考以下文章
Centos7.5安装mysql5.7.24二进制包方式部署(主从复制)
Centos7.5安装mysql5.7.24二进制包方式部署(keepalived+主从复制)
CentOS7.5 yum 安装与配置MySQL5.7.24