數(shù)據(jù)庫性能優(yōu)化普遍采用集群方式,oracle集群軟硬件投入昂貴,今天花了一天時(shí)間搭建基于mysql的集群環(huán)境。
主要思路
簡單說,實(shí)現(xiàn)mysql主備復(fù)制-->利用mycat實(shí)現(xiàn)負(fù)載均衡。
比較了常用的讀寫分離方式,推薦mycat,社區(qū)活躍,性能穩(wěn)定。
測試環(huán)境
MYSQL版本:Server version: 5.5.53,到官網(wǎng)可以下載WINDWOS安裝包。
注意:確保mysql版本為5.5以后,以前版本主備同步配置方式不同。
linux實(shí)現(xiàn)思路類似,修改my.cnf即可。
A主mysql。192.168.110.1:3306, 用戶root,密碼root。操作系統(tǒng):win7 x64,內(nèi)存:4g 安裝路徑:C:/Program Files/MySQL/MySQL Server 5.5/bin B備mysql。192.168.110.2:3306, 用戶root,密碼root。操作系統(tǒng):win2003 x64,內(nèi)存:1g 安裝路徑:C:/Program Files/MySQL/MySQL Server 5.5/bin A主、B備的mysql中創(chuàng)建sync_test數(shù)據(jù)庫實(shí)現(xiàn)mysql主備復(fù)制
主要思路:A主mysql開啟日志,B備mysql讀取操作日志,同步執(zhí)行。
一般為主備同步,主主同步不推薦使用。
配置A主mysql
1)修改my.ini。需要在log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log"的相關(guān)位置創(chuàng)建log目錄,以及mysql-bin.log文件。
| [mysqld]server-id=1 #主機(jī)標(biāo)示,整數(shù)port=3306 log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log" #確保此文件可寫read-only=0 #主機(jī),讀寫都可以binlog-do-db=sync_test #需要備份數(shù)據(jù)庫,多個(gè)寫多行binlog-ignore-db=mysql #不需要備份的數(shù)據(jù)庫,多個(gè)寫多行 | 
2)允許MYSQL遠(yuǎn)程訪問
| #登錄mysql console進(jìn)入%home%/bin,執(zhí)行mysql -uroot -proot#授權(quán)。允許root用戶,從192.168.110.*的IP范圍 遠(yuǎn)程訪問A主mysqlmysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.110.*' IDENTIFIED BY 'root' WITH GRANT OPTION;#生效。該操作很重要!mysql>FLUSH PRIVILEGES; | 
3)重啟A主mysql數(shù)據(jù)庫
進(jìn)入%home%/bin,執(zhí)行mysql -uroot -proot
| mysql>net stop mysql;mysql>net start mysql; | 
4)查看主mysql日志狀態(tài)
| mysql> show master status/G;*************************** 1. row *************************** File: mysql-bin.000003 Position: 107 Binlog_Do_DB: sync_testBinlog_Ignore_DB: mysql1 row in set (0.00 sec)ERROR:No query specified | 
配置B備mysql
1)修改my.ini。需要在log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log"的相關(guān)位置創(chuàng)建log目錄,以及mysql-bin.log文件。
| [mysqld]# add for sycn testserver-id=2 #從機(jī)標(biāo)識(shí)log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log" #確保此文件可寫#master-host="192.168.110.1" #主機(jī)Ip#master-user=root #數(shù)據(jù)庫訪問用戶名#master-pass=root #數(shù)據(jù)庫訪問密碼#master-port=3306 #主機(jī)端口#master-connect-retry=60 #如果從服務(wù)器發(fā)現(xiàn)主服務(wù)器斷掉,重新連接的時(shí)間差(秒)replicate-do-db=sync_test #只復(fù)制某個(gè)庫replicate-ignore-db=mysql #不復(fù)制某個(gè)庫 |