今天說一下MySQL的主從複製如何做到! 準備工作: 1.兩個虛擬機:我這裡用的是CentOS5.5,IP地址分別是192.168.1.101 和192.168.1.105; 101做主伺服器,105做從伺服器(都已經安裝相同版本的Mysql); 2.本機環境:Apache+PHP+MySQL 好了
今天說一下MySQL的主從複製如何做到!
準備工作:
1.兩個虛擬機:我這裡用的是CentOS5.5,IP地址分別是192.168.1.101 和192.168.1.105;
101做主伺服器,105做從伺服器(都已經安裝相同版本的Mysql);
2.本機環境:Apache+PHP+MySQL
好了,現在開始吧,來看看這聽起來高大上的主從複製是怎麼回事。
原理:mysql要做到主從複製,其實依靠的是二進位日誌,即:假設主伺服器叫A,從伺服器叫B;主從複製就是
B跟著A學,A做什麼,B就做什麼。那麼B怎麼同步A的動作呢?現在A有一個日誌功能,把自己所做的增刪改查的動作
全都記錄在日誌中,B只需要拿到這份日誌,照著日誌上面的動作施加到自己身上就可以了。這樣就實現了主從複製。
擴展:MYSQL還有一種日誌叫做:慢日誌
可以設置一個時間,那麼所有執行時間超過這個時間的SQL都會被記錄下來。這樣就可以通過慢日誌快速的找到網站中SQL的瓶頸來進行優化。
大家有時間可以研究一下,這裡不多做介紹。
實現步驟:
1.首先修改mysql的配置文件,使其支持二進位日誌功能。
打開主伺服器的mysql配置文件:my.conf
代碼:# vi /etc/my.cnf
加入如下三行代碼:
參數解釋:log-bin=mysql-bin //將mysql二進位日誌取名為mysql-bin
binlog_format=mixed //二進位日誌的格式,有三種:statement/row/mixed,具體分別不多做解釋,這裡使用mixed
server-id=101 //為伺服器設置一個獨一無二的id便於區分,這裡使用ip地址的最後一位充當server-id
配置完成,:wq 保存,重啟mysql
重啟mysql命令:# service mysqld 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;
上面兩項均為yes,說明配置成功,否則,請重覆前面的步驟。
ok,到這裡MySQL的主從複製就配置完了,其實明白原理的話還是很簡單的,
這裡就不給大家測試了,大家配置完可以自己測試一下,有什麼問題的話,
歡迎到評論區拍磚哈!