1.为什么要用Mycat
1.java与数据库紧耦合
2.高访问量并发对数据库压力
3.读写请求数据不一致
2.Mycat作用
1.读写分离
2.数据分片:垂直拆分(分库)、水平拆分(分表)、垂直+水平拆分(分库分表)
3.多数据源整合
3.Mycat原理
Mycat的原理中最重要的是一个动词“拦截”。它拦截了用户发送过来的SQL语句,首先对SQL语句做了特定的分析;如分布分析、路由分析、读写分离分析、缓存分析等。然后将此SQL发往真实的数据库,并将返回结果做出适当的处理,最后再返回给用户。
3.conf中三个配置文件
1.schema.xml:定义逻辑库、表、分片节点的内容
2.rule.xml:定义规则
3.定义用户系以及统相关变量,如端口
4.主从读写分离
授予一个用户可以访问主节点进行日志复制: GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';
连接主库:CHANGE MASTER TO MASTER_HOST='192.168.60.129',MASTER_USER='slave',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=313,MASTER_PORT=3310;
5.双主双从
一个主机m1用于处理所有写请求,它的从机s1和另一个主机m2还有它的从机s2负责所有请求。当m1主机宕机后,m2主机负责写请求,m1,m2互为备机。
6.垂直拆分
一个数据库由很多表构成,每个表对应着不同业务,垂直切分是指按业务将表进行分类,分布到不同的数据库上面。这样也就将数据或者压力分担到不同的库上面;
7.配置schema.xml
schema.xml作为Mycat中重要配置文件之一,管理着Mycat的逻辑库、逻辑表以及对应的分片规则、DataNode以及DataSource。
8.配置 server.xml
server.xml几乎保存了所有mycat需要的系统配置信息。配置用户名、密码及权限。在system中添加UTF-8字符集设置,否则存储中文出问题。
9.启动Mycat
10.垂直拆分-全局表配置
11.水平拆分
根据表中的数据逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库中,这种切片称为数据的水平切分。
12.Mycat 集群
|