MySQL集群和复制测试环境文档

原创 2018年04月16日 15:44:56

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)

 

 

 

 

 

 

 

(本文档仅供参考  鲍杰锋)

 

 

 

mysql集群文档

  • 2017年08月11日 17:20
  • 275KB
  • 下载

MySQL集群和主从复制分别适合在什么场景下使用

MySQL集群和主从复制分别适合在什么场景下使用 345341390 | 浏览 779 次 推荐于2016-03-15 19:13:22 最佳答案 集群...
  • kbx8916
  • kbx8916
  • 2017-02-04 22:39:48
  • 1189

mysql集群+复制

详解MySQL集群下的复制(replicate)原理 1. 集群下的复制 1.1. 简述 从MySQL 5.1 开始,就支持集群+复制了,这对于想要构建一个高可用方案的用户来说,无疑是个...
  • wenwenxiong
  • wenwenxiong
  • 2015-07-08 20:44:56
  • 314

搭建测试环境

搭建测试环境(准备测试资源的过程,就是测试环境的搭建。) 像日常测试中,用例的设计、error管理工具的安装、测试模拟器环境的配置、测试人员的调动等等,都属于测试环境搭建范畴) 开发环境: 开发人员是...
  • qq_27226483
  • qq_27226483
  • 2017-02-15 15:32:46
  • 217

MySQL主主复制+LVS+Keepalived实现MySQL高可用性

MySQL复制能够保证数据的冗余的同时可以做读写分离来分担系统压力,如果是主主复制还可以很好的避免主节点的单点故障。但是MySQL主主复制存在一些问题无法满足我们的实际需要:未提供统一访问入口来实现负...
  • u010391029
  • u010391029
  • 2016-08-26 16:09:40
  • 1037

mysql的异步复制

mysql的复制 mysql从3.23版开始提供复制的功能,所谓的复制是将主数据的DDL和DML操作通过二进制日志传到复制服务器(也叫从库)上,然后在从库上对这些日志重新执行(也叫重做),从而使得从库...
  • wwwzf123
  • wwwzf123
  • 2016-07-12 17:03:55
  • 820

MySql集群操作步骤及原理

一、集成步骤 Mysql群集(Cluster)简介       MySQL群集需要有一组计算机,每台计算机的角色可能是不一样的。MySQL群集中有三种节点:管理节点、数据节点和SQL节点。群集...
  • cpaqyx
  • cpaqyx
  • 2015-03-08 11:29:07
  • 4598

如何搭建基于Kubernates的Mysql多主机群

基于Kubernates的Mysql多主集群部分的方案以及具体的部署步骤
  • limx59
  • limx59
  • 2016-10-25 15:16:15
  • 1302

MySQL集群配置管理

  • 2011年03月24日 08:48
  • 762KB
  • 下载
收藏助手
不良信息举报
您举报文章:MySQL集群和复制测试环境文档
举报原因:
原因补充:

(最多只允许输入30个字)