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.驗證
從主伺服器寫了一條資料,發現從從伺服器中能夠查詢出有資料更新了。
完畢!