mysql5.7主从(Master/Slave)同步配置

环境:

mysql版本都是5.7(以前的版本配置可能不一样)

主(Master) windows:192.168.0.68

从(Slave) centos7:192.168.0.4

 

基本环境配置:

要保证防火墙3306端口开放,如果只是为了学习,可以直接关闭防火墙。

centos关闭防火墙方法:service iptables stop或者systemctl stop firewalld

 

Master的配置

修改/etc/my.cnf

[mysqld]
log-bin=mysql-bin
server-id=2
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql
binlog-do-db=test

 

这里的server-id用于标识唯一的数据库,在从库必须设置为不同的值。

binlog-ignore-db:表示同步的时候忽略的数据库

binlog-do-db:指定需要同步的数据库

 

1、修改完配置,重启mysql

systemctl restart mysql

2、进入mysql,mysql -uroot -p,回车,输入mysql密码进入。

3、赋予从库权限账号,允许用户在主库上读取日志,赋予192.168.0.4也就是Slave机器有File权限,

只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。

grant FILE on *.* to 'root'@'192.168.0.4' identified by 'root';
grant replication slave on *.* to 'root'@'192.168.0.4' identified by 'root';
flush privileges;

(二)grant all privileges on *.* to 'root'@'ip地址' identified by '密码' with grant option;

这里的用户是同步的时候从库使用的用户。

4、重启mysql,登录mysql,查看主库信息

show master status;

show master status\G;

如果该命令没数据,说明上面配置有误。

File是同步会使用到的binlog文件,Position是同步的时候也要用到的。

 

Slave的配置

1、修改/etc/my.cnf

log-bin=mysql-bin
server-id=3
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql
replicate-do-db=test
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60 

 

2、在这里可以看到,在mysql5.6之后的版本中没有指定:而且在5.6之后的版本设置下面的内容的话会报错

master-host=192.168.1.1 #Master的主机IP
master-user=root
master-password=mysql password #Master的MySQL密码 

3、修改完/etc/my.cnf后,重启一下mysql(systemctl restart mysql) 

service mysqld restart

systemctl restart mysql

进入Slave的mysql控制台,执行下面操作:

stop slave;
(一)change master to master_host='192.168.0.68',master_user='root',master_password='root',master_log_file='mysql-bin.000004', master_log_pos=28125;

start slave;

注意:上面的(一) 里面的命令一直执行不成功,最后出来的结果是另一台机器 登录mysql不成功(命令是:mysql -h192.168.6.119 -u*** -p****)。说明授权不成功,所以干脆给她赋予的全部的权限。也就是用(二)的命令。

注意:上面的master_log_file是在Master中show master status显示的File,

而master_log_pos是在Master中show master status显示的Position。

然后可以通过show slave status查看配置信息。

(show slave status  这个指令数据看起来比较乱,可以用show slave status\G;)

如果没有同步成功,请查看show slave status中的position和file是否和master中的对应了。

 

注入是windows环境下。。。。。。。。

windows下重启mysql

 

同时检查window的环境下的防火墙。。。。。。 控制面板 ->防火墙->高级设置->入站规则

 

5、由于我这次是不同的库名,相同的表结构和表。所以使用 replicate-rewrite-db=liang->liang_test

这个字段,这就要求我要设置 

master-info-repository=TABLE
relay-log-info-repository=TABLE

这两个属性。同时我们还有触发器。这对于主从同步的复制方式 或者说同步方式有要求。

如果是sql同步方式则从库的触发器会被触发 混合方式就更复杂了。row方式才不会被触发

同时同步语句也有一些变化。。。。。。。

stop slave;
(一)change master to master_host='192.168.6.22',master_user='pobo',master_password='pobo9121',master_log_file='mysql-bin.000005', master_log_pos=154;

start slave;

符合我们的要求,详细请看 :https://www.cnblogs.com/kylinlin/p/5258719.html

故又配置了binlog_format 为ROW模式。。。。。

这久是触发器主库会触发,从库不触发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值