mycat设置读写分离
MyCat分库分表
开源的分布式数据库中间件,可以看作一个数据库代理。本身是一个java语言开发的服务器,主要用于读写分离和分库分表。
搭建环境
下载mycat,直接解压mycat
进入到bin目录下,执行
#开始
./mycat start
#关闭
./mycat stop
#使用mysql命令行来登录mycat 默认数据访问端口是8066,
./mysql -umycat -p -P8066 -h127.0.0.1
配置数据库
server.xml 主要用于配置mycat的服务器信息(配置账号、安全认证等)
schema.xml 用于配置逻辑数据库的映射、表、分片规则,数据结点及真实的数据库信息(配置读写分离、分库分表)
配置读写分离
配置server.xml
<!--mycat服务器的用户名和密码,逻辑数据库-->
<user name="root" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">MYCATDB</property>
</user>
<!--只读用户-->
<user name="user">
<property name="password">123456</property>
<property name="schemas">MYCATDB</property>
<property name="readOnly">true</property>
</user>
配置schema.xml
schema用于配置逻辑库,只做读写分离,不做分库分表,schema标签里面不用配置table
<!--配置逻辑数据库的映射-->
<!--
checkSQLschema : 开启sql检查
sqlMaxLimit : 最多查多少条sql
-->
<schema name="MYCATDB" checkSQLschema="false" sqlMaxLimit="100" dateNode="dn1">
<!--分片操作/分表
<table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
-->
</schema>
<!--配置真实的数据库-->
<dataNode name="dn1" dataHost="localhost1" database="真实数据库名称" />
<!--balance = "1" 表示开启读写分离,0表示不开启读写分离-->
<!--switchType 1 自动切换 -1 不切换 故障切换-->
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<!--主库/写库-->
<writeHost host="host3306" url="localhost:3306" user="root" password="123456">
<!--从库/读库-->
<readHost host="host4406" url="localhost:4406" user="root" password="xxx" />
</writeHost>
</dataHost>
通过schema配置逻辑数据库的映射,使用schema中的dataNode属性链接dataNode标签来映射database指定的真实数据库,再通过dataNode标签中的dataHost的属性来链接dataHost标签中的writeHost和readHost来指定ip和端口从而定位主库和从库。