




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
提纲MTAtlas简介MTAtlas整体架构MTAtlas主要模块MTAtlas上线现状MTAtlas的未来计划Q&AMTAtlas简介基于MySQL协议的数据库中间件来自于360开源的Atlasmysql-‐proxy(2011.8
)开源Atlas(360
2013.6)MTAtlas(2015.5
~
now)MTAtlas简介MTAtlas的主要功能读写分离负载均衡结点上下线控制MTAtlas简介Slave1MasterApplicaFonreadwrite:.cnreadonly:readonly:.上线slaveDBA在集群中添加新从库RD重新发布服务下线slaveRD重新发布服务DBA下线slave负载均衡ApplicaFon
实现读写分离ApplicaFon
实现MTAtlas上线前数据库使用场景Slave2MTAtlas简介MTAnode1:slave1:port1node2:slave2:port2node3:master:port3MTAtlas上线后数据库使用场景ApplicaFonSlave1MasterSlave2上线slaveDBA:
add
backend下线slaveDBA:
remove
backend负载均衡MTAtlas实现读写分离MTAtlas实现IDC2MTAtlas整体架构四层部署架构IDC1Atlas
集群Slave1MasterSlave2Atlas
集群DNSMGWMGWMTAtlas整体架构模块MTAtlas的
模块控制(用户、IP过滤)SQL
解析
SQL
重写SQL
执行分库分表管理负载均衡
读写分离MySQL
连接池DB管理日
监志
控管
管理
理连接管理MTAtlas主要模块-‐连接管理连接管理继承了开源Atlas版本按照协议机制自己处理连接建立,数据收发的功能MTAtlas根据架构链路较长的特点,着重添加了对于连接异常的检测与处理MGWMySQLMTAtlas主要模块-‐连接管理–链路模拟图ClientMTAtlassocket1socket2poolsocket4socket3MTAtlas主要模块-‐连接管理解决方案:socket2创建时添加keepaliveOS
keepalive
:
30/5/5OS
tcp_retries2:
5效果:空闲连接,keepalive会在1min
内检测到异常,将链路关闭(socket2,socket3)发送状态,retry
机制也会保证在1min关闭socket2,同时socket3也关闭–MGW到Atlas网络异常socket1socket2socket3socket4MGW端socket2失效Atlas端未感知Atlas到MySQL的链路还保持着,如果在事务内,会
大事务MTAtlas主要模块-‐连接管理解决方案:socket3创建时添加
keepalivesocket3
添加event事件在其异常
错OS
keepalive
:
30/5/5OS
tcp_retries2:
5效果:空闲连接,keepalive
会在
1min内检测到,将链路关闭(socket2,
socket3)发送状态,retry
机制也会保证在1min关闭socket2,同时socket3也关闭MySQL端主动关闭连接时(wait_Fmeout),event机制可以及时发现问题将socket3关闭MGW端socket2失效Atlas端未感知Atlas未感知socket3断开,分配给socket2,引起client查询失败–Atlas到MySQL的链路异常socket1socket2socket3socket4MTAtlas主要模块-‐连接管理解决方案socket4创建时添加keepalivesocket4
添加event事件在其异常
错OS
keepalive
:
30/5/5OS
tcp_retries2:
5–连接池中连接异常socket1socket2socket3socket4效果空闲连接,keepalive
会在1min
内检测到,将链路关闭(socket2,
socket3)MySQL端主动关闭连接时(wait_Fmeout),event机制可以及时发现问题将socket3关闭socket4被关闭后,如果Atlas未感知,分配给socket2会引起client报错MTAtlas主要模块-‐连接管理–
Atlas端的socket2/socket3异常解决方案socket2,socket3,socket4创建时添加keepalive添加event事件在其异常或超
错OS
keepalive
:
30/5/5OS
tcp_retries2:
5效果由于添加了event机制,可以检查出Atlas端socket的状态变化socket2,socket3中有一方关闭会触发另一方关闭,保证链路安全socket1socket2socket3socket4MTAtlas主要模块-‐连接管理解决方案socket2:wait_Fmeout空闲等待时间socket3,
socket4:db-‐connecFon-‐max-‐age,连接的生命周期socket4:db-‐connecFon-‐idle-‐
Fmeout,连接池内空闲等待时间–添加措施避免空闲连接占用socket1socket2socket3socket4MTAtlas主要模块-‐SQL处理模块SQL处理模块clientSQL解析/重写SQL
执行MySQL连接MySQL
连接…2314连接池client_connserver_connMTAtlas主要模块-‐SQL处理模块MTAtlas
添加SESSION变量功能增加客户端连接与MySQL连接的SESSION参数在分配到连接时后,先比较二者的会话级参数值,校正参数后再执行查询MTAtlas主要模块-‐SQL处理模块–为什么要添加SESSION级变量的支持?client_con1MySQL
连接MySQL
连接Q1:set
SQL_SELECT_LIMIT=1Q3:select
*
from
t2
where
id
=10;(10
rows)Q2:select
*
from
t1
where
id
=10;client_con2连接池SQL处理setSQL_SELECT_LIMIT=1;select
*
from
t1
where
id
=
10;select
*
from
t2
where
id
=10;MTAtlas主要模块-‐SQL处理模块client_con1MySQL
连接client_status=>(null)Q3:select
*
from
t2
where
id
=10;(10
rows)client_con2client_status=>(null)Q1:set
SQL_SELECT_LIMIT=1client_status=>(SQL_SELECT_LIMIT=1)Q2:select
*
from
t1
where
id
=10;SQL处理
连接池sever_status=>(null)setSQL_SELECT_LIMIT=1;status=>(SQL_SELECT_LIMIT=1)select
*
from
t1
where
id
=
10;setSQL_SELECT_LIMIT=default;select
*
from
t2
where
id
=10;MTAtlas主要模块-‐SQL处理模块下一步思考由支持SESSION变量进一步扩展到连接的所有上下文信息,例如last_insert_id,affected_rows等MTAtlas主要模块-‐连接池管理连接池管理–将单一的连接池链表,修改成用户为key的hash表,hash值是该用户所建立的连接poolMySQL连接MySQL连接…poolBucket1:user1MySQL连接(user1)MySQL连接(user1)Bucket2:user2MySQL连接(user2)MySQL连接(user2)……MTAtlas主要模块-‐连接池管理–为什么要做这样的修改client_con1(user1)MySQL
连接client_status=>(null)Q3:select
*
from
t2
where
id
=10;(10
rows)client_con2(user2)SQL处理
连接池client_status=>(null)Q1:set
SQL_SELECT_LIMIT=1client_status=>(SQL_SELECT_LIMIT=1)Q2:select
*
from
t1
where
id
=10;sever_status=>(null)setSQL_SELECT_LIMIT=1;status=>(SQL_SELECT_LIMIT=1)select
*
from
t1
where
id
=10;CHANGE_USER-‐>user2:ERRORset
SQL_SELECT_LIMIT=default;
(user1)select
*
from
t2
where
id
=10;
(user1)MTAtlas主要模块-‐连接池管理client_con1(user1)user1:conn_adclient_status=>(null)Q3:select
*
from
t2
where
id
=10;(10
rows)client_con2(user2)连接池SQL处理user2:conn_adsever_status=>(null)setSQL_SELECT_LIMIT=1;status=>(SQL_SELECT_LIMIT=1)select
*
from
t1
where
id
=
10;sever_status=>(null)select
*
from
t2
where
id
=10;–按用户分配后的效果client_status=>(null)Q1:set
SQL_SELECT_LIMIT=1client_status=>(SQL_SELECT_LIMIT=1)Q2:select
*
from
t1
where
id
=10;MTAtlas主要模块控制控制SQL
过滤创建,匹配一类查询示例1:”select
*
from
tbl
where
col2
=
?”,示例2:“update
tbl
set
col1=?where
pkey=?”根据执行频率,执行时间自动添加提供手动添加根据
Thread
running进行负载均衡用户IP限制从库流量配置MTAtlas主要模块控制Atlasnode1:mastrenode2:slave1:tag1node3:slave2r:tag2user1:tag1:host1,host2user2:tag2:host1user3:tag1,tag2:%no
user1用户IP限制与从库流量配置示例user1:****
.cn(host1)
user1:****.cn(host3)host3
isforbiddenSlave1MasterSlave2MTAtlas主要模块-‐日志管理日志管理日志时间精确到微秒:
解决了时间精度的问题admin中添加了对各个模块的Trace:
解决了上下文的问题SQL日志增加了用户登录/退出,thread
id,慢查询,长连接的记录:
增加对整个连接的完整信息SQL日志的自动rotate:
减少额外的处理工作下一步想法刷日志模块仍是同步方式,会有一定的性能影响MTAtlas主要模块管理管理MTAtlas新增了
体系:QPS:read/write的查询个数processlist响应时间直方图方式展示响应时间趋势慢查询数量将出现的慢查询计数同步等待时间等待与唤醒event的时间Atlas到MySQL的连接数活动连接/连接池中连接client到Atlas的连接Atlas的Thread
runningMTAtlas主要模块管理MTAtlas主要模块管理MTAtlas主要模块管理MTAtlas主要模块-‐性能改进性能改进测试工具:sysbench
0.4
(99%rt<10ms)优化策略词法分析器由串行改为并行连接状态切换方式改进QPS70000210000250000200000150000100000500000优化前优化后QPSMTAtlas主要模块-‐其它改进其它的改进RPM包发布引入mysql-‐test测试框架引入sysbench/Ben
arkSQL测试建立线上 测试框架代码覆盖性测试分表若干问题(支持int64,NULL类型)MTAtlas主要模块-‐sharding版本开源版本sharding的架构Atlastbl(1000~1999)table=test.tbl;group=0,1group-‐key=column_namegroups=0:0~1000,1:1000~1999group0Slave1MasterSlave2group1Slave1MasterSlave2tbl(0~1000)MTAtlas主要模块-‐sharding版本开源sharding版本功能说明只支持分库支持hash/range的分库增加了语法解析器lemon不支持跨库的事务MTAtlas主要模块-‐sharding版本Atlastbl_0(0~999)tbl_1(1000-‐1999)MTAtlas
sharding版本架构table
=
test
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 一盔一带交通安全教育讲话稿
- 年产200吨高端医药原料药生产项目建议书(模板)
- 老旧供水系统改进工程可行性研究报告(参考模板)
- 大专幼儿文学儿歌课件
- 重庆市乌江新高考协作体2024届高三上学期期中考政治含解析
- 贵州体育职业学院《单片机原理与设计》2023-2024学年第二学期期末试卷
- 浙江特殊教育职业学院《光接入技术与数字通信课程实训》2023-2024学年第二学期期末试卷
- 苏州城市学院《口腔影像诊断学》2023-2024学年第二学期期末试卷
- 山西青年职业学院《先进制造与特种加工》2023-2024学年第二学期期末试卷
- 石嘴山工贸职业技术学院《水质工程学Ⅰ(水厂)》2023-2024学年第二学期期末试卷
- Unit+2+Lesson+3+Getting+To+The+Top-高中英语北师大版选择性必修第一册+
- 《销售技巧课件:提高销售额的12种方法》
- 果蔬汁简介介绍
- 广东御景木业有限公司年产木质门8万套建设项目环境影响报告书
- 开具无前科证明申请书
- 钻孔灌注桩打桩记录表
- 高龄老人租房免责协议
- 展位搭建施工方案模板图
- 唯识二十论述记讲记(完整版)-智敏上师
- WK-arbitration培训-中山大学法学院课件
- 水资源税纳税申报表附表
评论
0/150
提交评论