抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

前言

因业务需要,给mysql做了主备,然后准备使用数据库中间件来进行读写分离和分片。

学习过程

学习过程中使用了三台服务器,一主两备,此处只用一主一备参与中间件的试用。

集群组成如下:

角色 主机名 主机IP

master liunian1 192.168.1.1

slave liunian2 192.168.1.2

slave liunian3 192.168.1.3

先配置mycat配置文件schema.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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"/>
<!-- 物理节点-->
<dataNode name="dn1" dataHost="dh1" database="tale" />
<!-- 物理读写分离-->
<dataHost name="dh1" maxCon="1000" minCon="10" balance="2"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- 设置 -->
<writeHost host="hostM1" url="192.168.1.1:3306" user="root" password="password">
<readHost host="hostS1" url="192.168.1.2:3306" user="root" password="password" />
</writeHost>
</dataHost>

</mycat:schema>

以下是一些重要参数

balance指的负载均衡类型,目前的取值有4种:

  1. balance=”0”, 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。

  2. balance=”1”,全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。

  3. balance=”2”,所有读操作都随机的在writeHost、readhost上分发。

  4. balance=”3”,所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力

switchType指的是切换的模式,目前的取值也有4种:

  1. switchType=’-1’ 表示不自动切换

  2. switchType=’1’ 默认值,表示自动切换

  3. switchType=’2’ 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status

  4. switchType=’3’基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like ‘wsrep%’。

writeType表示写模式

  1. writeType=”0”,所有的操作发送到配置的第一个writehost

  2. writeType=”1”,随机发送到配置的所有writehost

  3. writeType=”2”,不执行写操作

rule规则需要读者自己去详细发掘,server.xml主要配置用户逻辑库以及用户账户,端口等系统配置,可酌情进行配置。

mycat的使用过程比较坎坷,Navicat连接上之后无法直接读库,需要进行sql语句查询,此问题目前未解决。

评论