
2.MyCAT安装配置
1.MySQL分布式架构介绍
- 1.业务分库
- 2.垂直拆分-分库分表
- 3.水平拆分-分片
####2.MyCAT安装
1.预先安装Java运行环境
yum install -y java rpm -ivh jdk2.下载Mycat-server-xxxxx.linux.tar.gz
官网下载:http://dl.mycat.io/
3.解压文件
tar xf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz4.软件目录结构
ls bin catlet conf lib logs version.txt5.启动和连接
1.配置环境变量vim /etc/profile export PATH=/app/mysql/bin:/usr/local/mycat/bin:$PATH source /etc/profile2.启动
mycat start3.连接mycat:
mysql -uroot -p123456 -h 127.0.0.1 -P8066
3.配置文件介绍
logs目录:
wrapper.log ---->mycat启动日志 mycat.log ---->mycat详细工作日志 ``` **conf目录** ``` schema.xml ----->主配置文件(读写分离、高可用、分布式策略定制、节点控制) server.xml ----->mycat软件本身相关的配置 rule.xml ----->分片规则配置文件(分片规则列表、使用方法) ```
4.mysql环境准备
1.用户创建及数据库导入
db01: mysql -S /data/3307/mysql.sock grant all on *.* to root@'10.0.0.%' identified by '123'; source /root/world.sql mysql -S /data/3308/mysql.sock grant all on *.* to root@'10.0.0.%' identified by '123'; source /root/world.sql2.配置文件处理
cd /usr/local/mycat/conf mv schema.xml schema.xml.bakvim 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="dn1"> </schema> <dataNode name="dn1" dataHost="localhost1" database= "wordpress" /> <dataHost name="localhost1" 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> </dataHost> </mycat:schema>
5.配置文件简单介绍
(1)逻辑库:schema
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> </schema>(2)数据节点:datanode
<dataNode name="dn1" dataHost="localhost1" database= "world" />(3)数据主机:datahost(w和r)
<dataHost name="localhost1" 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.52:3309" user="root" password="123" /> </writeHost> </dataHost>
6.读写分离结构配置
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"> </schema> <dataNode name="sh1" dataHost="oldguo1" database= "world" /> <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> </dataHost> </mycat:schema>1.重启mycat:
mycat restart
ps -ef | grep mycat
2.读写分离测试#读 mysql -uroot -p -h 127.0.0.1 -P8066 show variables like 'server_id'; #写 begin; show variables like 'server_id';总结:
以上案例实现了1主1从的读写分离功能,写操作落到主库,读操作落到从库
如果主库宕机,从库不能在继续提供服务了。