MYSQL-mycat数据库中间件参数配置

MYSQL-mycat数据库中间件参数配置

1. mycat中间件的作用

一主一从+读写分离:

img

双主复制+读写分离:

在这里插入图片描述

2. server.xml配置

wabong用户可读可写,rabong只读不可写
[root@master conf]# cat server.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
	<system>
	<property name="defaultSqlParser">druidparser</property>
	</system>
	<!--以下设置为应用访问帐号权限 -->
	<!--可写账号 -->
	<user name="wabong">
	<property name="password">123456</property>
	<property name="schemas">test</property>
	</user>
	<!--只读账号 -->
	<user name="rabong">
	<property name="password">123456</property>
	<property name="schemas">test</property>
	<property name="readOnly">true</property>
	</user>
</mycat:server>
参数 作用
<mycat:server> </mycat:server> 定义mycat服务配置
<system> </system> 定义一个system
<property name=“变量名”>变量值</property> 定义标签及其对应的值
<user name=“用户名”> </user> mycat用户名
<property name=“password”>123456</property> mycat用户对应的密码
<property name=“schemas”>test</property> 可登录数据库名
<property name=“readOnly”>true</property> 表示该用户只能读,不能写

3. schema.xml配置

# 主从复制+读写分离
[root@master conf]# cat schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="test" checkSQLschema="false" sqlMaxLimit="100" dataNode='dn1'>
</schema>
<dataNode name="dn1" dataHost="dthost" database="test"/>
<dataHost name="dthost" maxCon="500" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="-1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!--后端写库(主库)信息 -->
<writeHost host="master1" url="192.168.10.10:3306" user="mycat" password="123456">
    <!--后端读库(从库)信息 -->
    <readHost host="slave1" url="192.168.10.20:3306" user="mycat" password="123456" />
</writeHost>
</dataHost>
</mycat:schema>


# 双主复制+读写分离
[root@master conf]# cat schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="test" checkSQLschema="false" sqlMaxLimit="100" dataNode='dn1'>
</schema>
<dataNode name="dn1" dataHost="dthost" database="test"/>
<dataHost name="dthost" maxCon="500" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="-1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!--后端写库(主库1)信息 -->
<writeHost host="master1" url="192.168.10.10:3306" user="mycat" password="123456" >
</writeHost>
<!--后端写库(主库2)信息 -->
<writeHost host="master1" url="192.168.10.20:3306" user="mycat" password="123456" >
</writeHost>
</dataHost>
</mycat:schema>
参数 作用
<mycat:schema> </mycat:schema> schema标签
<schema> </schema> 定义一个schema标签
name=“test” schema标签名称
checkSQLschema=“false” 若数据库名为schema,该参数为true,则去除sql语句中表的前缀数据库名schema。默认不去除,即值为false。
sqlMaxLimit=“100” 查询结果在缺省limit语句时,只显示100条记录。
dataNode=‘dn1’ 定义mycat中的数据节点,也称数据分片。一个dataNode标签即一个独立的数据分片。
<dataNode /> 定义一个dataNode数据分片标签
name=“dn1” dataNode标签名称
dataHost=“dthost” 数据节点所属数据库实例
database=“test” 数据节点所属数据库实例上的具体数据库
<dataHost> </dataHost> 定义数据库实例标签
name=“dthost” 数据库实例标签名
maxCon=“500” 每个读写实例连接池的最大连接数
minCon=“10” 每个读写实例连接池的最小连接数
balance=“1” 负载均衡类型。
0:不开启读写分离, 所有读都给writeHost。
1:所有的readHost和stand by writeHost主机参与select的负载均衡。
2:读操作随机分给readHost和writeHost
3:读操作随机分给writeHost所对应的readHost上执行,writeHost不进行读操作。
writeType=“0” 0:所有写操作分配给第一个writeHost,第一个writeHost挂了,则分配到第二个存活的writeHost上。第一个恢复后,可在dnindex.properties文件查看切换记录。
1:写操作随机分配给writeHost上,不推荐使用。
dbType=“mysql” 指定后端连接的数据库类型,支持二进制的mysql协议,支持JDBC连接的数据库,如:mongodb、oracle、spark等
dbDriver=“native” 指定连接后端数据库使用的Driver,可选值为native和JDBC。选择native则可以使用mysql和mariadb数据库,其他数据库使用JDBC驱动。
switchType="-1" -1:不自动切换
1:自动切换
2:基于show slave status;决定是否切换
3:基于mysql galary cluster的切换机制决定是否切换【show status like’wsrep%’;】
一般设置为-1
slaveThreshold=“100” 读写分离从服务器的最大个数
<heartbeat>select user()</heartbeat> 用于和后端数据库的心跳检测语句
<writeHost> </writeHost> 写实例,在dataHost内可定义多个。写实例对应的数据库宕机,则读实例也不可用。写实例内可定义多个读实例。对应主库。
<readHost> </readHost> 读实例,定义在写实例内。对应从库。
host=“master” 实例名
url=“192.168.10.10:3306” 后端实例连接地址
native:IP地址:端口号
JDBC:jdbc的url
user=“mycat” 后端存储实例的用户名
password=“Abong123.” 后端存储实例的密码
weight=“1” 权重,配置readhost中作为读节点的权重。

通过以上配置,可以很好的实现主从、双主之间的读写分离。

猜你喜欢

转载自blog.csdn.net/weixin_36522099/article/details/108831695