一、系统拓扑图

Mysql 之 读写分离(Mycat)_第1张图片

二、配置数据库主从配置

参考文档: https://blog.51cto.com/12965094/2164319
备注:此时测度使用的数据名为:test
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.06 sec)

三、安装MyCat

wget https://github.com/MyCATApache/Mycat-download/blob/master/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
备注:解压后即可使用

四、Mycat scheam.xml 配置文件(重点)



    
    
    
    
        show slave status
        
                
        
     

五、代码层级关系解释

1、一个dataHost里,用来定义包括的主机。
2、一个dataNode里,用来定义包括的dataHost。
3、一个schema里,用来定义包括的dataNode。

六、schema参数解释

balance指的负载均衡类型,目前的取值有4种:

1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
2. balance="1",全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。
3. balance="2",所有读操作都随机的在writeHost、readhost上分发。
4. balance="3",所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力

switchType指的是切换的模式,目前的取值也有4种:
1. switchType='-1' 表示不自动切换
2. switchType='1' 默认值,表示自动切换
3. switchType='2' 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status
4. switchType='3'基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like 'wsrep%'。

建议配置:balance='1' switchType='2' show slave status 在这种情况配置下,
当从库的同步状态失败时,读操作分配到从库上,保证数据的准确性,
同时当从库DOWN机的情况下,读写也会写到主库上。
    
#test01为Mycat的逻辑库,必须要与server.xml文件里的数据库一致

#database=test 为实际数据库名

七、server.xml配置文件




        
                123456
                test01
        
  #客户端连接的用户名
123456 #连接密码
test01  #逻辑库,可理解为对外显示数据库名

八、效果验证

1、修改log4j2.xml 的日志模式为debug模式
2、tail -f mycat.log 动态查看数据库日志
3、从客户端连接mycat数据库中间件
[root@lb01 mysql]# ./bin/mysql -uroot -p123456 -h10.3.150.197 -P8066
#8066为Mycat连接端口
4、分别进行查询与插入,看日志是否固定到某台机器上。