mycat的schema.xml重要配置(逻辑库,逻辑表,数据节点,数据源信息等)

schema.xml的作用

  • 配置逻辑库和逻辑表
  • 配置逻辑表的数据节点
  • 配置数据节点的对应的mysql物理服务器的信息(ip、port、user、password)
  • 应用程序用sql通过mycat获取mysql数据,mycat是通过schema配置的逻辑库和逻辑表信息找到对应的mysql节点以及节点中的数据库和数据表,然后连接mysql,让mysql执行sql,得到结果,再转发给应用程序

定义逻辑库-schema标签

mycat会定义逻辑库和物理数据库的对应关系,所以,逻辑库的名字可以自定义,不要求和物理数据库同名

	


如上定义了一个名为project1db1的逻辑库,
sqlMaxLimit设置默认的查询结果返回100条记录,
checkSQLschema设置是否要检查sql中包含数据库名字,默认false不检查,要求程序员写sql时不要使用库名.表明的写法(select * from project1db1.orders where …,),直接不带库名访问(select from orders),因为会跨数据库服务器访问,操作很麻烦

定义逻辑表-table标签

mycat不会定义逻辑表和物理数据表的对应关系,只是通过逻辑表声明存在的物理数据表,所以要求逻辑表和物理表的要同名

如上定义了名字是bill的逻辑表,跟物理表名一致,
primaryKey属性设置主键是Fbid也跟物理表中一致,但是主键和水平切分用的分片键(字段)可能不一致,mycat会缓存这个自定义的主键和分片节点的关系(这样就可以将通过分片键的查询转化成对主键的查询,因为主键查询效率最快)
dataNode属性定义了存在db01、db02两个物理节点上,值来源于标签
rule属性是定义使用的水平切分规则,值来源于rule.xml中配置的某个tableRule标签的name属性值,不是进行水平切分的可以不设置这个属性值

定义逻辑表存储的物理数据库节点-dataNode标签



如上定义了名字是db1的数据节点,
dataHost属性定义使用的Mysql集群mysqlcluster1,值来源于dataHost标签的name
database 定义使用的(mysqlcluster1集群)物理节点上真实存在的数据库名字

定义节点使用的集群机器信息-dataHost标签


	select user()
	
			
			
	

如上定义了mysql集群名称mysqlcluster1,
因为对应用程序来说,MyCat可以当做数据库连接池的作用,所以有maxCon、minCon等属性配置,控制mycat和mysql之间(也就等于用户和mysql之间)连接数大小
maxCon属性定义最大连接数
minCon属性定义默认初始化的最小连接数
balance属性定义读写分离和查询负载均衡的工作方式,

  • balance=0时,不开启读写分离,无负载均衡,适合单机数据库使用
  • balance=1时,集群中所有readHost和备用的writeHost参与查询负载均衡,只有那些正在负责写的主节点不参与
  • balance=2时,集群中所有机器无论负责读写的都参与查询负载均衡,适合写压力不大时writeHost帮readHost分担查询压力
  • balance=3时,适合一主多从,所有readHost参与查询负载均衡,writeHost不负责查询

writeType属性集群中定义写数据的方式

  • writeType=0时(一般默认这个值),写操作只由第一个writeHost负责,其他writeHost做备用机,前面的writeHost挂了才切换成写操作
  • writeType=1时,所有wirteHost都参与写,随机执行,可能出现写错乱

dbType属性定义使用mysql这种数据库
dbDriver属性,值native表示使用原生驱动,jdbc表示使用JDBC驱动
switchType属性定义高可用切换主服务器方式

  • switchType=1表示让mycat实现高可用切换,当第一个writeHost挂了,切换到后面可用的writeHost作为主节点进行写操作
  • switchType=-1时表示集群已经使用其他工具进行高可用切换,mycat不作操作

heartbeat标签定义mysql心跳检测,通过执行一段简单的查询语句,测试mysql是否可以正常工作

writeHost 标签定义主服务器,负责写或者备用写
readHost 标签定义从服务器,负责读,xml结构中处在writeHost标签内

  • host属性定义mysql服务器名称(自定义)
  • url属性定义mysql服务器访问地址
  • user属性定义访问mysq服务器的用户
  • password属性定义访问mysql服务器的密码

完整的文件内容

下面是将mysql的project数据库中的users表依据project_users_rule定义的切分规则,将users表水平切分到mysqlcluster1集群中的3台mysql服务器中存储,每台服务器都有3个数据库project_db1、project_db2、project_db3,一台(192.168.5.10)负责写两台负责读(其中slave=192.168.5.11还作为备用切换的机器),3个db都有t_users表,同一台mysql中的3个db中的t_users表分别存储了一部分用户,合起来就是所有用户集了




		
		
select user()

你可能感兴趣的:(mysql,Linux,mycat)