命令记不住

登陆

2.MyCAT 安装配置

2.MyCAT安装配置

1.MySQL分布式架构介绍

  • 1.业务分库
  • 2.垂直拆分-分库分表
  • 3.水平拆分-分片

####2.MyCAT安装

1.预先安装Java运行环境

yum install -y java
rpm -ivh jdk

2.下载Mycat-server-xxxxx.linux.tar.gz

官网下载:http://dl.mycat.io/

3.解压文件

tar xf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz

4.软件目录结构

ls
bin  catlet  conf  lib  logs  version.txt

5.启动和连接
1.配置环境变量

vim /etc/profile
export PATH=/app/mysql/bin:/usr/local/mycat/bin:$PATH

source /etc/profile

2.启动

mycat start

3.连接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.sql

2.配置文件处理

cd /usr/local/mycat/conf
mv schema.xml schema.xml.bak
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="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从的读写分离功能,写操作落到主库,读操作落到从库
如果主库宕机,从库不能在继续提供服务了。

推荐阅读