1. 程式人生 > >mysql叢集搭建之主從複製

mysql叢集搭建之主從複製

0.準備環境,需要兩臺伺服器,一主一從。

在我的示例中,主伺服器的ip是192.168.68.3;從伺服器可以參照VMWare克隆伺服器,我搭建了一個192.168.68.5作為從伺服器。

因為我是在上一節開啟慢查詢後克隆過來的伺服器,所以從伺服器理論上也安裝了mysql的服務(到時有細節會說,有個uuid是相同的)。而自己在克隆時,原來不需要安裝mysql(重新裝一下linux之mysql的安裝和配置),安裝的的話更方便,一會改下uuid的細節就可以了。

1.主伺服器配置(在192.168.68.3的機器上)

1)修改my.conf檔案

在[mysqld]段新增

#啟用二進位制日誌
log-bin=mysql-bin
#伺服器唯一ID,一般取IP最後一段
server-id=3

我起的名叫mysql-bin,到時會生成mysql-bin.000001這樣的檔案

server-id一般和機器ip尾數一樣就行,我的是3

2)重啟mysql服務

service mysqld restart

3)建立帳戶並授權slave

mysql>GRANT FILE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456';
mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%' identified by '123456'; 

#一般不用root帳號,“%”表示所有客戶端都可能連,只要帳號,密碼正確,此處可用具體客戶端IP代替,如192.168.145.226,加強安全。

我這邊為了演示,用了root賬號。讓從機通過主機的使用者名稱/密碼 root/root登入進入

然後重新整理許可權

mysql> FLUSH PRIVILEGES;

4)查詢master的狀態

mysql> show master status;

position=602這個偏移量記住,後面會用到

之前的設定中,發現在/var/lib/mysql資料夾下,已經多出了mysql-bin開頭的bin log日誌檔案

2.主伺服器配置(在192.168.68.5的機器上)

1)修改my.conf檔案

[mysqld]
server-id=5

2)刪除UUID檔案

第0步驟的時候,說uuid的細節。如果是克隆過來的機器,在192.168.68.5(從伺服器)上的/var/lib/mysql/auto.cnf

兩個auto.cnf檔案的uuid是一樣的,這樣做主從時會有錯誤

解決辦法就是將從伺服器中的auto.cnf檔案給刪掉,然後重啟服務

看清是從伺服器的

然後他會生成一個新的auto.cnf檔案

3)配置從伺服器

mysql>change master to master_host='192.168.68.3',master_port=3306,master_user='root',master_password='root',master_log_file='mysql-bin.000001',master_log_pos=602;

注意語句中間不要斷開,master_port為mysql伺服器埠號(無引號),master_user為執行同步操作的資料庫賬戶,“602”無單引號(此處的602就是show master status 中看到的position的值,這裡的mysql-bin.000001就是file對應的值)。

4)啟動從伺服器複製功能

mysql>start slave;

5)檢查從伺服器複製功能狀態

mysql> show slave status;

注:Slave_IO_Running及Slave_SQL_Running程序必須正常執行,即YES狀態,否則都是錯誤的狀態(如:其中一個NO均屬錯誤)。

我們已經看到,這兩個引數狀態已經是yes了

3.驗證

從主伺服器寫了一條資料,發現從從伺服器中能夠查詢出有資料更新了。

 

完畢!