mysql cluster

转载 2013年12月03日 17:55:09
mysql-proxy 
MySQL Proxy是一个处于你的client端和MySQL server端之间的简单程序,它可以监测、分析或改变它们的通信。它使用灵活,没有限制,常见的用途包括:负载平衡,故障、查询分析,查询过滤和修改等等。[1] 
MySQL Proxy就是这么一个中间层代理,简单的说,MySQL Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制和过滤,从而实现读写分离和负载平衡。对于应用来说,MySQL Proxy是完全透明的,应用则只需要连接到MySQL Proxy的监听端口即可。当然,这样proxy机器可能成为单点失效,但完全可以使用多个proxy机器做为冗余,在应用服务器的连接池配置中配置到多个proxy的连接参数即可。 
MySQL Proxy更强大的一项功能是实现“读写分离”,基本原理是让主数据库处理事务性查询,让从库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从库。    
附mysql-proxy 的所有语法命令: 
$ mysql-proxy --help-all 
Usage: 
mysql-proxy [OPTION...] - MySQL Proxy 
Help Options: 
-?, --help Show help options 
--help-all Show all help options 
--help-admin Show options for the admin-module 
--help-proxy Show options for the proxy-module 
admin module 
--admin-address=<host:port>listening address:port of internal admin-server (default: :4041) 
proxy-module 
--proxy-address=<host:port>listening address:port of the proxy-server (default: :4040) 
--proxy-read-only-backend-addresses=<host:port>address:port of the remote slave-server (default: not set) 
--proxy-backend-addresses=<host:port>address:port of the remote backend-servers (default: 127.0.0.1:3306) 
--proxy-skip-profiling disables profiling of queries (default: enabled) 
--proxy-fix-bug-25371 fix bug #25371 (mysqld >5.1.12) for older libmysql versions 
--proxy-lua-script=<file>filename of the lua script (default: not set) 
--no-proxy Don't start proxy-server 
Application Options: 
-V, --version Show version 
--daemon Start in daemon-mode 
--pid-file=<file>PID file in case we are started as daemon 



amoeba 
概述 

Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求。与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便(基于XML的配置文件,用SQLJEP语法书写规则,比基于lua脚本的MySQL Proxy简单)。 
Amoeba相当于一个SQL请求的路由器,目的是为负载均衡、读写分离、高可用性提供机制,而不是完全实现它们。用户需要结合使用MySQL的 Replication等机制来实现副本同步等功能。amoeba对底层数据库连接管理和路由实现也采用了可插拨的机制,第三方可以开发更高级的策略类来替代作者的实现。这个程序总体上比较符合KISS的思想。 


优势 

Amoeba主要解决以下问题: 
a). 数据切分后复杂数据源整合 
b). 提供数据切分规则并降低数据切分规则给数据库带来的影响 
c). 降低数据库与客户端连接 
d). 读写分离路由 
f).支持分库,分表,事务 


不足 

a)、目前还不支持事务b)、暂时不支持存储过程(近期会支持) 
c)、不适合从amoeba导数据的场景或者对大数据量查询的query并不合适(比如一次请求返回10w以上甚至更多数据的场合) 
d)、暂时不支持分库分表,amoeba目前只做到分数据库实例,每个被切分的节点需要保持库表结构一致: 
Amoeba:阿米巴原虫 

haproxy 
简介 

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。 
HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。[1] 


安装 

tar zxvf haproxy-1.4.8.tar.gz 
cd haproxy-1.4.8 
uname -a //查看linux内核版本 
make TARGET=linux26 PREFIX=/usr/local/haproxy 
make install PREFIX=/usr/local/haproxy 


配置 

配置HAProxy Session亲缘性的三种方式 
haproxy负载均衡保持客户端和服务器Session亲缘性的三种方式: 
1 用户IP 识别 
haroxy 将用户IP经过hash计算后 指定到固定的真实服务器上(类似于nginx 的IP hash 指令) 
配置指令 balance source 
2 cookie 识别 
haproxy 将WEB服务端发送给客户端的cookie中插入(或添加加前缀)haproxy定义的后端的服务器COOKIE ID。 
配置指令例举 cookie SESSION_COOKIE insert indirect nocache 
用firebug可以观察到用户的请求头的cookie里 有类似" Cookie jsessionid=0bc588656ca05ecf7588c65f9be214f5; SESSION_COOKIE=app1" SESSION_COOKIE=app1就是haproxy添加的内容 
3 session 识别 
haproxy 将后端服务器产生的session和后端服务器标识存在haproxy中的一张表里。客户端请求时先查询这张表。 
配置指令例举 appsession JSESSIONID len 64 timeout 5h request-learn 
配置举例: 
#vi /usr/local/haproxy/haproxy.cfg 
backend COOKIE_srv 
mode http 
cookie SESSION_COOKIE insert indirect nocache 
server REALsrv_70 184.82.239.70:80 cookie 11 check inter 1500 rise 3 fall 3 weight 1 
server REALsrv_120 220.162.237.120:80 cookie 12 check inter 1500 rise 3 fall 3 weight 1 
backend SOURCE_srv 
mode http 
balance source 
server REALsrv_70 184.82.239.70:80 cookie 11 check inter 1500 rise 3 fall 3 weight 1 
server REALsrv_120 220.162.237.120:80 cookie 12 check inter 1500 rise 3 fall 3 weight 1 
backend APPSESSION_srv 
mode http 
appsession JSESSIONID len 64 timeout 5h request-learn 
server REALsrv_70 184.82.239.70:80 cookie 11 check inter 1500 rise 3 fall 3 weight 1 
server REALsrv_120 220.162.237.120:80 cookie 12 check inter 1500 rise 3 fall 3 weight 1[2] 


