# 官网 http://www.mycat.io/ 参考文档: https://blog.csdn.net/qq_35992900/article/details/80673889 #配置文件参考(来自华为) https://www.huaweicloud.com/kunpeng/software/mycat.html # 测试地址及帐号 http://10.10.14.159/dsssoserver/login 学生帐号 xiaotu 123456 教师帐号 tantan 123456 # 测试主机 Windows测试机 118.190.89.22:56006 administrator DsIdeal@123 mycat 内网:10.10.14.211:22 外网:118.190.89.22:56001 mysql_master 内网:10.10.14.212:22 外网:118.190.89.22:56002 mysql_slave1 内网:10.10.14.213:22 外网:118.190.89.22:56003 mysql_slave2 内网:10.10.14.214:22 外网:118.190.89.22:56004 mysql_slave3 内网:10.10.14.215 外网:118.190.89.22:56005 密码都是:dsideal # ================================================================================== (1)安装jdk 详细见jdk安装 目录下的文件。 (2)下载和安装 cd /usr/local/ wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz rm -rf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz #配置环境变量并添加 echo "export MYCAT_HOME=/usr/local/mycat" >> /etc/profile source /etc/profile #切换目录 cd /usr/local/mycat/bin/ (3)配置 /usr/local/mycat/conf/schema.xml /usr/local/mycat/conf/server.xml 详细的内容参考"mycat配置样例"目录下的配置通过文件示例。 #切换路径 cd /usr/local/mycat/bin # 启动 ./mycat start #重启 ./mycat restart # 连接到mycat的数据端口 mysql -uroot -pDsideaL147258369 -P22066 -h127.0.0.1 use dsideal_db; # 测试更新 update t_sys_loginperson set person_name='黄海测试1' where id=86751966; # 测试读取 select * from t_base_class limit 100; select * from t_base_student limit 100; select * from t_sys_loginperson limit 100; # 管理功能 mysql -uroot -pDsideaL147258369 -P9066 -h127.0.0.1 show @@datasource; mysql> show @@datasource; +----------+--------+-------+--------------+-------+------+--------+------+------+---------+-----------+------------+ | DATANODE | NAME | TYPE | HOST | PORT | W/R | ACTIVE | IDLE | SIZE | EXECUTE | READ_LOAD | WRITE_LOAD | +----------+--------+-------+--------------+-------+------+--------+------+------+---------+-----------+------------+ | db_node | master | mysql | 10.10.14.212 | 22066 | W | 0 | 3 | 1000 | 122 | 0 | 1 | | db_node | slave1 | mysql | 10.10.14.213 | 22066 | R | 0 | 3 | 1000 | 55 | 1 | 0 | | db_node | slave2 | mysql | 10.10.14.214 | 22066 | R | 0 | 3 | 1000 | 56 | 2 | 0 | | db_node | slave3 | mysql | 10.10.14.215 | 22066 | R | 0 | 3 | 1000 | 55 | 1 | 0 | +----------+--------+-------+--------------+-------+------+--------+------+------+---------+-----------+------------+ 4 rows in set (0.00 sec) 问题1:dsssoserver的程序使用mycat后,一直报错,无法登录。 解决办法:直接将jdbc指向 master,躲开了这个问题。 问题2:增量索引和全量索引是每台slave都有的,指向了slave机器,因为需要回写数据,会造成主从复制失败。 解决办法:指向mycat,这样可以避免此问题。 问题3: Last packet sent to the server was 2 ms ago. at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2592) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2909) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695) at com.mysql.jdbc.Connection.execSQL(Connection.java:2998) at com.mysql.jdbc.Connection.execSQL(Connection.java:2927) at com.mysql.jdbc.Statement.executeQuery(Statement.java:956) at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208) at org.springframework.jdbc.core.JdbcTemplate$1QueryStatementCallback.doInStatement(JdbcTemplate.java:440) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:395) ... 14 more 以前在mysql中一般配置如下: [mysqld] wait_timeout=35 interactive_timeout=35 java项目的jdbc.properties是这样配置的 mysql.minIdle = 10 mysql.maxWait = 30000 很明显,因为java的连接池的连接存活时间与mycat中配置的连接存活时间不一致造成,我尝试修改如下: 连接到mycat,查看超时时长: mysql -uroot -pDsideaL147258369 -P22066 -h127.0.0.1 show global variables like 'wait_timeout'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | wait_timeout | 35 | +---------------+-------+ 1 row in set (0.01 sec) 300000 300 后来让吴缤修改了master+slave1+slave2+slave3的默认值 ,就跟着走了,mycat我都没有修改,也没重启,看来是直接透过去了,打到从库上了。 #=========================================================== MYCAT返回的是一个数据集,造成程序出错 mysql -uroot -pDsideaL147258369 -P22066 -h127.0.0.1 use dsideal_db; SELECT SQL_NO_CACHE id,Matchesfound FROM T_SOCIAL_BLOG_ARTICLE_SPHINXSE WHERE query='filter=reprint_time,0;filter=business_type,7;filter=audit_status,1;sort=extended:ts desc;filter=business_id,300530;filter=is_del,0;maxmatches=200000;offset=0;limit=6';SHOW ENGINE SPHINX STATUS; mysql> SELECT SQL_NO_CACHE id,Matchesfound FROM T_SOCIAL_BLOG_ARTICLE_SPHINXSE WHERE query='filter=reprint_time,0;filter=business_type,7;filter=audit_status,1;sort=extended:ts desc;filter=business_id,300530;filter=is_del,0;maxmatches=200000;offset=0;limit=6';SHOW ENGINE SPHINX STATUS; +------+--------------+ | id | Matchesfound | +------+--------------+ | 2049 | 1 | +------+--------------+ 1 row in set (0.01 sec) Empty set (0.00 sec) #=========================================================== 纯MYSQL返回的是两个数据集 mysql -uroot -pDsideaL147258369 -P22066 -h127.0.0.1 MariaDB [(none)]> use dsideal_db; Database changed MariaDB [dsideal_db]> SELECT SQL_NO_CACHE id,Matchesfound FROM T_SOCIAL_BLOG_ARTICLE_SPHINXSE WHERE query='filter=reprint_time,0;filter=business_type,7;filter=audit_status,1;sort=extended:ts desc;filter=business_id,300530;filter=is_del,0;maxmatches=200000;offset=0;limit=6';SHOW ENGINE SPHINX STATUS; +------+--------------+ | id | Matchesfound | +------+--------------+ | 2049 | 1 | +------+--------------+ 1 row in set (0.04 sec) +--------+-------+---------------------------------------------+ | Type | Name | Status | +--------+-------+---------------------------------------------+ | SPHINX | stats | total: 1, total found: 1, time: 8, words: 0 | +--------+-------+---------------------------------------------+ 1 row in set (0.00 sec) #=========================================================== SELECT * FROM t_sys_loginperson WHERE LOGIN_NAME='A4'; select * from t_base_person where PERSON_ID=350550; mysql> SELECT login_password FROM t_sys_loginperson WHERE LOGIN_NAME='A4'; +----------------------------------+ | login_password | +----------------------------------+ | 999c844282d9a9bd6e1b90b22957c5d2 | +----------------------------------+ 1 row in set (0.00 sec) 999c844282d9a9bd6e1b90b22957c5d2