APP开发后台制作经验之Mysql分库
当数据规模不断增大,前面所描述的分表和读写分离可能都满足不了系统的性能需求,这时需要考虑分库,即把不同的数据表部署在不同的数据库集群上。在大型的App后台中,分表都有可能满足不了需求,某些数据表仍然很大,需要进行分库操作,即把张表的数据分别存储在不同的数据库。
目前比较成熟的支持数据库分库的关系型数据库分布式处理软件有Cobar。Cobar自诞生之日起,就受到广大程序员的追捧,但是自2013年后几乎没有后续更新。在此情况下,MyCat这个关系型数据库分布式处理软件应运而生,其以阿里开源的Cobar产品为基础研发,MvCat的稳定性、可靠性、优秀的架构和性能,以及众多成熟的使用案例使得MyCat开始就拥有个很好的起点,站在巨人的肩膀上,能看到更远,深圳APP开发公司下面以MyCat为例,讲解一下其基本的原理。
MvCat以代理服务器的形式位于应用服务器与后台数据库之间,由于其是无状态,因此很容易部署MyCat集群实现负载均衡。对外开放的接口是MySQL通信脚议,将应用服务器传过来的SQL语句按照路由的规则拆解转发到不同的后台数据库,并把结果汇总并返回。MyCat的部署模型如图6-7所示
APP开发后台MySQL数据库分库示意图6-7MyCat的部署模型
MvCat可以把个逻辑上的数据库和数据表对应到物理上真实的数据库和数据表,用户只需要按照逻辑上的结构操作相关的数据就行,遮蔽了物理上的差异性。下面以图6-8所示的MyCat映射关系图来说明。
APP开发数据库分库mycat映射关系图6-8
MyCat对外提供的数据库是db.其中有两张表tablel和table2。
·tablel表的数据映射到物理数据库dbl的tablel。
·table2表的数据部分映射到物理数据库db2的table2,另一部分映射到物理数据库db3的table2。
APP开发公司下面以个实例来说明MvCat的工作流程,如图6-9所示。
APP开发后台制作分库操作示意图6-9mycat工作流程图
Datanode为MvCat的逻辑数据节点,映射到后端的某个物理数据库的database。为了保证高可用,每个Datauode可配置多个引用地址(DataSource),当DataSource被检测到不可用,MvCat会切换到可用的DataSource,这里的DataSource可认为是MySQL主从服务器的地址。
下面以个例子讲解MyCat的工作流程:应用服务器向MvCat服务器发送SQL语句“select'fromuserwhereidiu(30,31,32)”。
MvCat服务器的前端通信模块与应用服务器通信,前端通信模块收到这个SQL语句后交给SQL解析模块,SQL解析模块解析完毕后根据查询条件(idin(30,31,32))交给SQL路由模块,从路由规则得知,id取摸余数为。的数据在dbl,id取摸余数为l的数据在db2,id取摸余数为2的数据在db3,于是把SQL拆解为“select*fromuserwhereidin(30)”,“select*fromuserwhereidin(31)”,“select'fromuserwhereidiu(32)”转交给SQL执行模块扰行,分别对应数据库dbl、db2、db3。SQL执行模块通过后端通信模块,分别在dbl、db2、db3上执行相应的SQL语句。最后把数据库返回的结果通过数据集合并模块合并,返回给应用服务器。
APP开发后台制作之SQL慢查询分析
SQL慢查询是指执行超过定时间的SQL查询语句,把这些SQL查询语句记录到慢查询日志,方便开发人员找出有性能问题的SQL,针对这些SQL查询语句进行分折调优。配置选项中慢查询相关的3个参数如下:
·long_query_time:定义慢查询的时间,SQL查询语句执行时司大干该参数没置时间的SQL都会被记录下来,支持小于1秒的设置
·slow_query_log:设置是否打开慢查询日志的开关。
·slow_query_log_file:设置慢查询日志文件的路径。
配置慢查询有两种方法。
方法,通过命令行设置,立即生效,但是在MySQL服务重启后失效
setgl.:,ballong_query_time=l;
setgl.:,balsl_w_query_l._,g=on;
setgl-:,balsl_w_query_l._,g_file='/data/sl-_,w.10g';
方法二,在/etc/my.conf中增加下面的配置选项,重启MySQL服务后生效。
[MySQLd]
long_query_time=l
slow_query_log=OFT
slow_query_log_file=/data/slow.log
开发者也可使用MySQL自带的工具mysqldumpslow分析慢查询日志,例如.查看最慢的前3个SQL查询的命令格式如下。
mysqidumpsl_w-t3/data/sl_w.locj
开启慢查询日志后可在系统状态中可看到共有多少个慢查询,如图6-10所示。
APP开发慢查统状态中记录的慢查询数示意图6-10
开发人员要分析慢查语句,需要使用到MySQL的explain命令explain显示了MySQL如果使用索引处理select语句和连接表可以帮助开发者选择更好的索引和更优化的SQL语句。下面是使用explain分析SQL的例子,如图6-11所示。
APP开发慢查系统操作示意图6-11分析SOL的例子
关于explain输出结果的含义,可以参考MySQL的官方文档:http://dev.mysql.com/doc/refmau/5.5/en/explain-output.html
#explain_select_type.
APP开发公司本文关于APP开发数据库分库以及慢查系统布置的流程以及实操步骤就介绍到这里。喜欢本站的朋友敬请持续关注本站。博纳网络编辑整理。