启动 

#启动haproxy 
/usr/local/haproxy/haproxy -f /usr/local/haproxy/haproxy.cfg 
#查看是否启动 
[zhangy@BlackGhost haproxy]$ ps -e|grep haproxy 
4859 ? 00:00:00 haproxy 
4860 ? 00:00:00 haproxy 


测试 

[root@BlackGhost haproxy]# /usr/local/bin/webbench -c 100 -t 30 http://localhost:1080/phpinfo.php 


说明 

HAProxy监听的端口是1080,代理192.168.18.2:10000,127.0.0.1:10000 
统计监听的是8888端口 http://localhost:8888/haproxy-stats

实战体验几种MySQLCluster方案

出于对作者的尊重和感谢,原文地址为http://www.2cto.com/database/201504/387166.html 1.背景 MySQL的cluster方案有很多官方...
  • sosfnima
  • sosfnima
  • 2016年07月29日 10:27
  • 3604

mysql-cluster数据自动修复(节点崩溃期间写入其他节点数据)

Mysql-cluster是具有故障节点恢复正常后的数据自动恢复功能的。 实验环境中包含两个data节点:分别位于46,47两台服务器上 ndb_mgm> show Connected to M...
  • sun_ashe
  • sun_ashe
  • 2015年08月25日 17:28
  • 954

MySQL之——MySQL Cluster集群搭建详解(基于RPM安装包)

1、下载mysql-cluster 7.3.7 http://dev.mysql.com/downloads/cluster/ 2、环境清理及安装 1)清理CentOS6.5自带的mysql服务,其...
  • l1028386804
  • l1028386804
  • 2016年11月08日 11:00
  • 1538

MySQL数据库管理(一)MySQL Cluster集群简介

MySQL cluster是Mysql适用于分布式计算机环境的膏使用、高冗余版本。 Cluster的意思是“集群”,指一组计算机(在某些情况下也只计算机的进程),他们作为一个整体向用户...
  • lantingxv_jing
  • lantingxv_jing
  • 2015年03月10日 21:36
  • 1529

mysql ndbcluster设置root用户和远程登录

mysql ndbcluster设置root用户和远程登录 1.root用户不能登录 [root@ndbcluster2 ~]# mysql -uroot -p Enter password: ...
  • weiwangsisoftstone
  • weiwangsisoftstone
  • 2015年12月10日 18:05
  • 1339

MySQL Cluster 4个数据节点压力测试--mysqlslap工具压400W写

cluster叫电信运营商版本 所以基本上在很大的用户并发量的情况下才会用到 对连接数的线性增长要求高的场景 千兆就不用想了 没万兆就不用玩了 【】一:测试 10.80.40.107 3307...
  • mchdba
  • mchdba
  • 2013年08月29日 10:45
  • 3989

MYSQL CLUSTER 7.4 + 5.6 创建磁盘表和内存表

MYSQL CLUSTER 7.4 + 5.6 创建磁盘表和内存表   在建好的MYSQL CLUSTER上创建内存表和磁盘表方法: 1.  创建内存表: CREATE TABLE `...
  • shn_lee
  • shn_lee
  • 2015年05月14日 12:24
  • 1087

MySQL Cluster集群的初级部署教程

这篇文章主要介绍了MySQL Cluster集群的初级部署教程, MySql Cluster可以利用充分利用节点服务器的多进程做到高可用,需要的朋友可以参考下 Mysql Clu...
  • alibert
  • alibert
  • 2016年03月18日 09:29
  • 1242

MySQL Cluster 7.3.7+CentOS7集群配置入门 MySQL双管理节点配置入门

1 环境说明:CentOS7(64位) + MySQL Cluster 7 3 7,3台机器(2+2+3),节点分布情况:MGM1:192 168 16 130 MGM2: 192 168 16 13...
  • u012974916
  • u012974916
  • 2016年11月24日 10:49
  • 895

MySQL之——MySQL Cluster集群搭建详解(基于RPM安装包 双管理中心)

下文中没有特别指出的地方,都是两台服务器都需要执行的命令,并且由于是双管理中心配置,其实两台机器出了一些标识id和ip的配置不同外,其他参数配置都是基本一样的 1、下载mysql-cluster...
  • l1028386804
  • l1028386804
  • 2016年11月08日 11:25
  • 1530
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql cluster
举报原因:
原因补充:

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