mycat是什么?
mycat是一款国产分布式数据库中间件。mycat是基于阿里巴巴的开源项目cobar为基础开发的。
http://www.mycat.org.cn/
mycat可以让程序员专注于业务相关的代码编写,不用担心数据库相关的业务(负载均衡,集群管理,读写分离,分库分表)。
mycat的安装和配置
前置条件:需要安装jdk,配置环境变量
步骤一:安装mycat ,上传mycat的压缩包
Mycat-server-1.6.7.5-release-20200410174409-linux.tar.gz #官网下载镜像
解压缩
tar -zxvf Mycat-server-1.6.7.5-release-20200410174409-linux.tar.gz
将mycat文件夹移动到/usr/local/,配置环境变量 (vi /etc/profile)
export MYCAT_HOME=/usr/local/mycat
export PATH=$PATH:$JAVA_HOME/bin:$MYCAT_HOME/bin
生效命令:source /etc/profile
步骤二: 修改配置文件
schema.xml(逻辑库的配置):
[root@server05 conf]# vi /usr/local/mycat/conf/schema.xml
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <!--逻辑数据库的配置 #chenweishuo_dn和chenweishuo_host名字随便写,但要互相对应--> <schema name="teacher" checkSQLschema="false" sqlMaxLimit="100" dataNode="chenweishuo_dn"> </schema> <!--database(teacher)是物理数据库的名字--> <dataNode name="chenweishuo_dn" dataHost="chenweishuo_host" database="teacher" /> <!--balance负载均衡的意思 1. balance="0",不开启读写分离 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 不负担读压力, 注意 balance=3 只在 1.4 及其以后版本有,1.3 没有。 --> <!-- 1. writeType="0", 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个 writeHost,重新启动后已切换后的为准,切录在配置文件中:dnindex.properties . 2. writeType="1",所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐。 switchType 属性 -1 表示不自动切换 1 默认值,自动切换 2 基于 MySQL 主从同步的状态决定是否切换 心跳语句为 show slave status 3 基于 MySQL galary cluster 的切换机制(适合集群)(1.4.1) 心跳语句为 show status like ‘wsrep%’ --> <dataHost name="chenweishuo_host" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100"> <!--集群才会有心跳--> <heartbeat>show slave status</heartbeat> <writeHost host="master1" url="192.168.65.10:3306" user="root" password="Es*QZhbOs0%"> <!-- 添加只读库配置--> <readHost host="slave1" url="192.168.65.11:3306" user="root" password="Es*QZhbOs0%" /> </writeHost> <writeHost host="master2" url="192.168.65.12:3306" user="root" password="Es*QZhbOs0%"> <readHost host="slave2" url="192.168.65.13:3306" user="root" password="Es*QZhbOs0%" /> </writeHost> </dataHost> </mycat:schema>
server.xml(用户权限的配置):
<user name="root" defaultAccount="true"> <property name="password">123456</property> <property name="schemas">teacher</property> </user> <user name="user"> <property name="password">123456</property> <property name="schemas">teacher</property> </user>
log4j2.xml(修改日志的打印级别):
将日志打印级别设置为debug
启动mycat:mycat start
测试读写分离
步骤一:通过navcat连接mycat: