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;

這里的用戶是同步的時候從庫使用的用戶。

4、重啟mysql,登錄mysql,查看主庫信息

show master status;

如果該命令沒數據,說明上面配置有誤。

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)

進入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中的對應了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM