mycat 配置以及实践(01)

第一步:下载 mycat压缩包

# 进入 opt
cd /opt
# 下载压缩包
wget http://dl.mycat.org.cn/1.6.7.1/Mycat-server-1.6.7.1-release-20200209222254-linux.tar.gz
# 解压缩
tar -zxvf  Mycat-server-1.6.7.1-release-20200209222254-linux.tar.gz
# 将文件夹拷贝到/usr/local
cp -r mycat /usr/local
cd /usr/local/mycat

第二步:修改配置文件

1、修改 ./conf/server.xml

修改<user name=”root” 改为”mycat”

2、修改./conf/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="host1" database="testdb" />
        <!--数据主机-->
        <dataHost name="host1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">

                <!--心跳检测,查看主机是否正常-->
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="hostM1" url="172.17.0.2:3306" user="root"  password="root">
                        <!-- can have multi read hosts -->
                        <readHost host="hostM1" url="172.17.0.3:3306" user="root" password="root" />
                </writeHost>
        </dataHost>
</mycat:schema>

第三步:配置主从服务器

按照第二步配置文件这里配置一主一从,这里使用 docker 搭建主从数据库,具体步骤请查看( docker下搭建配置mysql5-7主从复制 )

步骤四:启动 mycat

1、启动前测试(测试远程主从数据库是否可以访问)

mysql -uroot -proot -h 172.17.0.2 -P 3306 # 连接远程 IP 172.17.0.2
mysql -uroot -proot -h 172.17.0.3 -P 3306 # 连接远程 IP 172.17.0.2

2、启动 mycat(启动前,请确定安装 jdk8以上版本)

启动 mycat有两种方式:

方式1:./mycat console # 操作台方式

方式2:./mycat start # 后台启动

为了只管查看效果这里使用方式1,启动效果如下图

cd /usr/local/mycat/bin
./mycat console

3、连接 mycat

使用 mysql 相似的命令

mysql -umycat -p123456 -h 192.168.199.151 -P 8066 # 8066端口登录数据窗口

步骤五:主从读写分离

一、测试查询语句是从主机查询还是从机查询

1.首先根据 mysql主机配置的”binlog_format=STATEMENT”来执行以下sql语句,会写入主从数据库不同的内容(@@hostname=获取当前机器的名字)。

# 主机 mysql客户端执行
INSERT INTO `mytbl` (`id`, `name`) VALUES (NULL, @@hostname);

主机表数据

从机表数据

2.如下图在mycat中执行查询语句,可以看到查询读取的是mysql主机,这样肯定是不合理的。

3.balance属性

负载均衡类型,目前的取值有3 种:
balance=“0”, 不开启读写分离机制,所有读操作都发送到当前可用的writeHost 上。
balance=“1”,全部的readHost 与stand by writeHost 参与select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1 与M2 互为主备),正常情况下,M2,S1,S2 都参与select 语句的负载均衡。
balance=“2”,所有读操作都随机的在writeHost、readhost 上分发。
balance=“3”,所有读请求随机的分发到wiriterHost 对应的readhost 执行,writerHost 不负担读压力,注意balance=3 只在1.4 及其以后版本有,1.3 没有。

我们这里配置的MySQL是一主一从,为了演示效果所以将 balance设置为2,实际的线上环境一般都是双主双从(推荐balance=1) ,或者 一主一从(推荐 balance=3)。

再次登录 mycat交互模式,执行查询语句,就可以看到请求随机分发到主机和从机了

发表回复

京ICP备15027918号-1