数据库中间件-Mycat(读写分离)

数据库中间件-Mycat

 

官网   [Mycat简介非常详细]:

http://www.mycat.org.cn/

 

 

mycat实现读写分离(一主一从)

准备工作: 

1:准备两台主机安装好mysql

2:能够互相ping通或使用mysql命令(mysql    -uroot     -p123456   -h  192.168.2.100)能够相互访问

3:mycat的读写分离是基于mysql的主从复制,所以需要先搭建mysql 的主从复制,可以参考:

https://www.cnblogs.com/dw3306/p/13943008.html

 

下载安装:

http://dl.mycat.org.cn/1.6.7.4/Mycat-server-1.6.7.4-release/

解压后即可使用,在conf文件夹下有三个主要配置文件如下:

1:scheme.xml: 定义逻辑库,表,分片节点等内容。

2:rule.xml: 定义分片规则。

3:server.xml: 定义用户以及系统相关变量,如端口等。

 

 

 编辑scheme.xml

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
        </schema>
        <dataNode name="dn1" dataHost="host1" database="dw-study" />
        <dataHost name="host1" maxCon="1000" minCon="10" balance="3"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="hostM1" url="10.167.19.114:3306" user="root"
                                   password="123456">
                        <!-- can have multi read hosts -->
                        <readHost host="hostS2" url="10.167.19.115:3306" user="root" password="123456" />
                </writeHost>
        </dataHost>
</mycat:schema>

关于各个标签的属性介绍请看上面的官方文档链接,解释的很清楚。

配置读写分离需要配置《dataHost》节点下的balance属性,文档上的介绍如下:

修改server.xml

1:修改用户名、密码、mycat逻辑数据库名字

 

 

 

快速启动mycat

cd /bin
# 启动mycat .
/mycat start
# 停止mycat
./mycat stop

 

进入mycat

mysql -umycat -p1234 -h10.167.19.114 -P 8066

-u  :  server.xml中配置的  user

-p :  密码

-h :  mycat所在主机

-P: mycat默认端口

 

二、双主双从配置

修改 Mycat 的配置文件 schema.xml 修改的balance属性,通过此属性配置读写分离的类型

 

 为了双主双从读写分离balance设置为1

<dataNode name="dn1" dataHost="host1" database="testdb" />
 <dataHost name="host1" maxCon="1000" minCon="10" balance="1"
 writeType="0" dbType="mysql" dbDriver="native" switchType="1"
slaveThreshold="100" >
 <heartbeat>select user()</heartbeat>
 <!-- can have multi write hosts -->
 <writeHost host="hostM1" url="192.168.140.128:3306" user="root"
 password="123123">
 <!-- can have multi read hosts -->
 <readHost host="hostS1" url="192.168.140.127:3306" user="root"
password="123123" />
 </writeHost>

<writeHost host="hostM2" url="192.168.140.126:3306" user="root" password="123123"> <!-- can have multi read hosts --> <readHost host="hostS2" url="192.168.140.125:3306" user="root" password="123123" /> </writeHost> </dataHost> … #balance="1": 全部的readHost与stand by writeHost参与select语句的负载均衡。 #writeType="0": 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个 #writeType="1",所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐 #writeHost,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties 。 #switchType="1": 1 默认值,自动切换。 # -1 表示不自动切换 # 2 基于 MySQL 主从同步的状态决定是否切换。

 

posted @ 2020-11-09 22:23  邓维-java  阅读(618)  评论(0)    收藏  举报