MySQL集群和复制测试环境文档
概要
经过一段时间的搭建配置测试,Mysql数据库的集群和复制环境搭建完成,由于虚拟机紧张,各测试环境都是4台机器混拼起来使用,正式测试时性能上会有所影响。目前4台机器搭建了3个环境,一个是MySQL Cluster的集群环境,业务系统的改造只涉及到符合MySQL语法部分,另外两个都是Repilication复制环境,一个使用MySQL_proxy代理,直接实现了读写分离和负载均衡,不用修改代码,master和slave用一样的账号,缺点是字符集,lua脚本语言编程,起步较高。一个使用Amoeba Mysql代理,都可以使实现读写分离,管理配置上Amoeba Mysql较简单,稳定性较好,不用修改代码,是很灵活的数据解决方案,缺点是需要自己分配账户和后台数据的权限管理独立,权限处理不够灵活。具体的测试需要各课题组结合业务深入进行。
各测试环境简要比较
一、Mysql cluster7.3.6集群环境
本次的mysql cluster使用的是ndb引擎,mysqlcluster采用7.36的社区版本,节点数限制不大于60台,同配置的虚拟机,使用相同工具和sql语句,下面测试数据仅供参考:
测试环境 | 测试工具 | 引擎ndb | 引擎innodb, |
Sql节点的正常并发数 | mysqlslap | 300-400个左右 |
|
100万连续写入,调用存储过程,100个并发会话,每个1万 | mysqlslap | 9.099秒 |
|
1000万连续写入,调用存储过程,100个并发会话,每个10万 | mysqlslap | 110.401秒 |
|
在100万数据表基础上,连续1万个读写事务,并发50个会话 | sysbench | 959.71 事务/秒 | 973.41 事务/秒 |
100万数据上运行一个查询、一个更新语句,50个会话,100万次请求 | Super smack | 3010.21请求/秒 |
|
结论:
(1)mysql集群可用性达99.999%,机器cpu需要大缓存,内存要求配置较高,网络要求较高。
(2)Mysql 集群有内存数据库功能,建立表时,允许设置为内存数据,主键设置非常重要,大量的查询都是通过主键访问,速度快。
(3)Mysql集群参数很多,调整参数门槛高,本环境只配置了基本内存和连接数。
(4)Mysql集群在ndb引擎性能没有innodb的好,比标准mysql性能要低。
(5)Mysql集群环境的建表引擎需要选择ndbcluster,各节点情况正常,有节点断开后不影响正常的使用,断开节点恢复正常后,数据自动同步。新版本各方面性能有所提高。
(6)Mysql集群后台的多事务请求,运行多日,情况良好。
二、Replication复制环境Master/Slave MySQL-proxy
Replication 可以将master的数据复制分布到多个slave上,利用slave分担master的读压力。Mysql proxy是一个中间代理层,开源,简单的说就是一个连接池,负责将前台应用的请求连接转发给后台数据库,通过lua脚本实现复杂的连接控制和过滤,从而实现读写分离和负载平衡。
配置管理上要求对lua语法级脚本非常熟悉,起步比较高。
主要存在的问题:
(1)主从同步的延迟,采用的异步的同步机制,所以存在延时性,。
(2)负载均衡的算法过于简单,主要就动态和静态两种。没有很好的考虑请求的服务需求资源,不能真是反映出节点的真实负载能力。
(3)Mysql proxy采用lua语言扩展语言,但是lua得到的动态信息只有连接数,不能获取其他的动态信息。
三、Replication复制环境Master/slave Amoeba Mysql
(变形虫)个人开发的java项目,实际生产使用较多
Amoeba for mysql主要在应用层访问mysql是充当query路由功能,对客户端透明。对客户端来说相当于一个虚拟的mysql,对外提供mysql协议。
(1)能够实现读写分离,性能方面也不错,配置简单方便。
(2)但是不支持事务,暂时不支持存储过程(近期可能会支持)。
(3)不适合从amoeba导数据的场景或者对大数据量查询的query并不合适(比如一次请求返回10w以上甚至更多的数据场合)。
(4)暂时不支持分库分表,目前只能做到分数据库实例,每个被切分的节点需要保持库结构一致。
(5)具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query到达目标库,可并发请求多台数据库合并结果。
主要解决:
降低数据切分带来复杂多数据库结构。
提供切分规则并降低数据切分规则给应用带来的影响。
降低db与客户端的连接数。
读写分离。
Mysql集群和复制测试环境详细配置情况
网络组申请的linux环境,Red Hat linux 6.3 64位操作系统,规划4台虚拟主机 配置: CPU 4核,内存6G,存储100G。
机器名和ip地址
linux147 10.40.20.147 linux148 10.40.20.148
linux149 10.40.20.149 linux150 10.40.20.150
Linux 系统 root密码:rootroot
一、Mysql cluster7.3.6集群环境
管理服务器:10.40.20.150
存储及sql节点1:10.40.20.149
存储及sql节点2:10.40.20.150
二、Replication复制环境 Master/Slave MySQL-proxy
代理地址:10.40.20.149
Master:10.40.20.147
Slave:10.40.20.148
(mysql账号:root 密码:root) 不推荐,稳定性欠缺
三、Replication复制环境Master/slave Amoeba Mysql
Amoeba服务器:10.40.20.150
Master:10.40.20.147
Slave:10.40.20.148
(mysql账号:root 密码:root)
(本文档仅供参考 鲍杰锋)