MYCAT實現讀寫分離 MYCAT是國內公司開發的 款數據庫中間件
在主從複製的基礎上,我們可以使 MYcat來實現讀寫分離,提高數據庫的效率 實現環境爲rhel7
兩臺主機已經配置好 主從複製
讀寫分離的機制大體如下
首先我們需要挑選一個mycat主機
先關閉防火牆
systemctl stop firewalld
配置好java環境
yum install java -y
查看一下版本,不能太低不然和mycat不兼容
java -version
java version “1.7.0_51”
OpenJDK Runtime Environment (rhel-2.4.5.5.el7-x86_64 u51-b31)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)
然後解壓mycat的壓縮包到/usr/local/mycat
在/etc/profile修改環境變量
vim /etc/prifile
添加如下
export MYCAT_HOME=/usr/local/mycat
export PATH=$PATH:MYCAT_HOME/bin
然後使其生效
source /etc/profile
進入mycat的配置目錄下
cd /usr/local/mycat/conf
修改兩個文件schema.xml與server.xml
schema.xml編輯如下
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/" >
<!--設定了邏輯庫-->
<schema name="xiaobai_schema" checkSQLschema="false" sqlMaxLimit="100"></schema>
<!--設定了數據節點-->
<dataNode name="xiaobaiNode" dataHost="dHost" database="xiaobai">
<dataHost name="dtHost" maxCon="500" minCon="20" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100">
<heartbeat>show slave status</heartbeat>
<!--配置後臺兩個數據庫的地址,還有登陸的用戶和密碼-->
<writeHost host="hostMaster" url="172.25.254.41:3306" user="root" password="2523392" />
<writeHost host="hostSlave" url="172.25.254.41:3306" user="root" password="2523392" />
</dataHost>
</mycat:schema>
server.xml編輯如下
<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License. - You
may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0
- - Unless required by applicable law or agreed to in writing, software -
distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the
License for the specific language governing permissions and - limitations
under the License. -->
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
<system>
<property name="defaultSqlParser">druidparser</property>
<property name="charset">utf8mb4</property>
</system>
<user name="user1">
<property name="password">2523392</property>
<property name="schemas">xiaobai_schema</property>
</user>
<user name="user2">
<property name="password">2523392</property>
<property name="schemas">xiaobai_schema</property>
<property name="readOnly">true</property>
</user>
<!--
<quarantine>
<whitehost>
<host host="127.0.0.1" user="mycat"/>
<host host="127.0.0.2" user="mycat"/>
</whitehost>
<blacklist check="false"></blacklist>
</quarantine>
-->
</mycat:server>
配置完以後即可啓動mycat
我們進入mycat啓動腳本目錄
./mycat start
在數據庫中可以使用命令來連接mycat
mysql -uuser2 -h172.25.254.141 -uuser2 -p8066 -p
Enter password:
來連接
測試
我們可以先連接到mycat嘗試insert 條內容在xiaobai數據庫下的status表中
這個結果發現inser操作被 由到 41這個主機上,就是我們之前設置的master 然後我們測試select操作,select * from status;
發現讀這個操作被錄由到 我們slave主機上,測試讀寫分離配置成功