上次我们我们在同一台电脑上注册了2个mysql服务,今天说下如何进行mysql的主从复制的配置
1、准备阶段
2个mysql服务,我的是基于昨天注册的服务,一个服务端口是3306 mysql的版本:5.7.17 另外一个端口是3307 mysql的版本是:5.7.20
2、配置主服务
打开要做主服务的mysql的配置文件:my.ini 我的是安装版本,my.ini在 C:\ProgramData\MySQL\MySQL Server 5.7
linux 服务的mysql配置文件为:my.cnf 路径为安装路径默认:etc/my.cnf
加入三行代码:
log-bin=mysql-log-bin // mysql的二进制日志命名
binlog_format=mixed // 二进制日志的格式
server-id=3306 // 服务器唯一的id,默认好像是1 我这为了区分用mysql的端口号,建议加上IP地址的后三位)
3、重新启动mysql主服务
4、配置从服务 可以参照上面的第2步,注意 server-id 是唯一的不能与主服务的一致
5、在主服务上创建用户,用户为从服务提供日志用
进入主服务的sql命令界面: .\mysql -uroot -proot
执行一下命令: mysql> create user 'master'@'%' identified by '1';
mysql> grant replication slave on *.* to 'master'@'%' identified by '1';
mysql> flush privileges;
6、查看是否创建成功:
切换到主服务的mysql的schema:use mysql
执行sql查询命令:select user ,host from user;
7、查看主服务的bin日志信息 ,这个信息要用于从服务的配置
8、设置从服务
进入从服务的sql命令界面:cmd进入从服务的bin路径执行 .\mysql -uroot -proot
执行:stop slave; (关闭salve)
执行:mysql> change master to
-> master_host="192.168.1.127",
-> master_user="master",
-> master_password="1",
-> master_log_file="mysql-log-bin.000001",
-> master_log_pos=154;
注:master_host : 设置要连接的主服务器的ip地址
master_user : 设置要连接的主服务器的用户名
master_password : 设置要连接的主服务器的密码
master_log_file : 设置要连接的主服务器的bin日志的日志名称,信息来源第7步
master_log_pos : 设置要连接的主服务器的bin日志的记录位置,信息来源第7步,这里不需要加引号
9、启动从服务器
执行命令:mysql> start slave;
10、查看配置情况
执行命令:mysql> show slave status\G;
查看信息:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
注:我在配置时发现 Slave_IO_Running:No
查看日志发现: [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
原因分析:
mysql 5.6的复制引入了uuid的概念,各个复制结构中的server_uuid得保证不一样,
但是查看到直接copy data文件夹后server_uuid是相同的,show variables like '%server_uuid%';
解决方法:
找到data文件夹下的auto.cnf文件,修改里面的uuid值,保证各个db的uuid不一样,重启db即可
---END---