Windows中使用Mysql-Proxy實現Mysql讀寫分離mysql
當業務量上來時,每每一臺單機的mysql數據庫不能知足性能需求,這時候就須要配置主從庫讀寫分離來解決性能瓶頸。簡單的來講,就是原先一臺數據庫既讀又寫,如今改爲一臺寫和1臺以上讀。
linux
在[主]192.168.47.128和[從]192.168.47.129兩臺機子上根據嚮導模式一步步安裝mysql 5.7,這裏我選擇developer環境,安裝後先中止mysql服務sql
在主從的服務器上分別找到如下路徑的my.ini文件數據庫
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
主數據庫配置的mysqld節點下加入windows
[mysqld] log-bin=mysql-bin #從庫會基於此log-bin來作複製 binlog-do-db=mytest #用於讀寫分離的具體數據庫,這裏我建立了mytest做測試 binlog_ignore_db=mysql #不用於讀寫分離的具體數據庫 binlog_ignore_db=information_schema #和binlog-do-db同樣,能夠設置多個
從數據庫配置配置的mysqld節點下加入服務器
[mysqld] log-bin=mysql-bin #從庫會基於此log-bin來作複製 replicate-do-db=mytest #用於讀寫分離的具體數據庫,這裏我建立了mytest做測試
注:在對從數據庫配置的時候,須要在文件內找到找到server-id,將它改爲和主庫不同的編號,例如ide
server-id=1
server-id=2
多個從庫時,能夠遞增填寫工具
開啓主數據庫服務,建立用來測試讀寫分離的數據庫
對用戶受權使其用於複製主庫數據性能
grant replication slave on *.* to 'slave'@'192.168.47.%' identified by '123456';
用戶名:slave
密碼:123456測試
而後查詢主數據庫狀態,並記錄下File和Position字段的值
show master status;
個人
File:mysql-bin.000005
Position:1767
開啓從數據庫服務,手動建立測試讀寫分離的庫,這邊不會幫你自動建立,同時也建立和主庫同樣的用戶,我這裏仍是用root
先中止從庫
stop slave
change master to master_host='192.168.47.128', master_port=3306, master_user='root', master_password='root', master_log_file='mysql-bin.000005', master_log_pos=1767;
注:這裏的 master_log_file和master_log_pos就是配置主數據庫查詢到的File和Position
start slave;
show slave status;
若是Slave_IO_State字段顯示 Waiting for master to send event說明成功,固然你也能夠在主庫表中插入一條數據,看看從庫是否有同步,到這裏,已經配置好主從同步了。
下載 mysql-proxy-0.8.5-windows-x86-32bit 解壓到任意位置,它是綠色免安裝版的,建立配置文件 mysql-proxy.conf,內容以下
[mysql-proxy] admin-username=root admin-password=root admin-lua-script=C:/soft/mysql-proxy-0.8.5-windows-x86-32bit/lib/mysql-proxy/lua/admin.lua proxy-backend-addresses=192.168.47.128:3306 proxy-read-only-backend-addresses=192.168.47.129:3306 proxy-lua-script=C:/soft/mysql-proxy-0.8.5-windows-x86-32bit/share/doc/mysql-proxy/rw-splitting.lua log-file=C:/soft/mysql-proxy-0.8.5-windows-x86-32bit/log/mysql-proxy.log log-level=debug daemon=true keepalive=true
admin-username:用於中間件鏈接的用戶,這裏我仍是用root偷懶
admin-password:同上用戶密碼
admin-lua-script:根據存放的文件位置自行調整
proxy-backend-addresses:主庫服務器+端口
proxy-read-only-backend-addresses:從庫服務器+端口,多個從庫用,隔開
proxy-lua-script:根據存放的文件位置自行調整
log-file:日誌文件存放位置,若是你指定了一個路徑,請確保手動建立了對應的文件夾,不然會報錯
log-level:日誌級別
daemon:以守護進程方式運行
keepalive:長鏈接
將上面建立的文件複製到mysql-proxy-0.8.5-windows-x86-32bit的bin目錄中
建立install.bat文件,內容以下
mysql-proxy -P 192.168.47.130:6217 --defaults-file=C:\soft\mysql-proxy-0.8.5-windows-x86-32bit\bin\mysql-proxy.conf
也放在mysql-proxy-0.8.5-windows-x86-32bit的bin目錄中,雙擊運行
接下來,用你的客戶端工具鏈接 192.168.47.130:6217(6217這個端口隨便設置,跟上面的bat裏面一致就行),測試是否能夠能正常鏈接,若是能鏈接,可是不能顯示讀寫分離的數據庫,那通常是權限設置問題
在windows下部署Mysql讀寫分離,仍是比較少的,windows的中間件也好久沒更新了,找到的資料大部分都在linux環境中,官方文檔也沒找到相關說明,參考了多個地方,才弄成功。固然這只是初級的讀寫分離方案,要將它作的好,還有不少事情要作,可是這對於理解讀寫分離有比較大的意義。
參考博客 https://blog.csdn.net/will5451/article/details/72731656