環境: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中的對應了。