环境:mysql
mysql版本都是5.7(之前的版本配置可能不同)sql
主(Master) windows:192.168.0.68数据库
从(Slave) centos7:192.168.0.4windows
基本环境配置:centos
要保证防火墙3306端口开放,若是只是为了学习,能够直接关闭防火墙。ide
centos关闭防火墙方法:service iptables stop或者systemctl stop firewalld学习
Master的配置centos7
修改/etc/my.cnfspa
[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用于标识惟一的数据库,在从库必须设置为不一样的值。rest
binlog-ignore-db:表示同步的时候忽略的数据库
binlog-do-db:指定须要同步的数据库
一、修改完配置,重启mysql
systemctl restart mysql
二、进入mysql,mysql -uroot -p,回车,输入mysql密码进入。
三、赋予从库权限帐号,容许用户在主库上读取日志,赋予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;
这里的用户是同步的时候从库使用的用户。
四、重启mysql,登陆mysql,查看主库信息
show master status;
若是该命令没数据,说明上面配置有误。
File是同步会使用到的binlog文件,Position是同步的时候也要用到的。
Slave的配置
一、修改/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
二、在这里能够看到,在mysql5.6以后的版本中没有指定:并且在5.6以后的版本设置下面的内容的话会报错
master-host=192.168.1.1 #Master的主机IP master-user=root master-password=mysql password #Master的MySQL密码
三、修改完/etc/my.cnf后,重启一下mysql(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;
注意:上面的master_log_file是在Master中show master status显示的File,
而master_log_pos是在Master中show master status显示的Position。
而后能够经过show slave status查看配置信息。
若是没有同步成功,请查看show slave status中的position和file是否和master中的对应了。