mysql主從複製

 

mysql實現主從複製

 

 今天說一下MySQL的主從複製如何作到!html

準備工做:mysql

1.兩個虛擬機:我這裏用的是CentOS5.5,IP地址分別是192.168.1.101 和192.168.1.105;sql

       101作主服務器,105作從服務器(都已經安裝相同版本的Mysql);數據庫

2.本機環境:Apache+PHP+MySQL服務器

 

好了,如今開始吧,來看看這聽起來高大上的主從複製是怎麼回事。post

 

原理:mysql要作到主從複製,其實依靠的是二進制日誌,即:假設主服務器叫A,從服務器叫B;主從複製就是優化

     B跟着A學,A作什麼,B就作什麼。那麼B怎麼同步A的動做呢?如今A有一個日誌功能,把本身所作的增刪改查的動做網站

     全都記錄在日誌中,B只須要拿到這份日誌,照着日誌上面的動做施加到本身身上就能夠了。這樣就實現了主從複製。url

 

擴展:MYSQL還有一種日誌叫作:慢日誌rest

     能夠設置一個時間,那麼全部執行時間超過這個時間的SQL都會被記錄下來。這樣就能夠經過慢日誌快速的找到網站中SQL的瓶頸來進行優化。

         你們有時間能夠研究一下,這裏很少作介紹。

 

實現步驟:

1.首先修改mysql的配置文件,使其支持二進制日誌功能。

打開主服務器的mysql配置文件:my.conf

代碼:# vi /etc/my.cnf

[mysqld]

加入以下三行代碼:

參數解釋:log-bin=mysql-bin  //將mysql二進制日誌取名爲mysql-bin

       binlog_format=mixed //二進制日誌的格式,有三種:statement/row/mixed,具體分別很少作解釋,這裏使用mixed

       server-id=101 //爲服務器設置一個獨一無二的id便於區分,這裏使用ip地址的最後一位充當server-id

 

配置完成,:wq 保存,重啓mysql

重啓mysql命令:# /etc/init.d/mysql restart

一樣的,進入從服務器,配置從服務器的my.cnf,重複步驟1便可,

惟一的區別是,server-id要改爲從服務器的ip尾位,即server-id=105;其餘兩項是同樣的,保存,並重啓mySQL;

 

2.在主服務器上爲從服務器分配一個帳號,就像一把鑰匙,從服務器拿着這個鑰匙,才能到主服務器上來共享主服務器的日誌文件。

進入主服務器的mysql界面,

命令: # mysql -u root -p 111111     //我這裏mysql帳號是root,密碼是111111

在mysql操做界面下,輸入下面一行命令:

GRANT replication slave ON *.* TO 'slave'@'%' IDENTIFIED BY '111111'; 

 

3.查看主服務器BIN日誌的信息(執行完以後記錄下這兩值,而後在配置完從服務器以前不要對主服務器進行任何操做,由於每次操做數據庫時這兩值會發生改變).

 

4.設置從服務器

進入從服務器mysql

命令: # mysql -u root -p111111

 

關閉slave(若是你之前配置過主從的話,必定要先關閉)

命令:stop slave;

 

開始配置:

輸入下面代碼便可:

參數解釋:MASTER_HOST  :  設置要鏈接的主服務器的ip地址

       MASTER_USER  :  設置要鏈接的主服務器的用戶名

       MASTER_PASSWORD  :  設置要鏈接的主服務器的密碼

       MASTER_LOG_FILE  :  設置要鏈接的主服務器的bin日誌的日誌名稱,即第3步獲得的信息

       MASTER_LOG_POS  :  設置要鏈接的主服務器的bin日誌的記錄位置,即第3步獲得的信息,(這裏注意,最後一項不須要加引號。不然配置失敗)

 

先在從服務器配置完成,啓動從服務器:

命令: start slave;

 

5.查看是否配置成功:

命令: show slave status\G

 

上面兩項均爲yes,說明配置成功,不然,請重複前面的步驟。

 

ok,到這裏MySQL的主從複製就配置完了,其實明白原理的話仍是很簡單的。

相關文章
相關標籤/搜索