1. 程式人生 > 實用技巧 >mysql router 中介軟體 配置

mysql router 中介軟體 配置

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命令殺死程序,再執行