mysql router 中介軟體 配置
阿新 • • 發佈:2020-11-23
mysql router 解決高可用,讀寫分離,負載均衡
1 首先配置好主從同步
2 下載mysql-router
wget https://dev.mysql.com/get/Downloads/MySQL-Router/mysql-router-8.0.18-linux-glibc2.12-x86_64.tar.xz
tar -Jxvf mysql-router-8.0.18-linux-glibc2.12-x86_64.tar.xz
3 修改配置檔案
比如解壓的目錄是
/usr/local/mysql-router/
cp /usr/local/mysql-router/share/doc/mysqlrouter/sample_mysqlrouter.conf /etc/mysql-route/mysqlrouter.conf
[DEFAULT] # 日誌存放目錄 logging_folder = /data/log/mysql-route # 外掛存放目錄 plugin_folder = /usr/local/mysql-router/lib/mysqlrouter # 配置檔案存放目錄 config_folder = /etc/mysql-route # 執行目錄 runtime_folder = /var/run [logger] # 日誌執行級別 level = debug # 主節點故障轉移配置 [routing:basic_failover] # 寫節點地址 bind_address=10.10.81.134 # 寫節點埠 bind_port = 7001 # 模式,讀寫 mode = read-write # 主節點地址:預設情況下第一臺主資料庫為寫主庫,當第一臺主資料庫DOWN機後,第二臺資料庫被提升為主庫 destinations = 10.10.50.60:3306,10.10.117.231:3306 # 從節點負載均衡配置 [routing:balancing] # 繫結的IP地址 bind_address=10.10.81.134 # 監聽的埠 bind_port = 7002 # 連線超時時間 connect_timeout = 3 # 最大連線數 max_connections = 1024 # 後端伺服器地址 destinations = 10.10.117.231:3306 # 模式:讀還是寫 mode = read-only [keepalive] interval = 60
要注意的點:
1)目錄首先先建好,
2)bind_address繫結的ip地址要是內網的(ifconfig),配置公網地址會啟動失敗。
3) mode項不是看上去理解的字面意思,mode=read-write,代表,同時只有一個可用,一開始是首個可用,如果首個掛了之後,請求自動落到第二個服務端,後面及時第一個恢復好了,也不會有請求給第一次個了
mode=reqd-only時,是請求負載輪詢給配置的服務端,當其中一個服務端掛了,請求就不再給這個恢復端,但是當這個服務又好了之後,他會有心跳去檢查,查到壞的服務端好了之後,這個服務又會重新加入到輪詢
4) 唯一一個缺點是,mysql-router不能判斷sql語句是寫操作還是讀操作,所以,一般是配置兩個埠,業務端自己來判斷比如寫的的埠呼叫7001,讀的埠調7002.
啟動:
/usr/local/mysql-router/bin/mysqlrouter -c /etc/mysql-route/mysqlrouter.conf &
通過日誌來檢查是否檢測成功
tail -f /data/log/mysql-route/mysqlrouter.log
如果成功會有keepalive日誌,和連線日誌
下面介紹怎麼測試:
你就可以用本前主機
mysql -h ip地址 -uroot -P7001 -p
ip地址就是mysql-router配置檔案設定的bind_address項地址,再輸入密碼
這個時候你可以看log日誌,中介軟體給你轉發是哪個真實mysql服務端,
quit退出,再重新請求,是不是會給你轉發到另外一臺mysql服務端。
把主伺服器mysql stop,再多次連線,是不是不會轉發到停止的這臺來了,
重放啟動停止的伺服器,在read_only時,是不是又會使用此臺伺服器.
mysql-router目前沒有停止命令,需要用kill命令殺死程序,再執行