开发者学堂课程【全面讲解开源数据库中间件MyCat使用及原理(三):MyCat-集群-两台 MyCat 的安装配置】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/757/detail/13287
MyCat-集群-两台 MyCat 的安装配置
内容介绍:
一、 MyCat 安装配置
二、 课程总结
一、 MyCat 安装配置
MySQL 的主从复制已经搭建完毕,接下来需要安装配置的是 MyCat ,共有两个 MyCat 节点,分别在 157 和 158 上面, 157 上面的 MyCat 已经安装完成,接下来先配置 157 上面的 MyCat, 然后再考虑 158 上面的 MyCat 的安装及配置。
在 157 这台服务器上, MyCat 之前已经安装完毕,也就是 /usr/local/mycat, 配置文件是 schema.xml。接下来需配置 157 上 MyCat 的配置信息(读写分离)
1
schema.xml
1 <?xm1 version="1.0"?>
2 <!DOCTYPE mycat:schema SYSTEM"schema.dtd">
3<mycat:schema xm1ns:mycat="http://io.mycat/">
4 <schema name="ITCAST" checkSQLschema="true" sq1MaxLimit="100">
5 <table name="user" dataNode="dn1" primaryKey="id"/>
6 </schema>
7 <dataNode name="dn1" dataHost="localhost1" database="db01" />
8 <dataHost name="1oca1host1" maxCon="1000" minCon="10" balance="1" writeType="O”dbType="mysq1"
9 dbDriver="native" switchType="1" slaveThreshold="100">
10 <heartbeat>select user()</heartbeat>
11 <writeHost host="hostM1" ur1="192.168.192.160:3306" user="root" password="itcast">
12 <readHost host="hostS1" ur1="192.168.192.161:3306" user="root" password="itcast" />
13 </writeHost>
14 </dataHost>
15 </mycat:schema>
现在已经有两个 MySQL 的节点,并且它们直接已经配置完成了主从复制,要通过 MyCat 来完成读写分离的配置,也就是写通过主节点来完成,读通过从节点来完成,
接下来需配置 schema.dtd
1 <?xm1 version="1.0
2 <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
3<mycat:schema xmlns:mycat="http://io.mycat/">
5 <schema name="ITCAST" checks0Lschema="true" sqlMaxLimit="100">
6 <table name="user" dataNode="dn1" primaryKey="id"/>
7 </schema>
9<dataNode name="dn1" dataHost="localhost1" database="db03" />
11 <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql"
12 dbDriver="native" switchType="1" slaveThreshold="100">
13 <heartbeat>select
" user="root" password="itcast">
14 <writeHost host="hosts1" url="192.168.192.158:3306" user="root" password="itcast" />
15 <readHost host="hosts1" url="192.168.192.158:3306" user="root" password="itcast" />
16 </writehost>
18 <writeHost host="hostM2" url="192.168.192.159:3306" user="root" password="itcast">
19 <readHost host="hosts2" url="192.168.192.160:3306" user="root" password="itcast" />
20 </writeHost>
21 </dataHost>
23 </mvcat:schema>
需要替换掉如下内容:
5 <schema name="ITCAST" checks0Lschema="true" sqlMaxLimit="100">
6 <table name="user" dataNode="dn1" primaryKey="id"/>
7 </schema>
9<dataNode name="dn1" dataHost="localhost1" database="db03" />
11 <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql"
12 dbDriver="native" switchType="1" slaveThreshold="100">
13 <heartbeat>select
" user="root" password="itcast">
14 <writeHost host="hosts1" url="192.168.192.158:3306" user="root" password="itcast" />
15 <readHost host="hosts1" url="192.168.192.158:3306" user="root" password="itcast" />
16 </writehost>
18 <writeHost host="hostM2" url="192.168.192.159:3306" user="root" password="itcast">
19 <readHost host="hosts2" url="192.168.192.160:3306" user="root" password="itcast" />
20 </writeHost>
21 </dataHost>
替换为:
4 <schema name="ITCAST" checkSQLschema="true" sq1MaxLimit="100">
5 <table name="user" dataNode="dn1" primaryKey="id"/>
6 </schema>
7 <dataNode name="dn1" dataHost="localhost1" database="db01" />
8 <dataHost name="1oca1host1" maxCon="1000" minCon="10" balance="1" writeType="O”dbType="mysq1"
9 dbDriver="native" switchType="1" slaveThreshold="100">
10 <heartbeat>select user()</heartbeat>
11 <writeHost host="hostM1" ur1="192.168.192.160:3306" user="root" password="itcast">
12 <readHost host="hostS1" ur1="192.168.192.161:3306" user="root" password="itcast" />
13 </writeHost>
14 </dataHost>
里面配置的逻辑库依然是 schema.dtd ,逻辑表是 user,数据节点是 dn1,指向的是下面的 dateNode , dateNode 里面指向 datehost , 数据主机是 localhost1 , 在 localhost1 中配置了最小连接数,最大连接数以及负载均衡策略以及数据库的类型等信息,主要是 writeHost(主节点),当前的主节点是 157,从节点是 158,用户名 root,密码 itcast, 然后再矫正笔记,如此操作 schema.dtd 便成功修改,接下来再修改 server.xml
2、server.xml
如下:
<user name="root" defaultAccount="true">
<property name="password">G00bnFVWrAuFgr1JMuMZkvfDNyTpoiGU7n/Wlsa151CirHQnANVk3NzE3FErx8v6pAc00ct<property name="schemas">ITCAST</property><pfoperty name="readonly">false</property><property name="benchmark">1000</property><property name="usingDecrypt">1</property>
<!-- 表级 DML 权限设置
<privileges check="true">
<schema name="ITCAST" dml="1111" >
<table name="TB TEST" dml="1110"></table></schema></privileges> -->
</user>
<user name="user">
<property name="password">123456</property><property name="schemas">ITCAST</property><property name="readonly">true</property></user>
</mycat:server>
在其中需配置访问的用户名及密码(已经配置完成无需过多操作),因此第一个节点(157)上的 MyCat 就配置完成。
接下来 157 配置完成后需用同样的操作来配置 158,首先需在 158 此台节点上安装 MyCat,然后再进行配置。具体操作过程:将 MyCat 的安装包上传到 158 上,此步骤需借助一个指令(scp)进行远程拷贝,scp 拷贝 MyCat 的远程安装包,然后使用 root 进行复制,需要在 158 上进行复制,复制后放在 root 目录下,然后输入158 root 的密码,复制完成后,接下来执行解压操作,解压完成后还需进行配置,依然要通过 Adding Profile 来进行配置,主机是 192.168.159.158,Port 为 22,连接方式选择 SFTP,连接上之后可修改里面的配置文件 schema.xml 以及 server.xml ,对于 schema.xml 以及 server.xml,实际上其配置与 157 上的配置是一样的,连接上之后再修改第二个节点中的配置,在 MyCat2 中的 usr 找到 local ,再找到 usr 中的 MyCat ,再点击 MyCat 中的 conf,再其中找到 server.xml , server.xml 和第一个是一样的,可直接拷贝,然后对于 server.xml 中的如下配置也可直接拷贝:
< user name =" root " defaultAccount =" true ">
< property name =' password ">123456</ property > property name =" schemas '> TESTDB </ property ><!-﹣表级 DML 权限设置﹣->
<!--
< privileges check =" false ">
< schema name =" TESTDB " dml ="0110">
< table name ="tb01" dml ="O000"> X / table >
< table name ="tb02” dml ="1111">/ table >
</ schema >
</ privileges >
</ user >
< user name =' user ">
< property
< property
< property
V name =" password "> user く/ property >
name =" schemas '> TESTDB </ property >
y name =" readOnly "> true </ property >
</ user
完成之后接下来要重启 MyCat
重启完成之后,158 上的 MyCat 也需要重启,bin 目录下的 MyCat 未启动过就是 start , MyCat 重启之后,接下来需要进去到这两台 MyCat 中,进入之后执行 mysql-h 192.168.192.157-p 8066-u root-p, 如此便进入到第一台 MyCat ,接下来再对第二台 MyCat 重复刚才的指令操作。
注意:执行中 ip 需变为 mysql-h 192.168.192.158-p 8066-u root-p。
实际操作中会存在问题(JVM,也就是 158上安装了 MyCat ,未安装 jdk),因此此时要在 157 上再传一个文件( jdk 的安装包),再执行指令 scp 传到 jdk ,然后以 root 身份进行传递,传递到 192.168.192.158,然后传递到 root 目录下,拷贝完成之后需在 158 上安装 jdk ,解压到 share 目录下,解压完成之后还需配置其环境变量,修改 etc 下的 profile, 接下来再其中还需配置两项信息(可直接从157 上拷贝,即 /etc/profile),如下图:
配置完成后执行指令( source/etc/profile ),然后再执行 java-version ,此时若 jdk 安装完成,接下来可启动 MyCat ,bin/ MyCat start, 启动之后再去看日志判定 MyCat 是否成功启动,若成功启动,接下来就可连接 MyCat (mysql-h 192.168.192.158-p 8066-u root-p),如此操作,两台 MyCat 都已安装并且配置完成。
配置完成之后要验证 MyCat 能否实现 MySQL 的读写分离,验证时需查看 MyCat 的日志,需修改 158 此台节点上的日志级别,切换到 /usr/local/mycat 此目录下,里面有一个 conf 目录,在其中有 log4j2.xml.
如下:
将 info 改为 debug,另外一台服务器 157 也需要进行修改,但之前已经完成了修改。
修改为 debug 后,接下来需要查看 MyCat 的日志,需监控其日志,判断其工作是否正常。
先验证 157,use ITCAST 切换到数据库 show tables,查看其中的表。
当在 MyCat 中执行查询操作时会转发到每一个节点,如下:
当执行 SQL 语句会将请求转发到 MySQL 节点(服务器 158),
158 执行读操作,157 执行写操作。具体如下:
接下来拷贝一个 insert 语句,如下:
执行插入操作后,如下图:
同样的操作再来验证 158,操作完成之后会发现 158 无日志,原因是修改了日志级别就要重启 /bin/mycat start ,重启完成之后重新连接,再重新打开日志,可发现 slect 语句依然是通过 158,insert 是通过 157。
二、 课程总结
综上是 MyCat 的安装以及配置,安装之前的课程已经讲解了,配置只需配置schema.xml 以及 server.xml,对于这两个配置文件在其节点的配置是相同的,配置完成之后分别在 157 和 158 这两台节点上进行了测试,判断配置是否生效。