下载:https://github.com/MyCATApache/Mycat-Server/releases/
下载的安装包:
[root@192 Mycat]# ll total 21512 -rw-r--r--. 1 501 games 21760812 Jan 28 11:52 Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz
解压即可:
[root@192 Mycat]# tar -zxvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz [root@192 Mycat]# mv mycat /usr/local/ [root@192 Mycat]# cd /usr/local/mycat/ [root@192 mycat]# ll total 12 drwxr-xr-x. 2 501 games 190 Jan 29 00:36 bin drwxr-xr-x. 2 501 games 6 Oct 22 2019 catlet drwxr-xr-x. 4 501 games 4096 Jan 29 00:36 conf drwxr-xr-x. 2 501 games 4096 Jan 29 00:36 lib drwxr-xr-x. 2 501 games 6 Jan 5 2020 logs -rwxr-xr-x. 1 501 games 227 Jan 5 2020 version.txt
配置文件位于:conf目录下
修改配置文件 server.xml:
[root@192 conf]# vi server.xml ... <user name="root" defaultAccount="true"> <property name="password">123456</property> <property name="schemas">master_slave_001</property> <property name="defaultSchema">master_slave_001</property> <!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 --> <!-- 表级 DML 权限设置 --> <!-- <privileges check="false"> <schema name="TESTDB" dml="0110" > <table name="tb01" dml="0000"></table> <table name="tb02" dml="1111"></table> </schema> </privileges> --> </user> ...
Table 'TESTDB.tb001' doesn't exist
。修改配置文件schema.xml(这个文件改动较大,先备份):
[root@192 conf]# cp schema.xml schema.xml.default [root@192 conf]# vi schema.xml <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <!-- schema: 虚拟库与真实库的映射 ——name: 虚拟库的名字,对应在server.xml中设置的schemas ——sqlMaxLimit: 允许最大查询记录数 ——checkSQLschema:是否检查自动删除 “虚拟库名” ——dataNode: 虚拟库对应的真实database,对应<dataNode>标签的name --> <schema name="master_slave_001" checkSQLschema="false" sqlMaxLimit="100" dataNode="dataNode001"> <!-- table: 虚拟表配置 ——name: 表名 ——dataNode:表对应的分片。如果做分片,则配置多个用逗号分隔;或者使用db$0-99,代表db0到db99的database ——rule: 分片规则,如果没有则删除 --> <!-- <table name="tb_item" dataNode="dn1" rule="sharding-by-mod2"/> --> </schema> <!-- dataNode: 数据库分片,每一个dataNode就是一个数据库分片 ——name: 分片名称 ——dataHost:真实库的主机信息,对应<dataHost>标签的name ——database:真实MySQL中真实的物理数据库名称 --> <dataNode name="dataNode001" dataHost="dataHost001" database="master_slave_001" /> <!-- dataHost: 真实库的主机信息 ——name: 主机名 ——maxCon: 最大连接 ——minCon: 最小连接 ——balance: 负载均衡方式,0不开启读写分离。1~3都开启,具体看下边详细说明 ——writeType: 写负载均衡。永远设置0 ——dbDriver: 驱动类型,推荐native,可选jdbc ——switchType:主从的自动切换,1=自动切换,-1=不自动切换,2=基于MySQL主从同步的状态决定是否切换,默认1 --> <dataHost name="dataHost001" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="writeHost001" url="192.168.3.201:3306" user="root" password="rootroot"> <readHost host="readHost001" url="192.168.3.202:3306" user="root" password="rootroot" /> </writeHost> </dataHost> </mycat:schema>
Table 'TESTDB.tb001' doesn't exist
错误。控制台启动:
[root@192 mycat]# ./bin/mycat console Running Mycat-server... wrapper | --> Wrapper Started as Console wrapper | Launching a JVM... jvm 1 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org jvm 1 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved. jvm 1 | jvm 1 | MyCAT Server startup successfully. see logs in logs/mycat.log
查看日志文件位置:
[root@192 logs]# pwd /usr/local/mycat/logs [root@192 logs]# ll total 28 -rw-r--r--. 1 root root 20067 Jan 29 10:55 mycat.log -rw-r--r--. 1 root root 6 Jan 29 10:49 mycat.pid -rw-r--r--. 1 root root 2568 Jan 29 10:49 wrapper.log
后台启动:
[root@192 mycat]# ./bin/mycat start [root@192 mycat]# ./bin/mycat stop [root@192 mycat]# ./bin/mycat restart [root@192 mycat]# ./bin/mycat status
Mycat默认端口:8066
我这里使用Navicat客户端新建MySQL连接方式,配置参数:
Host:192.168.3.205 Port:8066 UserName:root Password:123456
连接成功后,就会看到名为“master_slave_001”的数据库,里边就是MySQL中的表了。尝试进行增删改查并查看主从库的数据一切正常。
至此,Mycat+MySQL主从复制+读写分离已经实现。