MySQL主從同步 5.7

手動搭建MySQL主從同步

本次搭建主從同步的環境:阿里雲CentOS 7.6 ,MySQL5.7

服務器安裝數據庫,請參考我博客裏的Centos安裝mysql那篇文章。

CentOS 7 yum 安裝 MySQL 5.7

場景介紹

本次將會搭建MySQL的主從同步,其中一臺Master,一臺Slave

Master: IP:112.124.1.1  Port:3306
Slave1: IP:112.54.1.2  Port:3306

開始搭建

修改配置文件
當你在服務器安裝完MySQL後,在系統的etc文件下有個my.cnf配置文件。
打開文件,加入如下內容(別忘了修改之前做好備份):

#Master
#該配置爲Master的配置
server-id=201 #Server id 每臺MySQL的必須不同
log-bin=/var/lib/mysql/mysql-bin.log #代表開啓binlog日誌
expire_logs_days=10 #日誌過期時間
max_binlog_size=200M #日誌最大容量
binlog_ignore_db=mysql #忽略mysql庫,表示不同步此庫
#該配置爲Slave的配置,第二臺Slave也是這麼配置,不過要修改一下server-id
server-id=202
expire_logs_days=10 #日誌的緩存時間
max_binlog_size=200M #日誌的最大大小
replicate_ignore_db=mysql #忽略同步的數據庫

在Master庫中新增Slave用戶

打開Master節點的客戶端 ,**mysql -u root -p** 密碼

創建用戶 create user 'Slave'@'%' identified by '123456';

給新創建的用戶賦權:grant replication slave on *.* to 'Slave'@'%';

查看Master節點狀態

以上操作都沒有問題後,我們在客戶端中輸入show master status查看master的binlog日誌。
在這裏插入圖片描述

File是指主節點的備份文件名稱,Position是定位內容位置,從節點備份是會根據這個地方來備份。

配置Slave節點

打開Slave節點客戶端,在我們的Slave節點中輸入如下命令:

change master to master_user='Slave',master_password='123456',master_host='你自己服務器的IP地址',master_log_file='mysql-bin.000001',master_log_pos=1422627;

#注意,這裏的master_log_file,就是binlog的文件名,輸入上圖中的mysql-bin.000001,每個人的都可能不一樣。
#注意,這裏的master_log_pos是binlog偏移量,輸入上圖中的1422627,每個人的都可能不一樣。

配置完成後,輸入 start slave;
啓動從節點後,輸入 show slave status;來查看從節點狀態
在這裏插入圖片描述

當返回結果中,Slave_Master_Log_File 和 Slave_IO_Running都是YES; 說明主從同步開啓成功。

搭建完成

通過上述步驟,就完成了MySQL主從同步的搭建。下面我們可以進行測試。

這時候你在Master庫中新建表或者操作表中的數據,Slave庫都會備份下來。

注意事項

如果出現IO線程一直在Connecting狀態,可以看看是不是兩臺機器無法相互連接。
如果可以相互連接,那麼有可能是Slave賬號密碼寫錯了,重新關閉Slave然後輸入上面的配置命令再打開Slave即可。

如果出現SQL線程爲NO狀態,那麼有可能是從數據庫和主數據庫的數據不一致造成的,或者事務回滾,如果是後者,先關閉Slave,然後先查看 Masterbinlogposition,然後輸入配置命令,再輸入set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;,再重新start slave;即可.

如果問題是前者,那麼就排查一下是不是存在哪張表沒有被同步,是否存在主庫存在而從庫不存在的表,自己同步一下再重新配置一遍即可。


有些事情感覺很難,其實不麻煩。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章