环境
master(CtenOS7):192.168.200.131 ----ifconfig查看->ens33->inet
slave(win10):192.168.250.52 ----ipconfig查看->无线局域网适配器 WLAN:-> IPv4 地址
保证两个环境中MySQL版本一致
网络互通
win:ping 192.168.200.131
linux:ping 192.168.250.52
保证3306端口是开放的
开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重启防火墙
firewall-cmd --reload
查看当前开放的端口列表
firewall-cmd --list-ports
可以在win下测试是否通过mysql命令能够成功连接centos的mysqld服务。
systemctl start firewalld.service
//开启防火墙,重启无效
systemctl stop firewalld.service
//关闭防火墙,重启无效
systemctl enable firewalld.service
//开启防火墙,重启有效
systemctl disable firewalld.service
//关闭防火墙,重启有效
systemctl status firewalld.service
//查看状态
master配置
开启二进制日志
vim /etc/my.cnf
创建一个用于主从库通信用的账号
如果虚拟机是net模式,需要找:
也就是ip为:192.168.200.1。
实际上是windows在和虚拟机进行通信时,windows ip:192.168.250.52 先将数据发送到192.168.200.1网关上,然后网关在把数据转发到linux上。
创建账号
CREATE USER 'mslave'@'192.168.200.1' IDENTIFIED BY '1qaz@WSX';
设置权限
GRANT REPLICATION SLAVE ON *.* to 'mslave'@'192.168.200.1' IDENTIFIED BY '1qaz@WSX';
获取binlog的日志文件名和position
show master status;
slave配置
配置全局唯一的server-id
找到my.ini,进行配置:
重启:
使用master创建的账户读取binlog同步数据
CHANGE MASTER TO MASTER_HOST='192.168.200.131',
MASTER_PORT=3306,
MASTER_USER='mslave',
MASTER_PASSWORD='1qaz@WSX',
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=2527;
开启
START SLAVE
查看
通过show slave status命令查看主从复制状态。show processlist查看master和salve相关线程的运行状态。
测试
主库
从库
在连接之前的不会同步,也就是上面说的2527位置以后才开始同步
补充一个报错
如果显示以下,说明连接失败:
解决办法
-
从库stop slave;
-
清除从库配置:reset slave all;
-
重新配置主库信息
CHANGE MASTER TO MASTER_HOST='192.168.200.131',
MASTER_PORT=3306,
MASTER_USER='mslave',
MASTER_PASSWORD='1qaz@WSX',
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=2527,
get_master_public_key=1;
-
从库 start slave;
-
查询从库状态:show slave status;