MaxScale實現MySQL資料庫代理(下篇)

語言: CN / TW / HK

持續創作,加速成長!這是我參與「掘金日新計劃 · 6 月更文挑戰」的第24天,點選檢視活動詳情

MaxScale實現MySQL資料庫代理(下篇)

前言

使用MaxScale實現MySQL資料庫代理, 需要搭建主從資料庫, 參考之前的文章快速搭建環境

安裝MaxScale

下載

  • 檢視系統資訊 shell uname -a && cat /etc/centos-release

image.png - 下載 根據系統資訊我們選擇centos8 x86_64 maxscale-2.5.20-GA下載(6.4.0-GA沒有centos8版本), 更多版本選擇, 版本更新日誌

image.png shell wget https://dlm.mariadb.com/2241747/MaxScale/2.5.20/yum/centos/8/x86_64/maxscale-2.5.20-1.rhel.8.x86_64.rpm

安裝依賴包 shell yum install -y gnutls && yum install -y libatomic 安裝MaxScale 官網安裝教程 shell rpm -ivh maxscale-2.5.13-1.rhel.7.x86_64.rpm 建立使用者 ```sql -- 建立監聽使用者 CREATE USER 'maxscale'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; GRANT ALL PRIVILEGES ON . TO 'maxscale'@'%'; -- 建立路由使用者, 主要用來查詢mysql.user表的資訊 CREATE USER 'router'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; GRANT ALL PRIVILEGES ON mysql.* TO 'router'@'%';

flush privileges; ```

配置maxscale.cnf 在/etc/目錄下有maxscale.cnf.template模板檔案和maxscale.cnf配置檔案, 直接改掉替換掉引數值即可, 如果/etc/下沒有該配置檔案, 可以手動建立一個, 配置內容如下: ```conf [maxscale]

啟動執行緒數

threads=auto

2.5之後提供了GUI, 開啟admin, 預設埠8989

admin_host=0.0.0.0 admin_secure_gui=false

資料庫連線配置

[server1] type=server address=server1-ip port=3307 protocol=MariaDBBackend

[server2] type=server address=server2-ip port=3308 protocol=MariaDBBackend

資料庫監控

[MariaDB-Monitor] type=monitor module=mariadbmon

多個以,分割, 第一個為master

servers=server1,server2 user=maxscale password=123456

每隔2秒探測一次

monitor_interval=1000

主從同步最大能容忍延時

max_slave_replication_lag=2000

只讀服務

[Read-Only-Service] type=service router=readconnroute servers=server2 user=maxscale password=123456 router_options=slave

讀寫服務, 做讀寫分離

[Read-Write-Service] type=service router=readwritesplit servers=server1,server2 user=router password=123456

maxscale暴露出的代理只讀服務

[Read-Only-Listener] type=listener service=Read-Only-Service protocol=MariaDBClient port=4008

maxscale暴露出的代理讀寫服務

[Read-Write-Listener] type=listener service=Read-Write-Service protocol=MariaDBClient port=4006 ``` 更多詳細的配置資訊傳送門

啟動 ```

此版本的maxscale禁止root使用者啟動, 這裡使用rpm安裝過程中自動建立的maxscale使用者啟動

maxscale -f /etc/maxscale.cnf -U maxscale ```

控制檯 預設賬號密碼: admin/mariadb image.png

測試

```shell

進入容器

docker exec -it mysqlmaster /bin/sh

連線maxscale服務

mysql -umaxscale -p123456 -P4006 -hip ```

普通查詢走從庫 image.png

事務查詢走主庫 image.png 這裡的select @@hostname;的結果為docker容器的id

image.png

至此, 我們使用maxscale搭建的mysql代理已經完成了, 當然maxscale還支援故障轉移等更加豐富的功能, 這裡不再贅述