标签:开启 ids alt The pre bec 成功 情况下 命名
准备两台服务器(可以是虚拟机),系统为centos7
此处演示的两台服务器:192.168.8.134、192.168.8.135
先在两台服务器上安装mysql5.7.24,安装可参考:
安装成功后,启动mysql。如果是虚拟机的话,在一台安装好之后,可以使用克隆功能,克隆后的虚拟机也会有安装好的mysql。
配置之前,先在两台服务器上开启mysql。
master:192.168.8.134
slave: 192.168.8.135
创建一个名为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
修改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上了
我在查看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,说明主从复制配置成功
标签:开启 ids alt The pre bec 成功 情况下 命名
原文地址:https://www.cnblogs.com/zuidongfeng/p/10254431.html