Windows中使用Mysql-Proxy實現Mysql讀寫分離

Windows中使用Mysql-Proxy實現Mysql讀寫分離

 

Windows中使用Mysql-Proxy實現Mysql讀寫分離css

簡介

讀寫分離

當業務量上來時,每每一臺單機的mysql數據庫不能知足性能需求,這時候就須要配置主從庫讀寫分離來解決性能瓶頸。簡單的來講,就是原先一臺數據庫既讀又寫,如今改爲一臺寫和1臺以上讀。
讀寫分離html

環境準備

  1. 3臺windows server 2012(理論上windows server 2003+ 都行)
  2. mysql 5.7
  3. mysql-proxy-0.8.5-windows-x86-32bit
  4. navicat for mysql (若是你對命令行比較熟,忽略這個)

分配IP

  1. 主數據庫:192.168.47.128
  2. 從數據庫:192.168.47.129
  3. 中間件服務器:192.168.47.130

安裝mysql

在[主]192.168.47.128和[從]192.168.47.129兩臺機子上根據嚮導模式一步步安裝mysql 5.7,這裏我選擇developer環境,安裝後先中止mysql服務mysql

配置my.ini

在主從的服務器上分別找到如下路徑的my.ini文件linux

C:\ProgramData\MySQL\MySQL Server 5.7\my.ini

主數據庫配置的mysqld節點下加入sql

[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,將它改爲和主庫不同的編號,例如windows

主庫

server-id=1

從庫

server-id=2

多個從庫時,能夠遞增填寫服務器

配置主數據庫

開啓主數據庫服務,建立用來測試讀寫分離的數據庫
對用戶受權使其用於複製主庫數據markdown

grant replication slave on *.* to 'slave'@'192.168.47.%' identified by '123456';

用戶名:slave
密碼:123456ide

而後查詢主數據庫狀態,並記錄下File和Position字段的值

show master status;

個人
File:mysql-bin.000005
Position:1767

配置從數據庫

開啓從數據庫服務,手動建立測試讀寫分離的庫,這邊不會幫你自動建立,同時也建立和主庫同樣的用戶,我這裏仍是用root
先中止從庫

stop slave

設置它的master

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_filemaster_log_pos就是配置主數據庫查詢到的FilePosition

啓動從庫

start slave;

檢查是否啓動成功

show slave status;

若是Slave_IO_State字段顯示 Waiting for master to send event說明成功,固然你也能夠在主庫表中插入一條數據,看看從庫是否有同步,到這裏,已經配置好主從同步了。

配置Mysql-Proxy

下載 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-32bitbin目錄中,雙擊運行
接下來,用你的客戶端工具鏈接 192.168.47.130:6217(6217這個端口隨便設置,跟上面的bat裏面一致就行),測試是否能夠能正常鏈接,若是能鏈接,可是不能顯示讀寫分離的數據庫,那通常是權限設置問題

總結

在windows下部署Mysql讀寫分離,仍是比較少的,windows的中間件也好久沒更新了,找到的資料大部分都在linux環境中,官方文檔也沒找到相關說明,參考了多個地方,才弄成功。固然這只是初級的讀寫分離方案,要將它作的好,還有不少事情要作,可是這對於理解讀寫分離有比較大的意義。

參考博客https://blog.csdn.net/will5451/article/details/72731656

相關文章
相關標籤/搜索