Mycat数据库中间件实现MySQL读写分离

本文详细介绍了如何使用Mycat实现MySQL的读写分离,包括安装Java环境、Mycat的下载与配置、环境变量设置、启动与重启命令、配置文件详解以及防火墙设置等关键步骤。

这里是在mysql主从复制实现的基础上利用mycat做读写分离
可以先看看 mysql主从复制

  1. Mycat安装和配置
#yum安装java环境(mycat要求java环境在1.7以上)
yum install java-1.8.0-openjdk.x86_64 

切换到 /usr/local文件夹并下载mycat

cd /usr/local
wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz

解压mycat

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

配置环境变量 在后面加并把mycat文件夹的路径写上

vim /etc/profile

在这里插入图片描述
使环境变量文件立即生效

source  /etc/profile 

切换到mycat的bin目录,

cd /usr/local/mycat/bin/

启动Mycat

./mycat  start
./mycat  stop  #停止mycat 
./mycat restart  #重启mycat
  1. Mycat配置读写分离
    mycat的配置文件主要在/usr/local/mycat/conf文件夹里
    server.xml用来配置虚拟数据库的信息;
    schema.xml用来配置真实读库写库的信息;

server.xml

#我的这两个标签都是注释的,要打开
 <property name="serverPort">8066</property> 
  <property name="managerPort">9066</property>
  <user name="root" defaultAccount="true">    <!-- 这里是给虚拟库设定一个账号叫root,并且作为默认账号 -->
                <property name="password">123456</property>   <!-- 账号root的密码 -->
                <property name="schemas">TESTDB</property>   <!-- 账号root对应的虚拟库,这个库保持默认比较好 -->
        </user>

        <user name="user">   <!-- 这里是给虚拟库设定一个账号叫user-->
                <property name="password">user</property>  <!-- 账号user的密码 -->
                <property name="schemas">TESTDB</property>  <!-- 账号user对应的虚拟库,这个库保持默认比较好 -->
                <property name="readOnly">true</property>  <!-- 说明这个账号是只读账号 -->
        </user>

schema.xml (当只配置读写分离的时候把该文件中间的<table></table>标签都屏蔽掉)

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--TESTDB表示mycat的逻辑数据库名称当schema节点没有子节点table的时候,一定要有dataNode属性存在(指向mysql真实数据库)-->
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
    </schema>
    <!--指定master的真实数据库aaa-->
    <dataNode name="dn1" dataHost="localhost1" database="aaa" />
    <!--指定mastet的ip -->
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"
        writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
        <!--表示mysql的心跳状态-->
        <heartbeat>select user()</heartbeat>
        <!-- master负责写(下面写主服务器IP端口,数据库用户名密码) -->
        <writeHost host="hostM1" url="49.233.122.124:3306" user="root"
            password="root">
        <!--slave负责读(下面写从服务器IP端口,数据库用户名密码) -->
        <readHost host="hostS2" url="106.75.24.119:3306" user="root" password="root" />
        </writeHost>
</dataHost>
</mycat:schema>

修改文件后重启mycat

  1. 查看端口
# netstat -tnlp
TCP *:9066 (LISTEN) #虚拟schema管理端口 
TCP *:8066 (LISTEN) #虚拟schema登陆端口 

在这里插入图片描述
4.连接Mycat

 mysql -h127.0.0.1 -uroot  -p123456 -P8066
 mysql -h127.0.0.1 -uroot  -p123456 -P9066

连接这部分具体可看这篇文章的 MyCAT读写分离测试

5.用Navicat 连接Mycat的时候记得防火墙开启8066端口并重启防火墙

firewall-cmd --zone=public --add-port=8066/tcp --permanent  #开启端口
firewall-cmd --reload  重启防火墙
systemctl status firewalld   查看防火墙状态
systemctl start firewalld    开启防火墙
systemctl stop firewalld      关闭防火墙

用Navicat 连接Mycat有问题,打开数据库报1146 table xxx doesn,t exist 还未解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值