MySQL-分布式架构-MyCAT( 四 )

1.7 配置中的属性介绍
1.7.1 balance属性
负载均衡类型,目前的取值有3种: (1) balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上 。(2) balance="1",全部的readHost与standby writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡 。(3) balance="2",所有读操作都随机的在writeHost、readhost上分发 。 1.7.2 writeType属性
负载均衡类型,目前的取值有2种: (1)writeType="0", 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为主,切换记录在配置文件中:dnindex.properties . (2)writeType=“1”,所有写操作都随机的发送到配置的writeHost,但不推荐使用1.7.3 switchType属性
-1 表示不自动切换 1 默认值,自动切换 2 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status 1.7.4 datahost其他配置
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1"> maxCon="1000":最大的并发连接数 minCon="10" :mycat在启动之后,会在后端节点上自动开启的连接线程 tempReadHostAvailable="1" 这个一主一从时(1个writehost,1个readhost时),可以开启这个参数,如果2个writehost,2个readhost时 <heartbeat>select user()</heartbeat> 监测心跳 1.8 垂直分表
 

MySQL-分布式架构-MyCAT

文章插图
 
 
1.8.1 修改schema.xml配置文件
mv schema.xml schema.xml.ha vim schema.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="sh1"> <table name="user" dataNode="sh1"/> <table name="order_t" dataNode="sh2"/> </schema> <dataNode name="sh1" dataHost="oldguo1" database= "taobao" /> <dataNode name="sh2" dataHost="oldguo2" database= "taobao" /> <dataHost name="oldguo1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1"> <heartbeat>select user()</heartbeat> <writeHost host="db1" url="10.0.0.51:3307" user="root" password="123"> <readHost host="db2" url="10.0.0.51:3309" user="root" password="123" /> </writeHost> <writeHost host="db3" url="10.0.0.52:3307" user="root" password="123"> <readHost host="db4" url="10.0.0.52:3309" user="root" password="123" /> </writeHost> </dataHost> <dataHost name="oldguo2" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1"> <heartbeat>select user()</heartbeat> <writeHost host="db1" url="10.0.0.51:3308" user="root" password="123"> <readHost host="db2" url="10.0.0.51:3310" user="root" password="123" /> </writeHost> <writeHost host="db3" url="10.0.0.52:3308" user="root" password="123"> <readHost host="db4" url="10.0.0.52:3310" user="root" password="123" /> </writeHost> </dataHost> </mycat:schema>1.8.2 创建测试库和表:
mysql -S /data/3307/mysql.sock -e "create database taobao charset utf8;" mysql -S /data/3308/mysql.sock -e "create database taobao charset utf8;" mysql -S /data/3307/mysql.sock -e "use taobao;create table user(id int,name varchar(20))"; mysql -S /data/3308/mysql.sock -e "use taobao;create table order_t(id int,name varchar(20))"1.8.3 重启MyCat
mycat restart1.8.4 进入MyCat测试,添加数据测试
mysql -uroot -p123456 -h 10.0.0.51 -P 8066 --这里的ip地址是MyCat安装的那个虚拟机,就是哪个虚拟机的ip地址 mysql -S /data/3307/mysql.sock -e "use taobao;show tables;" mysql -S /data/3308/mysql.sock -e "use taobao;show tables;" 1.9 MyCAT核心特性——分片(水平拆分)


推荐阅读