




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 MYCAT Mycat在线视频培训 代码demo: http:/ 嵌套循环连接(NESTED LOOPS JOIN) 哈希连接(HASH JOIN) 排序合并连接(SORT MERGE JOIN) 常见的join算法: BKA(Batched Key Access) MYCAT高可用 读写分离和自动切换机制 -基于心跳的自动切换 -Mycat 支持基于MySQL主从复制状态的高级读写分离与主从切换控制机制。 -强制走写节点解决读写分离时延问题 Mycat读写分片配置 (注意:读写节点,主从节点直接数据同步需要数据库自己同步,mycat不负责) MyCAT的读写分离机制如下: a.事务内的SQ
2、L,默认走写节点,以注释/*balance*/开头,则会根据balance=“1” 或“2”或“3” 去获取 . b.自动提交的select语句会走读节点,并在所有可用读节点中间随机负载均衡,默认根据balance=“1” 或“2”或“3” 去获取,以注释/*balance*/ 开头则会走写,解决部分已经开启读写分离,但是需要强一致性数据实时获取数据的场景走写 c. 当某个主节点宕机,则其全部读节点都不再被使用,因为此时,同步失败,数据已经不是最新的,MYCAT会采用另外一个主节点所对应的全部 读节点来实现select负载均衡。 d.当所有主节点都失败,则为了系统高可用性,自动提交的所有sel
3、ect语句仍将提交到全部存活的读节点上执行,此时系统的很多页面还是能出来 数据,只是用户修改或提交会失败。 MyCAT的读写分离的配置如下: select user() dataHost的balance属性设置为: 0,不开启读写分离机制 1,全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1-S1,M2-S2,并且M1与M2互为 主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。 2,所有的readHost与writeHost都参与select语句的负载均衡,也就是说,当系统的写操作压力不大的情况下,
4、所有主机都可以承担负载 均衡。 3. 全部的读节点参数读,写节点不参与,如果配置了多个writerhost,则多个writerhost下面的readhost参数读负载。 Mycat2.0 mysql Mycat2.0 -集群处理 -自动扩容 -智能优化 -大数据处理 mysqlmysql Mycat Mycat balance Zookeeper Regist center Mycat Admin /web 应 用 应 用 MYCAT对多租户应用的支持 MYCAT对事务的支持为弱XA,如果业务需要严格的强一致性,需要采用事务补偿方案,或者尽 量避免跨库操作。 Mycat事务支持 mycat的事
5、务处理是,依次轮询需要处理的分片执行对应的Sql,当应用commit时在依次轮询commit。 如果中间一个分片执行sql出错全部回滚。 但是如果应用发起commit命令,Mycat发起commit到db成功,但是实际db未成功时,mycat 无法保证各个节点回滚,这就是弱xa。 分布式事务处理 -异步化处理 -最终一致性 Mycat主从及多主配置 dataHost的writeType属性设置为: writeType=0 默认配置。 writeType=1 代表配置多主,mycat会往所有写节点,随机写数据,但是 每次只会写入一个节点,此模式下无读节点,节点之间开启数据库级别同步。 此配置为m
6、ysql高级级别使用,因为多主会带来数据库同步问题。 select user() 基于主从同步的读写分离与主从切换 1.4 开始支持MySQL 主从复制状态绑定的读写分离与主从切换机制,读更加安全可靠,配置如下: MyCAT 心跳检查语句配置为show slave status ,dataHost 上定义两个新属性: switchType=2 与slaveThreshold=100,此时意味着 开启MySQL 主从复制状态绑定的读写分离与切换机制,Mycat 心跳机制通过检测show slave status 中的Seconds_Behind_Master, Slave_IO_Running,
7、Slave_SQL_Running 三个字段来确定当前主从同步的状态以及Seconds_Behind_Master 主从复制时延, 当 Seconds_Behind_MasterslaveThreshold 时,读写分离筛选器会过滤掉此Slave 机器,防止读到很久之前的旧数据,而当主节点宕机后, 切换逻辑会检查Slave 上的Seconds_Behind_Master 是否为0,为0 时则表示主从同步,可以安全切换,否则不会切换。 switchType 目前有三种选择: -1 表示不自动切换 1 默认值,自动切换 2 基于MySQL 主从同步的状态决定是否切换 下面为参考配置: show s
8、lave status Mycat高级特性(注解) MyCat对自身不支持的Sql语句提供了一种解决方案在要执行的SQL语句前添加额外的一段代码,这样Sql就能正确执行,这段代码称之为 “注解”。注解的形式是 /*!mycat: sql=Sql语句*/ 使用时将=号后的“Sql语句”替换为需要的Sql语句即可,后面会提到具体的用法。 例子 假设需要执行的语句是 Insert into persons(id,name,sharding_id) values(1,郭靖,10010),(2,黄蓉,10010); 鉴于路由分析的原因,MyCat暂不支持这种语句的执行,如果一定需要执行这种语句,可在这段
9、sql代码前添加 /*!mycat: sql=select id from persons where sharding_id=10010 */ 语句变为如下形式即可执行 /*!mycat: sql=select id from persons where sharding_id=10010 */insert into persons(id,name,sharding_id) values(1,郭靖,10010),(2,黄蓉,10010); 原理 MyCat执行SQL语句的流程是先进行SQL解析处理,解析出分片信息(路由信息)后,然后到该分片对应的物理库上去执行;若传入的SQL语句MyCat无
10、法解析, 则MyCat不会去执行;而注解则是告诉MyCat按照注解内的SQL(称之为注解SQL)去进行解析处理,解析出分片信息后,将注解后真正要执行的SQL语句(称之为 原始SQL)发送到该分片对应的物理库上去执行。 从上面的原理可以看到,注解只是告诉MyCat到何处去执行原始SQL;因而使用注解前,要清楚的知道该原始SQL去哪个分片执行,然后在注解SQL中也指向该 分片,这样才能使用!例子中的sharding_id=10010即是指明分片信息的。 需要说明的是,若注解SQL没有能明确到具体某个分片,譬如例子中的注解SQL没有添加sharding_id=10010这个条件,则MyCat会将原始
11、SQL发送到persons表 所在的所有分片上去执行去,这样造成的后果若是插入语句,则在多个分片上都存在重复记录,同样查询、更新、删除操作也会得到错误的结果! 解决问题 MySql不支持的语法结构,如insert values(),() insert select等 同一个实例内的跨库关联查询,如用户库和平台库内的表关联 存储过程调用 全局序列号 全局序列号是MyCAT提供的一个新功能,为了实现分库分表情况下,表的主键是全局唯一,而默认的MySQL的自 增长主键无法满足这个要求。全局序列号的语法符合标准SQL规范,其格式为: next value for MYCATSEQ_GLOBAL 其中M
12、YCATSEQ_GLOBAL是序列号的名字,MyCAT自动创建新的序列号,免去了开发的复杂度,另外,MyCAT 也提供了一个全局的序列号,名称为:MYCATSEQ_GLOBAL。 注意,注意,MYCATSEQ_必须大写才能正确识别。必须大写才能正确识别。 注意:注意: 序列:序列:MYCATSEQ_MYCAT 配置:配置:MYCAT=dn1 表为:表为:MYCAT 也就是也就是”表名表名“=序列号后半部分的名字(序列号后半部分的名字(MYCATSEQ_xxx 中的中的xxx) 目前全局序列号提供了本地文件跟数据库模式及本地基于时间戳算法的三种方式: Insert table t_node(na
13、me) values(testname); Demo:http:/ Mycat 监控 MyCAT 自身有类似其他数据库的管理监控方式,可以通过Mysql 命令行,登录管理端口(9066)执行 相应的SQL 进行管理,也可以通过jdbc 的方式进行远程连接管理,本小节主要讲解命令行的管理操作。 登录:目前mycat 有两个端口,8066 数据端口,9066 管理端口,命令行的登陆是通过9066 管理端口 来操作,登录方式类似于mysql 的服务端登陆。 mysql -h -utest -ptest -P9066 -Dmycat -h 后面是主机,即当前mycat 按照的主机地址
14、,本地可用 远程需要远程ip。 -u Mycat server.xml 中配置的逻辑库用户。 -p Mycat server.xml 中配置的逻辑库密码。 -P 后面是端口默认9066,注意P 是大写。 -D Mycat server.xml 中配置的逻辑库。 数据端口与管理端口的配置端口修改: 数据端口默认8066,管理端口默认9066 ,如果需要修改需要配置server.xml 8067 9066 通过show help; 可以查看所有的命令可以查看所有的命令. MYCAT对多数据库的支持 More. 数据导入MYCAT: 推荐通过LOAD DATA 数据扩容: 目前MY
15、CAT不支持自动扩容,分片规则修改,或者节点的增加减少需要重新将数据REHASH,除了范围分片 之外。 Mycat数据迁移 不推荐: -CREATE等DDL语句在MYCAT端执行特别是业务中。 -跨分片的多表,3个以上JOIN,子查询,复杂SQL。 -单分片 LOCK TABLE等命令。 -修改分片字段。 -修改分片字段值。 -执行存储过程。 -执行视图 禁止或者不支持: -LOCK TABLE 等命令。 -开启读写分离 SELECT操作加事务 -其他MYSQL特有的命令。 -多表JOIN,子查询,复杂SQL。 -多主键,联合主键 -多切分规则 -其他明显会被分片到多个分片执行的命令。 Mycat不推荐或者禁止的sql MYCAT性能测试报告 16核心的服务器上,测试达到12万每秒的插入性能,1个Mycat,3个MySQL服务器 8核心8G的高端笔记本上,单机测试插入性能超过1万每秒 当带宽和IO不会成为瓶颈的情况下,Mycat一拖N个MSQL服务器的性能,可以达到 N80%MySQL单机性能 MYCAT生产案例 超过100个案例 MYCAT WEB 目前能力 监控JVM 监控Mycat 监控MySQL 监控主机 未来能力 MySQL智能优化 自动运维 使用MYCAT 官方网站 MYCAT.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年微电网稳定性优化与分布式能源管理创新趋势报告
- 2025年可穿戴医疗设备在儿童健康管理中的应用与创新研究报告
- 2025年城市轨道交通建设规划与智慧能源运营管理研究报告
- 绿色供应链管理在制造业绿色制造与绿色营销中的应用报告
- 环保产业园区循环经济模式绿色产业政策创新路径分析2025年研究报告
- 江苏村级工程管理制度
- 二级建造师培训管理制度
- 智能矸选系统管理制度
- 服装企业存货管理制度
- 2025年江西省中考历史真题(原卷版)
- 四川河道防洪堤坝工程地质勘察报告
- 2020年专业技术人员继续教育公需科目考试及答案
- 盘扣式钢管脚手架验收表
- 茶会活动策划与管理智慧树知到答案章节测试2023年浙江旅游职业学院
- 闽监管协【2015】13号文监理收费标准
- 清华大学-2021年中国一线城市出行平台调研报告-2021.05正式版
- 研发积分制绩效考核管理办法实用文档
- YY/T 0321.3-2022一次性使用麻醉用过滤器
- GB/T 2570-1995树脂浇铸体弯曲性能试验方法
- GB/T 15171-1994软包装件密封性能试验方法
- GB/T 14518-1993胶粘剂的pH值测定
评论
0/150
提交评论