Mysql-高可用集群[MyCat中间件使用](三)
生活随笔
收集整理的這篇文章主要介紹了
Mysql-高可用集群[MyCat中间件使用](三)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
服務器-節點: 4臺
- mysql-主: 192.168.2.40
- mysql-從-node-0: 192.168.2.41
- mysql-從-node-1: 192.168.2.42
- mycat: 192.168.2.45
操作過程
- 1.搭建mysql主從節點
- 2.搭建mycat中間件節點
- 3.mycat服務配置
- 4.測試讀寫分離,讀的分發
1.搭建mysql主從節點
Mysql-高可用集群主從單一模式-binlog
2.搭建mycat中間件節點
# 2-1.基礎環境搭建: 安裝jdk # 下載頁面: https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html rpm -ivh jdk-8u201-linux-x64.rpm# 2-2.下載安裝 mycat: wget http://dl.mycat.io/1.6.6.1/Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz -P /usr/local/src/ tar xvf /usr/local/src/Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz -C /usr/local # 配置: 寫入環境變量,增加相應用戶 echo export PATH=$PATH:/usr/local/mycat/bin >>/etc/profile echo export MYCAT_HOME=/usr/local/mycat >> /etc/profile source /etc/profile # 增加相應用戶 groupadd mycat -g 910 useradd mycat -g 910 chown -R mycat:mycat /usr/local/mycat3.mycat服務配置
3-1.讀寫數據庫配置
vim /usr/local/mycat/conf/schema.xml <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"><!-- 聲明一個邏輯表, 表名為TESTDB, 和server.xml中的對應 --><schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema><!-- 通過dataHost定義的數據庫: database="xh"(真實數據庫) --><dataNode name="dn1" dataHost="dataHost01" database="xh" /><dataHost name="dataHost01" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native"><heartbeat>select user()</heartbeat><!-- 寫入節點(主節點) --><writeHost host="serverM1" url="192.168.2.40:3306" user="myuser" password="Aa123456"><!-- 讀取節點(從節點) --><readHost host="serverS0" url="192.168.2.41:3306" user="myuser" password="Aa123456"/><readHost host="serverS1" url="192.168.2.42:3306" user="myuser" password="Aa123456"/></writeHost></dataHost> </mycat:schema>balance指的負載均衡類型,目前的取值有4種:
- 0: 不開啟讀寫分離機制,所有讀操作都發送到當前可用的writeHost上。
- 1: 全部的readHost與stand by writeHost參與select語句的負載均衡,簡單的說,當雙主雙從模式(M1->S1,M2->S2,并且M1與 M2互為主備),正常情況下,M2,S1,S2都參與select語句的負載均衡
- 2: 所有讀操作都隨機的在writeHost、readhost上分發。
- 3: 所有讀請求隨機的分發到wiriterHost對應的readhost執行,writerHost不負擔讀壓力
switchType指的是切換的模式,目前的取值也有4種: - -1: 表示不自動切換
- 1: 默認值,表示自動切換
- 2: 基于MySQL主從同步的狀態決定是否切換,心跳語句為 show slave status
writeType值: - 0: 所有請求,分發到第一個: dataHost
- 1: 所有請求,分發到所有的: dataHost
- 2: 不執行寫操作
3-2.mycat服務,用戶配置
vim /usr/local/mycat/conf/server.xml .... # 服務端口 <property name="serverPort">8066</property> .... // 管理員配置,讀寫 <user name="root" defaultAccount="true"><property name="password">123456</property><property name="schemas">TESTDB</property> </user> // 普通用戶配置,只讀 <user name="user" defaultAccount="true"><property name="password">123456</property><property name="schemas">TESTDB</property><property name="readOnly">true</property> </user> ....3-3.開啟日志debug,啟動服務:
vim /usr/local/mycat/conf/log4j2.xml .... # 開啟debug日志 <asyncRoot level="info" includeLocation="true"> 改為 <asyncRoot level="debug" includeLocation="true"> .... # 啟動服務 mycat start # 啟動防火墻規則 firewall-cmd --permanent --add-port=8066/tcp && firewall-cmd --reload4.測試讀寫分離
// 4-1.分發測試 // 4-1-1.先將 schema.xml 中的配置為: balance=0,不進行分發操作,【讀寫】全部在【主庫-192.168.2.40】 .... <dataHost name="dataHost01" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native"> .... // 客戶端鏈接mycat  // 分別查看: 數據庫(【主-192.168.2.40】,【從0-192.168.2.41】,【從1-192.168.0.42】)查詢次數,寫入次數: // 查詢次數 show global status like 'Com_select'; // 寫入次數 show global status like '%Com_in%';// 【客戶端】執行查詢: 10次,注意:工具可能不能直接打開表進行操作,只能運行sql語句 SELECT * FROM `user` limit 1; INSERT `user`(name) VALUES('王五1'); INSERT `user`(name) VALUES('王五2'); INSERT `user`(name) VALUES('王五3'); // 分別查看: 數據庫(主,從0,從1)查詢次數,應該只有【主庫-192.168.2.40】有明顯的增加 //// 4-1-2.更改schema.xml 中的配置為: balance=3,讀在從庫,寫在主庫 // 客戶端】執行查詢: 10次 // 分別查看: 數據庫(主,從0,從1)查詢次數,應該只有【從0-192.168.2.41】,【從1-192.168.0.42】有明顯的增加5.遺留問題:
- 主庫-宕機后,查詢語句也無法執行
- 從庫-有一臺宕機后,查詢語句也無法執行
轉載于:https://blog.51cto.com/3168834/2374749
總結
以上是生活随笔為你收集整理的Mysql-高可用集群[MyCat中间件使用](三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EF ORM
- 下一篇: 限流算法(记录cyc大佬的专栏)