zl程序教程

您现在的位置是:首页 >  工具

当前栏目

41MyCat - 常见问题与解决方案

解决方案 常见问题
2023-09-11 14:15:41 时间

1. Mycat目前有哪些功能与特性?

  • 支持 SQL 92标准
  • 支持Mysql集群,可以作为Proxy使用
  • 支持JDBC连接多数据库
  • 支持NoSQL数据库
  • 支持galera for mysql集群,percona-cluster或者mariadb cluster,提供高可用性数据分片集群
  • 自动故障切换,高可用性
  • 支持读写分离,支持Mysql双主多从,以及一主多从的模式
  • 支持全局表,数据自动分片到多个节点,用于高效表关联查询
  • 支持独有的基于E-R 关系的分片策略,实现了高效的表关联查询
  • 支持一致性Hash分片,有效解决分片扩容难题
  • 多平台支持,部署和实施简单
  • 支持Catelet开发,类似数据库存储过程,用于跨分片复杂SQL的人工智能编码实现,143行Demo完成跨分片的两个表的JION查询。
  • 支持NIO与AIO两种网络通信机制,Windows下建议AIO,Linux下目前建议NIO
  • 支持Mysql存储过程调用
  • 以插件方式支持SQL拦截和改写
  • 支持自增长主键、支持Oracle的Sequence机制

2.Mycat出来Mysql还支持哪些数据库?
答:mongodb、oracle、sqlserver 、hive 、db2 、 postgresql。

3. Mycat稳定性与Cobar如何?
答:目前Mycat稳定性优于Cobar,而且一直在更新,Cobar已经停止维护,可以放心使用。

4. Mycat支持集群么?
答:目前Mycat没有实现对多Mycat集群的支持,可以暂时使用haproxy来做负载,或者统计硬件负载。

5. Mycat多主切换需要人工处理么?
答:Mycat通过心跳检测,自主切换数据库,保证高可用性,无须手动切换。

6.Mycat目前有多少人开发?
答:Mycat目前开发全部是志愿者无偿支持,主要有以leaderus 为首的Mycat-Server 开始、以rainbow为首的Mycat-web开发、以石头狮子为首的产品发布及代码管理,还有以Marshy为首的推广。

7.Mycat目前有哪些项目?

  • Mycat-Server :Mycat核心服务
  • Mycat-spider : Mycat爬虫技术
  • Mycat-ConfigCenter :Mycat配置中心
  • Mycat-BigSQL : Mycat大数据处理(暂未更细)
  • Mycat-Web : Mycat监控及web(新版开发中)
  • Mycat-Balance :Mycat集群负载(暂未更细)

8.Mycat最新的稳定版本是哪个到哪里下载?
答:打包代码:Mycat最新稳定版是1.3.0.3 ,1.4为开发板,下载地址是:https://github.com/MyCATApache/Mycat-download。
文档:https://github.com/MyCATApache/Mycat-doc
源码:https://github.com/MyCATApache/Mycat-Server

9.Mycat如何配置字符集?
答:在配置文件server.xml配置,默认配置为utf8。

<system>
 	<property name="charset">utf8</property>
 </system>

10.mycat后台管理监控如何使用?
答:9066端口可以用JDBC方式执行命令,在界面上进行管理维护,也可以通过命令行查看命令行操作。命令行操作是:mysql -h127.0.0.1 -utest -ptest -P9066登陆,然后执行相应命令。

11.Mycat主键插入后应用如何获取?
答:获得自增主键,插入记录后执行select last_insert_id()获取。

12.Mycat如何启动与加入服务?
答:目前Mycat暂未封装加入服务,需要自己封装。
启动方式
linux环境为:

 ./mycat start 启动
 ./mycat stop 停止
 ./mycat console 前台运行
 ./mycat restart 重启服务
 ./mycat pause 暂停
 ./mycat status 查看启动状态

window启动为:
直接双击运行 startup_nowrap.bat ,如果闪退 用cmd模式运行查看日志。

13. Mycat运行sql时经常阻塞或卡死是什么原因?
答: 如果出现执行sql语句长时间未返回,或卡死,请检查是否是虚机下运行或cpu为单核,具体解决方式请参考:https://github.com/MyCATApache/Mycat-Server/issues/73,如果仍旧无法解决,可以暂时跳过,目前有些环境阻塞卡死原因未知。

14. Mycat中,旧系统数据如何迁移到Mycat中?
答:旧数据迁移目前可以手工导入,在mycat中提取配置好分配规则及后端分片数据库,然后通过dump或loaddata方式导入,后续Mycat就做旧数据自动数据迁移工具。

15.Mycat如何对旧分片数据迁移或扩容,支持自动扩容么?
答:目前除了一致性hash规则分片外其他数据迁移比较困难,目前暂时可以手工迁移,未提供自动迁移方案,具体迁移方案情况Mycat权威指南对应章节。

16.Mycat支持批量插入吗?
答:目前Mycat1.3.0.3以后支持多values的批量插入,如insert into(xxx) values(xxx),(xxx) 。

17.Mycat支持多表Join吗?
答:Mycat目前支持2个表Join,后续会支持多表Join,具体Join请看Mycat权威指南对应章节。

18.Mycat 启动包主机不存在的问题?
答:需要添加ip跟主机的映射。

19.Mycat连接会报无效数据源(Invalid datasource)?
答:如果不是配置问题,分析具体日志看出错原因,常见的有:

  1. 如果是应用连:在某些版本的Mysql驱动下连接Mycat会报错,可升级最新的驱动包试下。
  2. 如果是服务端控制台连,确认mysql是否开启远程连接权限,或防火墙是否设置正确,或者数据库database是否配置,或用户名密码是否正确。

20.Mycat使用中如何提需求或者bug?
答:bug或新需求可以到群里提问,同时最好到github发起以isuues:https://github.com/MyCATApache/Mycat-Server/issues

21.Mycat如何建表与创建存储过程?
答:
注意注解中语句是节点的表请替换成自己表如select 1 from 表 ,查出来的数据在那个节点往哪个节点建

存储过程:/*!mycat: sql=select 1 from 表 */ 
CREATE DEFINER=`root`@`%` PROCEDURE `proc_test`() BEGIN END ; 

表:/*!mycat: sql=select 1 from 表 */
create table ttt(id int);

22. Mycat目前有多少人维护?
答:目前初步统计有10人以上核心人员维护。

23. Mycat支持的或者不支持的语句有哪些?
答:insert into,复杂子查询,3表及其以上跨库join等不支持。