Mysql 集群環境搭建


在上一篇文章中已經詳細的寫了關於Mysql的安裝步驟。這一篇文章在上一篇文章的基礎之上接着寫集群的安裝與部署。

安裝地址:https://www.cnblogs.com/ming-blogs/p/10962554.html

MySQL從復制配置

主節點服務器 地址 192.168.0.105

從節點服務器 地址 192.168.0.107

主節點服務器安裝好之后,直接clone 一個即可,不需要重復安裝2次。

主節點服務器配置

1.進入配置頁面命令

   vi /etc/my.cnf 

2.配置服務器id server_id 

這里的server_id 盡量配置為服務器地址的后3位 以用來區分

  server_id=105

3.開啟日志文件(binLog)

  log-bin=mysql-bin 

配置文件的地址應該在 : # Recommended in standard MySQL setup,否則配置不起作用

如下圖所示

4.重啟mysql服務 

service mysqld restart

驗證是否已經配置成功

5.show variables like '%server_id%';

能夠查詢對應配置文件中的server_id 說明已經配置成功,如下圖,則表示配置成功。server_id=105

 

6.show master status;

能夠看到同步的文件,和行數說明已經配置成功。

服務器節點

1.進入配置頁面命令

   vi /etc/my.cnf 

2.配置服務器id server_id 

這里的server_id 盡量配置為服務器地址的后3位 以用來區分

  server_id=105

3.開啟日志文件(binLog)

  log-bin=mysql-bin 

4.添加需用同步的數據庫

binlog_do_db=test   

5.重啟mysql服務 

service mysqld restart

驗證是否已經配置成功

6.show variables like '%server_id%';

能夠查詢對應配置文件中的server_id 說明已經配置成功

 

7.從服務器同步主服務器配置

master_host 主服務器地址

master_user 主服務器用戶名

master_password 主服務器密碼

master_log_file 主服務器配置文件

master_log_pos 主服務器讀取配置文件的開始位置,也就是從第多少行開始讀取。

change master to master_host='192.168.0.105',master_user='root',master_password='root',master_log_file='mysql-bin.000001',master_log_pos=120;

8.開始同步 

start slave

9.檢查從服務器復制功能狀態

SHOW SLAVE STATUS

如果二個從服務器是克隆主服務器的,這時候就會出現如下圖的情況,二個服務器的server-uuid 是相同的,因為是克隆過來的。這時候運行  SHOW SLAVE STATUS  就會出現 Slave_IO_Running 為 No,而Slave_SQL_Running為Yes。說明IO同步出錯,在Last_IO_Error 字段可以看到錯誤信息,如下。錯誤信息的意思就是server-uuid 重復了。也就是下圖展示的效果。

Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work。

如果出現這種情況,需要將 /var/lib/mysql  文件下的生成uuid 的文件刪除,然后再重新啟動 mysql 服務,就會重新在生成一個 server-uuid,在下圖2中 也 顯示了這個重新生成的server-uuid。

如果你的從服務器不是克隆主服務器而是重新安裝的,那么就不會出現這種情況。直接運行  SHOW SLAVE STATUS 命令,如下圖。則表示同步成功

 

 

 

存放server-uuid的 地址,可以在 /etc/my.cnf 文件中查看,如下圖。

 

如何驗證我們mysql 主從復制 集群搭建成功?

在105節點主服務器)新建test數據庫,如果107節點(從服務器)能夠同步過來,則說明環境搭建成功。

如下圖,圖一是沒有創建test數據庫之前,在105 服務器上創建一個test數據庫,然后107關閉連接 再重新打開連接、或者直接刷新,發現test數據庫已經同步過來了,如圖2的效果。

 

同樣的,在105服務器節點中的test數據庫中新建表test001,然后在107節點中刷新,test001表也同步了過來,如下圖。

 

這時候在105節點的test數據庫中的test_001數據表添加數據,107 節點也會把數據同步過來,如下圖。

 

但是這時候我修改105節點數據庫中數據表(test_001)的數據的時候,107節點的數據並沒有更新過來,如下圖。

 

這個問題,將在下一篇讀寫分離博客中寫出來。

 

 

如果同步執行出錯,作如下修改。

show variables like '%server_id%';

show master status;

STOP SLAVE;

set GLOBAL sql_slave_skip_counter=1;

start slave;

SHOW SLAVE STATUS;

 


免責聲明!

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



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