mariadb 讀寫分離

 

實驗環境前端

 

如下配置都是創建在mariadb主從沒有問題的狀況下:java

1.三臺主機:mysql

在三臺機器/etc/hosts添加如下3條主機信息
mycat:192.168.254.24
hostM1:192.168.254.28
hostS1:192.168.254.29
2.須要安裝java1.8版本或以上linux

3.下載mycat源碼包
(1)wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
(2)tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
(3)mv mycat /usr/local/sql

 

mycat配置數據庫

vim /usr/local/mycat/conf/server.xml設置以下參數vim

 

<user name="testuser1">
                <property name="password">testuser1</property>
                <property name="schemas">testdb,testdb1</property>

                <!-- 表級 DML 權限設置 -->
                <!--            
                <privileges check="false">
                        <schema name="TESTDB" dml="0110" >
                                <table name="tb01" dml="0000"></table>
                                <table name="tb02" dml="1111"></table>
                        </schema>
                </privileges>           
                 -->
        </user>

        <user name="testuser2">
                <property name="password">testuser2</property>
                <property name="schemas">testdb,testdb1</property>
                <property name="readOnly">true</property>
        </user>

 

#testuser1用來寫的用戶
#testuser2用來讀的用戶
#testdb是mycat是邏輯庫後端

 

 

vim /usr/local/mycat/conf/schema.xml配置(請先備份cp schema.xml schema.xml.bak,而後把schema.xml文件清空,粘貼如下內容)ide

 

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="testdb" checkSQLschema="false" sqlMaxLimit="1000" dataNode="dn1">
</schema>
<schema name="testdb1" checkSQLschema="false" sqlMaxLimit="1000" dataNode="dn2">
</schema>

<dataNode name="dn1" dataHost="hostM1" database="test" />
<dataNode name="dn2" dataHost="hostM1" database="test1" />
<dataHost name="hostM1" maxCon="2000" minCon="1" balance="1" writeType="1" dbType="mysql" dbDriver="native" switchType=
"1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="192.168.254.28:3306" user="testuser1" password="testuser1">
<readHost host="hostS1" url="192.168.254.29:3306" user="testuser2" password="testuser2" />
</writeHost>
</dataHost>
</mycat:schema>

  

 

 

 

server.xml和schema.xml標綠色處要一致,都是邏輯庫,我這裏建立了2個邏輯庫url

dataHost爲數據節點名稱,database爲真實數據庫名稱即後臺數據庫test和test1

 

balance:

0表示不開啓讀寫分離,都在master上執行讀寫操做

1表示都參與select

2表示全部讀請求隨機在readhost和writehost分擔

3表示全部讀請求對應到readhost裏去

 

writeType

0,全部寫操做發送到配置的第一個writeHost

1,全部寫操做都隨機的發送到配置的writeHost

2,不執行寫操做。

 

switchType

-1,不自動切換

1,默認值,自動切換

2,基於MySQL 主從同步的狀態決定是否切換

3,基於MySQL galary cluster的切換機制(適合集羣)(1.4.1),心跳語句爲 show status like &lsquo;wsrep%&rsquo;

writeHost和readHost分別配置對應後臺的mysql主從真實用戶密碼

 

建立用戶並賦予權限(主建立同步到從)

grant all on *.* to testuser1@'%' identified by 'testuser1';
grant all on *.* to testuser2@'%' identified by 'testuser2';

  

 

啓動mycat服務並查看端口

/usr/local/mycat/bin/mycat start

  

 

 

8066是管理端口

9066是鏈接後端數據庫的端口,默認是9066,登陸該端口後直接用show @@datasource;語句便可查詢主從庫的讀寫狀態

 

mysql -h 192.168.254.24 -P8066 -utestuser1 -ptestuser1    (能夠執行增刪改查)

mysql -h 192.168.254.24 -P9066 -utestuser1 -ptestuser1     (能夠查看節點狀態)

  

 

查看心跳狀態

show @@heartbeat\G

  

 

 

 

#查看前端鏈接狀態

show @@connection\G

  

 

 

 

#查看後端狀態

show @@backend\G

 

 

 

 

 #查看數據庫資源狀態

show @@datasource

 

 

相關文章
相關標籤/搜索