1. 程式人生 > >mysqlroute配置和使用之一

mysqlroute配置和使用之一

MySQL Router是MySQL官方推出的一個輕量級MySQL中介軟體是處於應用client和dbserver之間的輕量級代理程式,它能檢測,分析和轉發查詢到後端資料庫例項,並把結果返回給client。是mysql-proxy的一個替代品.但是和mysql-proxy有區別。mysqlroute使用了兩個埠進行讀寫分離

預設埠號 作用 說明
7001 預設的是讀寫埠 mode = read-write預設情況下第一臺主資料庫為寫主庫,當第一臺主資料庫DOWN機後,第二臺資料庫被提升為主庫,如果第一臺不出問題,第二臺是不會被使用的。可以作高可用使用
7002 預設是讀埠 如果設定以後,根據設定的列表進行輪詢使用

MySQL Router接受前端應用程式請求後,根據不同的埠來區分讀寫,把連線讀寫埠的所有寫和查詢發往主庫,把連線只讀埠的查詢以輪詢方式發往多個從庫,從而實現讀寫分離的目的。讀寫返回的結果會交給MySQL Router,由MySQL Router返回給客戶端的應用程式。
我理解的是mysql-proxy在使用的時候與連線單臺數據庫操作一樣,而mysql route則是把多臺主機的讀寫集中在一起,進行讀寫分離,在使用的時候還是需要程式進行改動。具體效能測試,在接下的文章中會慢慢測試

安裝可以使用多種方式,因為測試我選擇了二進位制包

1.下載

cd /usr/local/ && wget -c https://dev.mysql.com/get/Downloads/MySQL-Router/mysql-router-2.0.4-linux-glibc2.12-x86-64bit.tar.gz

1.解壓

cd /usr/local/ && tar -zxvf mysql-router-2.0.4-linux-glibc2.12-x86-64bit.tar.gz
ln -s   mysql-router-2.0.4-linux-glibc2.12-x86-64bit/  mysql-router

2.建立必要的檔案,複製配置檔案

mkdir /etc/mysql-route/
mkdir /var/log/mysql-route
chown mysql:mysql /var/log/mysql-route
cp /usr/local/mysql-router/share/doc/mysqlrouter/sample_mysqlrouter.ini /etc/mysql-route/mysqlrouter.conf

mysqlrouter.conf修改

[DEFAULT]
logging_folder = /var/log/mysql-route
plugin_folder = /usr/local/mysql-router/lib/mysqlrouter
config_folder = /etc/mysql-route
runtime_folder = /var/run/

[logger]
level = INFO

# 主節點故障轉移配置
[routing:basic_failover]
# 寫節點地址
bind_address=0.0.0.0
# 寫節點埠
bind_port = 7001
# 模式,讀寫
mode = read-write
# 預設情況下第一臺主資料庫為寫主庫,當第一臺主資料庫DOWN機後,第二臺資料庫被提升為主庫
destinations = 192.168.10.191:3306

# 從節點負載均衡配置
[routing:balancing]
# 繫結的IP地址
bind_address=0.0.0.0
# 監聽的埠
bind_port = 7002
# 連線超時時間
connect_timeout = 3
# 最大連線數
max_connections = 1024
# 後端伺服器地址.預設讀進行輪詢
destinations = 192.168.10.192:3306,192.168.10.191:3306
# 模式:讀還是寫
mode = read-only

[keepalive]
interval = 60

使用supervisor進行控制

[program:mysqlroute]
command=/usr/local/mysql-router/bin/mysqlrouter -c /etc/mysql-route/mysqlrouter.conf
autostart = true
autorestart=true
redirect_stderr=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0

注意事項。mysql叢集中的賬號密碼要保持一致,mysqlroute是進行代理使用,不需要事先知道後端的mysql密碼,這個和mycat有些區別