Mycat常见问题与解决方案
转载于:https://www.cnblogs.com/jpfss/p/8194111.html
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目前有生产案例了么?
答:目前Mycat初步统计大概600家公司使用。
4 Mycat稳定性与Cobar如何?
答:目前Mycat稳定性优于Cobar,而且一直在更新,Cobar已经停止维护,可以放心使用。
5 Mycat支持集群么?
答:目前Mycat没有实现对多Mycat集群的支持,可以暂时使用haproxy来做负载,或者统计硬件负载。
6 Mycat多主切换需要人工处理么?
答:Mycat通过心跳检测,自主切换数据库,保证高可用性,无须手动切换。
7 Mycat目前有多少人开发?
答:Mycat目前开发全部是志愿者无偿支持,主要有以leaderus 为首的Mycat-Server 开始、以rainbow为首的Mycat-web开发、以海王星为首的产品发布及代码管理,还有以Marshy为首的推广。
8 Mycat目前有哪些项目?
答:Mycat-Server :Mycat核心服务、
Mycat-spider : Mycat爬虫技术、
Mycat-ConfigCenter :Mycat配置中心 、
Mycat-BigSQL : Mycat大数据处理(暂未更细)、
Mycat-Web : Mycat监控及web(新版开发中) 、
Mycat-Balance :Mycat集群负载(暂未更细)
9 Mycat最新的稳定版本是哪个到哪里下载?
答:打包代码:Mycat最新稳定版是1.5.1 ,1.6为aphla,下载地址是:https://github.com/MyCATApache/Mycat-download。
文档:https://github.com/MyCATApache/Mycat-doc
源码:https://github.com/MyCATApache/Mycat-Server
10 Mycat如何配置字符集?
答:在配置文件server.xml配置,默认配置为utf8。
utf8
11 Mycat后台管理监控如何使用?
答:9066端口可以用JDBC方式执行命令,在界面上进行管理维护,也可以通过命令行查看命令行操作。
命令行操作是:mysql -h127.0.0.1 -utest -ptest -P9066 登陆,然后执行相应命令。
12 Mycat主键插入后应用如何获取?
答:获得自增主键,插入记录后执行select last_insert_id()获取。
13 Mycat如何启动与加入服务?
答:目前Mycat暂未封装加入服务,需要自己封装。
linux环境为:
./mycat start 启动
./mycat stop 停止
./mycat console 前台运行
./mycat restart 重启服务
./mycat pause 暂停
./mycat status 查看启动状态
window启动为:
直接双击运行 startup_nowrap.bat ,如果闪退用cmd模式运行查看日志。
14 Mycat运行sql时经常阻塞或卡死是什么原因?
答: 如果出现执行sql语句长时间未返回,或卡死,请检查是否是虚机下运行或cpu为单核,具体解决方式请参 考:https://github.com/MyCATApache/Mycat-Server/issues/73,如果仍旧无法解决,可以暂时跳过,目前有些环境阻塞卡死原因未知。
15 Mycat中,旧系统数据如何迁移到Mycat中?
答:旧数据迁移目前可以手工导入,在mycat中提取配置好分配规则及后端分片数据库,然后通过dump或loaddata方式导入,后续Mycat就做旧数据自动数据迁移工具。
16 Mycat如何对旧分片数据迁移或扩容,支持自动扩容么?
答:目前除了一致性hash规则分片外其他数据迁移比较困难,目前暂时可以手工迁移,未提供自动迁移方案,具体迁移方案情况Mycat权威指南对应章节。
17 Mycat支持批量插入吗?
答:目前Mycat1.3.0.3以后支持多values的批量插入,如insert into(xxx) values(xxx),(xxx) 。
18 Mycat支持多表Join吗?
答:Mycat目前支持2个表Join,后续会支持多表Join,具体Join请看Mycat权威指南对应章节。
19 Mycat 启动报主机不存在的问题?
答:需要添加ip跟主机的映射。
20 Mycat连接会报无效数据源(Invalid datasource)?
答:例如报错:mysql> select * from company;
ERROR 3009 (HY000): java.lang.IllegalArgumentException: Invalid DataSource:0
这类错误最常见是一些配置问题例如schema.xml中的dataNode的配置和实际不符合,请先仔细检查配置项,确保配置没有问题。如果不是配置问题,分析具体日志看出错原因,常见的有:
如果是应用连:在某些版本的Mysql驱动下连接Mycat会报错,可升级最新的驱动包试下。
如果是服务端控制台连,确认mysql是否开启远程连接权限,或防火墙是否设置正确,或者数据库database是否配置,或用户名密码是否正确。
21 Mycat使用中如何提需求或bug?
答:bug或新需求可以到群里提问,同时最好到github发起以isuues:https://github.com/MyCATApache/Mycat-Server/issues
22 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);
23 Mycat目前有多少人维护?
答:目前初步统计有10人以上核心人员维护。
24 Mycat支持的或者不支持的语句有哪些?
答:insert into,复杂子查询,3表及其以上跨库join等不支持。
25 MycatJDBC连接报 PacketTooBigException异常
答:检查mysqljdbc驱动的版本,在使用mycat1.3和mycat1.4版本情况下,不要使用jdbc5.1.37和38版本的驱动,会出现如下异常报错:com.mysql.jdbc.PacketTooBigException: Packet for query is too large (60 > -1). You can change this value on the server by setting the max_allowed_packet’ variable。建议使用jdbc5.1.35或者36的版本。
26 Mycat中文乱码的问题
答:如果在使用mycat出现中文插入或者查询出现乱码,请检查三个环节的字符集设置:1)客户端环节(应用程序、mysql命令或图形终端工具)连接mycat字符集2)mycat连接数据库的字符集3)数据库(mysql,oracle)字符集。这三个环节的字符集如果配置一致,则不会出现中文乱码,其中尤其需要注意的是客户端连接mycat时使用的连接字符集,通常的中文乱码问题一般都由此处设置不当引出。其中mycat内部默认使用utf8字符集,在最初启动连接数据库时,mycat会默认使用utf8去连接数据库,当客户端真正连接mycat访问数据库时,mycat会使用客户端连接使用的字符集修改它连接数据库的字符集,在mycat环境的管理9066端口,可以通过show @@backend命令查看后端数据库的连接字符集,通过show @@connection命令查看前端客户端的连接字符集。客户端的连接可以通过指定字符集编码或者发送SET命令指定连接mycat时connection使用的字符集,常见客户端连接指定字符集写法如下:
1) jdbcUrl=jdbc:mysql://localhost:8066/databaseName? characterEncoding=iso_1
2) SET character_set_client = utf8;用来指定解析客户端传递数据的编码
SET character_set_results = utf8;用来指定数据库内部处理时使用的编码
SET character_set_connection = utf8;用来指定数据返回给客户端的编码方式
3) mysql –utest –ptest –P8066 –default-character-set=gbk
27 Mycat无法登陆Access denied
答:Mycat正常安装配置完成,登陆mycat出现以下错误:
[mysql@master ~]$ mysql -utest -ptest -P8066
ERROR 1045 (28000): Access denied for user ‘test’@’localhost’ (using password: YES)
请检查在schema.xml中的相关dataHost的mysql主机的登陆权限,一般都是因为配置的mysql的用户登陆权限不符合,mysql用户权限管理不熟悉的请自己度娘。只有一种情况例外,mycat和mysql主机都部署在同一台设备,其中主机localhost的权限配置正确,使用-hlocalhost能正确登陆mysql但是无法登陆mycat的情况,请使用-h127.0.0.1登陆,或者本地网络实际地址,不要使用-hlocalhost,很多使用者反馈此问题,原因未明。
28 Mycat的分片数据插入报异常IndexOutofBoundException
答:在一些配置了分片策略的表进行数据插入时报错,常见的报错信息如下:java.lang.IndexOutOfBoundsException:Index:4,size:3这类报错通常由于分片策略配置不对引起,请仔细检查并理解分片策略的配置,例如:使用固定分片hash算法,PartitionByLong策略,如果schema.xml里面设置的分片数量dataNode和rule.xml配置的partitionCount 分片个数不一致,尤其是出现分片数量dataNode小于partitionCount数量的情况,插入数据就可能会报错。很多使用者都没有仔细理解文档中对分片策略的说明,用默认rule.xml配置的值,没有和自己实际使用环境进行参数核实就进行分片策略使用造成这类问题居多。
29 Mycat ER分片子表数据插入报错
答:一般都是插入子表时出现不能找到父节点的报错。报错信息如: [Err] 1064 - can’t find (root) parent sharding node for sql:。此类ER表的插入操作不能做为一个事务进行数据提交,如果父子表在一个事务中进行提交,显然在事务没有提交前子表是无法查到父表的数据的,因此就无法确定sharding node。如果是ER关系的表在插入数据时不能在同一个事务中提交数据,只能分开提交。
30 Mycat最大内存无法调整至4G以上
答:mycat1.4的JVM使用最大内存调整如果超过4G大小,不能使用wrapper.java.maxmemory参数,需要使用wrapper.java.additional的写法,注意将wrapper.java.maxmemory参数注释,例如增加最大内存至8G:wrapper.java.additional.10=-Xmx8G。
31 Mycat使用过程中报错怎么办
答:记住无论什么时候遇到报错,如果不能第一时间理解报错的原因,首先就去看日志,无论是启动(wrapper.log)还是运行过程中(mycat.log),请相信良好的日志是编程查错的终极必杀技。日志如果记录信息不够,可以调整conf/log4j.xml中的level级别至debug,所有的详细信息均会记录。另外如果在群里面提问,尽量将环境配置信息和报错日志提供清楚,这样别人才能快速帮你定位问题。
Mycat常见问题与解决方案的更多相关文章
- Mycat常见问题与解决方案---宜将剩勇追穷寇,不可沽名学霸王
1 Mycat目前有哪些功能与特性? 答: • 支持 SQL 92标准 • 支持Mysql集群,可以作为Proxy使用 • 支持JDBC连接多数据库 • 支持NoSQL数据库 • 支持galera f ...
- Mycat高可用解决方案三(读写分离)
Mycat高可用解决方案三(读写分离) 一.系统部署规划 名称 IP 主机名称 配置 192.168.199.112 mycat01 2核/2G Mysql主节点 192.168.199.110 my ...
- 《PDF.NE数据框架常见问题及解决方案-初》
<PDF.NE数据框架常见问题及解决方案-初> 1.新增数据库后,获取标识列的值: 解决方案: PDF.NET数据框架,已经为我们考略了很多,因为用PDF.NET进行数据的添加操作时 ...
- XHTML CSS 常见问题和解决方案
原文地址:XHTML CSS 常见问题和解决方案 作为前端开发人员,在日常的页面制作时,不可避免的会碰上这样那样的问题,我挑选了其中的一些进行总结归档,希望对大家会有所帮助: 1.如何定义高度很小的容 ...
- 自学华为IoT物联网_06 智慧家庭物联网常见问题及解决方案
点击返回自学华为IoT物流网 自学华为IoT物联网_06 智慧家庭物联网常见问题及解决方案 1. 家庭中遇到的问题 2.1 华为智慧家庭概念的发展历程 2.2 华为智慧家庭的解决方案架构 智慧家庭主要 ...
- 自学华为IoT物联网_05 能源工业物联网常见问题及解决方案
点击返回自学华为IoT物流网 自学华为IoT物联网_05 能源工业物联网常见问题及解决方案 1. 1 能源工业--油田业务面临的三大挑战 故障处理不及时: 部分油田开采难道大.机械故障较多.现场发生的 ...
- 自学华为IoT物联网_04 车联网常见问题及解决方案
点击返回自学华为IoT物流网 自学华为IoT物联网_04 车联网常见问题及解决方案 1.1 可以预见的车联网未来 车辆对车辆.车辆对道路.车辆对网络通信 车辆对外发送车辆状态信息 周边环境信息发送给车 ...
- 自学华为IoT物联网_03 公共事业物联网常见问题及解决方案
点击返回自学华为IoT物流网 自学华为IoT物联网_03 公共事业物联网常见问题及解决方案 本文从以下六项公共事业,看看物联网的解决方案: 停车问题 路灯管理问题 消防栓管理问题 井盖管理问题 水表管 ...
- ARKit从入门到精通(11)-ARKit开发常见问题及解决方案
转载请注明出处:ARKit从入门到精通(11)-ARKit开发常见问题及解决方案 本文主要介绍ARKit开发过程中一些常见问题 1.ARKit框架无法导入问题 2.ARKit运行黑屏或者白屏问题:Un ...
随机推荐
- 统计学习方法 | 第1章 统计学习方法概论 | Scipy中的Leastsq()
Scipy是一个用于数学.科学.工程领域的常用软件包,可以处理插值.积分.优化.图像处理.常微分方程数值解的求解.信号处理等问题.它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解 ...
- SSH框架aop的切面表达式
一:概述 众所周知,Spring是一个轻量级的.非侵入式的.独立于各种应用服务器的开源框架.它的两大方面被人们所熟知,也应用很广.那就是IOC(控制反转)和AOP(面向方面编程). IOC是开发者不创 ...
- 解决ubuntu命令行中文乱码
解决方法: 1.安装zhcon 登入用户后,输入 1 sudo apt-get install zhcon 2.启动zhcon 输入 1 zhcon --utf8 PS:zhcon支持中文输入法,按 ...
- Python中的 _init__和 _new__的区别
使用python 的面向对象写过程序之后,相信童鞋对 __init__ 方法已经非常的熟悉了.这个方法通常是 在初始化一个实例的时候使用的. 例如: class MysqlConnector(obje ...
- 为什么说Python采用的是基于值的内存管理模式?
Python中的变量并不直接存储值,而是存储了值的内存地址或者引用,假如为不同变量赋值为相同值,这个值在内存中只有一份,多个变量指向同一块内存地址.
- JavaSE--jdbc编程
JDBC全称为:Java Data Base Connectivity (java数据库连接),可以为多种数据库提供统一的访问.JDBC是sun开发的一套数据库访问编程接口,是一种SQL级的API.它 ...
- Linux(17):Shell编程(4)
案例1:批量生成随机字 符 文件名案例 使用for 循环在 /neo 目录下批量创建10个html文件,其中每个文件需要包含10个随机小写字母加固定字符串 neo创建的结果名称示例 如下: [root ...
- vue开大主要难点解决方式
问题:在我们那vue开发项目时,多层嵌套组件最繁琐,组件传参成最难的问题,并且对兄弟组件传参也无能为力,也会导致代码很难维护. 解决:采用vuex状态管理,把所有的事件和状态都储存在store对象中, ...
- 新技能get,文件夹隐藏
attrib命令用来显示或更改文件属性. ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [[drive:] [path] filename] [/S ...
- 第十五篇 JS 移入移出事件 模拟一个二级菜单
JS 移入移出事件 模拟一个二级菜单 老师演示一个特别简单二级菜单,同学们除了学习JS,还要注意它的元素和CSS样式. 这节课介绍的是JS鼠标移入.移出事件:onmouseover是移入事件,on ...