1.原理圖
image.png
2.環(huán)境
主:172.16.122.131
從:172.16.122.132
# 下載mycat
[root@localhost opt]# wget http://dl.mycat.io/1.6.7.1/Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz
# 解壓
[root@localhost opt]# tar -zxvf Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz
3.mycat 配置
- server.xml
<user name="root" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
</user>
<user name="user">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>
- 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="fulj_mycat">
</schema>
<!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
/> -->
<dataNode name="fulj_mycat" dataHost="localhost1" database="fulj" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="172.16.122.131:3306" user="root"
password="123456">
<!-- can have multi read hosts -->
<readHost host="hostS2" url="172.16.122.132:3306" user="root" password="123456" />
</writeHost>
</dataHost>
</mycat:schema>
4.啟動(dòng)
[root@localhost bin]# ./mycat start console
[root@localhost bin]# netstat -ntlp
[root@localhost bin]# ps -ef|grep mycat
#登錄管理端口
[root@localhost bin]# mysql -uroot -p123456 -h127.0.0.1 -P9066
mysql> show database;
# 查看讀寫(xiě)配置
mysql> show @@datasource;
# 查看心跳信息
mysql> show @@heartbeat;
# 登錄mycat數(shù)據(jù)端口
[root@localhost bin]# mysql -uroot -p123456 -h127.0.0.1 -P8066
mysql> show databases;
+----------+
| DATABASE |
+----------+
| TESTDB |
+----------+
1 row in set (0.00 sec)
- 驗(yàn)證
更改日志的輸出模式合武,需要重啟./mycat restart
vi log4j2.xml;
<asyncRoot level="info" includeLocation="true">
# 修改為
<asyncRoot level="debug" includeLocation="true">
# 查看日志
tail -f mycat.log
最后配置分庫(kù)分表+讀寫(xiě)分離
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="fulj" checkSQLschema="false" sqlMaxLimit="100" dataNode="fulj_mycat">
# city 表分成了3個(gè)表city_1到3
<table name="city" primaryKey="id" autoIncrement="true" subTables="city_$1-3" dataNode="fulj_mycat" rule="mod-long" />
</schema>
<!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
/> -->
<dataNode name="fulj_mycat" dataHost="localhost1" database="fulj" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="172.16.122.131:3306" user="root"
password="123456">
<!-- can have multi read hosts -->
<readHost host="hostS2" url="172.16.122.132:3306" user="root" password="123456" />
</writeHost>
</dataHost>
</mycat:schema>