使用Mycat实现MySQL读写分离(MySQL主从复制)

一.Mycat读写分离原理

Mycat读写分离是基于MySQL集群的主从复制实现的,而Mycat负责SQL分析,并将分析出的结果分发至与Mycat读写分离机制所绑定的MySQL主从复制数据库,从而实现读写分离。

二.部署规划

服务器IP 主机名
192.168.112.29(Cetnos7.2) Mycat
192.168.112.30(Cetnos7.2) MySQL Master
192.168.112.31(Cetnos7.2) MySQL Slave

三.安装部署

1.安装Java环境(Mycat基于Java,7及以上版本)

# vim /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_191
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
# source /etc/profile
# java -version

2.下载Mycat

官网:Mycat1.6

3.上传安装包并解压

# 解压
tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
# 剪切到/usr/local下
mv mycat /usr/local/
# 创建专门运行mycat账号
# 可根据自身项目情况规划
adduser mycat
# 切换到mycat文件夹路径下
cd /usr/local
# 将文件权限赋给mycat账号
chown -R mycat:mycat mycat

4.配置Mycat环境变量

# 配置环境变量并添加 
vim /etc/profile
export MYCAT_HOME=/usr/local/mycat
export PATH=$PATH:$MYCAT_HOME/bin
# 使配置生效
source /etc/profile

5.配置Mycat读写分离信息

这里我们先看Mycat最外部结构

首先先了解下Mycat组成,在根目录下有如下文件

进入conf文件中,有如下配置文件

使用Mycat实现MySQL读写分离(MySQL主从复制)_第1张图片

要实现读写分离可有两种方式

第一种:显示数据库所有表,即整个数据库;

配置文件中有参数详解,如配置文件直接复制无法是实现读写分离,把参数注释删掉即可

# 打开 schema.xml 配置文件
vim /usr/local/mycat/conf/schema.xml




        
		
        
        
		
        
        
		
                select user()
				
                
                
                        
				
                        
						
                
				
				
                
        
        

        

 第二种:显示数据库指定表,本文中暂时不做介绍

6.配置Mycat连接信息

# 打开 server.xml 配置文件
vim /usr/local/mycat/conf/server.xml

 以下为server.xml配置文件内容





        
        0  
        1
        0  
        0  

                2
        false 
		3310	
       
         
        
        
        
                0
                
                
                
                
                
                
                
                
                0

                        
                1

                
        64k

                
                1k

                0

                
                384m


                
                false

                
                

                
                

        

        
        
        
        
        
        
        
        

        
                root
                BJCA
		

                
                
        

		
		

7.配置Mycat日志信息 

# 切换到conf目录
cd /usr/local/mycat/conf/
# 打开日志配置文件
vim log4j2.xml


    
        
            
        

        
        
                %d{yyyy-MM-dd HH:mm:ss.SSS} %5p [%t] (%l) - %m%n
            
            
                
                
                
            
        
    
    
        
            
            
        
        

            
            

        
    

这里只修改了一处:asyncRoot level="debug"

将日志级别调为debug模式,方便我们查看请求来源

至此,Mycat的配置完成,接下来我们开放防火墙策略后进行测试

四.关闭防火墙或者开放端口

关闭防火墙

# 查看防火墙状态
systemctl status firewalld
# 关闭防火墙
systemctl stop firewalld

开放端口

# 查看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports
# 开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 关闭3306端口
firewall-cmd --zone=public --remove-port=3306/tcp --permanent
# 配置立即生效
firewall-cmd --reload

五.连接测试

1.如其他服务器或本地有MySQL,可通过已有的MySQL客户端进行连接测试

这里使用192.168.112.28服务器进行连接测试

使用Mycat实现MySQL读写分离(MySQL主从复制)_第2张图片

2.通过Navicat工具进行测试

至此,Mycat连接测试完成,我们可以看到是可以正常连接的 

六.测试读写分离

1.打开日志,实时查看打印的日志

# 切换至mycat日志目录
cd /usr/local/mycat/logs/
# 实时查看mycat日志
tail -f mycat.log

2.测试读操作

B服务器(192.168.112.28)连接Mycat服务器(192.168.112.29)

 执行select查询语句,实时查看Mycat日志

 多次测试,Mycat所打印的日志都显示读操作都路由到从节点(192.168.112.31)

3.测试写操作

执行insert插入语句,实施查看Mycat日志

 多次测试,Mycat所打印的日志都显示写操作都路由到主节点(192.168.112.30)

至此。基于Mycat的读写分离配置全部完成。 

你可能感兴趣的:(mysql,数据库,mycat)