- 浏览: 1899474 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
July01:
最近了解到一款StratoIO打印控件,功能如下:1、Html ...
jquery打印指定的div -
GentlemanQc:
...
quartz系列(二)spring3.2.5与quartz2.1.7集群版集成简要说明 -
静夜独窗:
你好,能说一下server.xml增加的配置是怎么影响性能的吗 ...
tomcat7.0性能优化-挑战极限精简版 -
beyondfengyu:
beyondfengyu 写道如果每个客户进程的时间不同步,时 ...
java并发(二十二)分布式锁 -
beyondfengyu:
如果每个客户进程的时间不同步,时间超前的进程是不是更容易得到锁 ...
java并发(二十二)分布式锁
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
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
发表评论
-
MySQL主从复制讨论纪要
2016-02-09 21:40 1677读了一篇技术文章,和架构部的全体兄弟们进行了讨论。 以下为讨论 ... -
MYSQL使用心得(十二)----主从复制指定二进制日志位置
2013-12-11 19:25 4531相关命令 show slave status \G的具体含义 ... -
MYSQL使用心得(十一)----按日期进行表分区
2013-12-01 23:03 5778创建 create table user (id int(11 ... -
MYSQL使用心得(十)----常用命令
2013-12-01 09:04 2000mysql查看状态 ./mysqladmin ... -
MYSQL使用心得(九)----联合索引
2013-11-30 00:18 1577注意:Index(Name,Age)表示在Name,Age两列 ... -
MYSQL使用心得(八)----在线主从复制集群的配置与恢复及主主配置
2013-11-30 00:08 2228在线执行主从配置 步骤 1.锁表 FLUSH TABLES W ... -
MYSQL使用心得(七)----读写分离集群方案之haproxy+keepalived+abstractRoutingDataSource
2013-11-29 23:33 7296在公司做mysql集群方案的时候,经过多次的分析与讨论,以及性 ... -
MYSQL使用心得(六)----cluster
2013-11-29 09:15 2222官方网站 http://dev.mysql.com/downl ... -
mysql读写分离高级驱动
2013-11-25 09:58 1160负载均衡 http://dev.mysql.com/doc/r ... -
MySQL乱码处理
2013-11-25 09:50 7421。过滤器 2。头文件 3。MySQL数据库的 my.ini文 ... -
mysql日期函数
2013-11-25 09:48 756对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描 ... -
MYSQL使用心得(二)----主从复制
2013-11-25 09:30 1646基本配置 主数据库 配置文件,修改server_id=1 建立 ... -
MYSQL使用心得(一)----centOS or ubuntu下安装mysql5.6
2013-11-14 00:02 5828官方网站 http://www.mysql.com/ 下载 d ... -
cmake的安装
2013-11-13 22:51 1343安装mysql5.5和5.6的时候,需要使用cmake编译,所 ... -
MYSQL使用心得(三)----性能与管理优化
2013-03-01 22:36 6998基于 /application/search/mysql/my ... -
MYSQL使用心得(五)----InnoDB与MyISAM
2012-11-08 21:31 1612本文主要整理了Mysql 两 ... -
MySQL基础----彻底解决phpMyAdmin安装问题
2011-02-11 12:27 3069一 环境 httpd-2.2.17-win32-x86-no_ ... -
centOS or ubuntu下安装mysql5.5
2010-12-31 16:10 3081依赖库 ubuntu apt-get install gcc ... -
MYSQL使用心得(四)----临时表与内存表
2010-12-19 14:43 3470mysql5.5性能优化-内存表 内存表分为2种,但共同点是, ... -
Mysql 5.5 无法远程登陆:Can't get hostname for your address
2010-12-17 13:06 6057昨天oracle刚发布了MySQL5.5.8和5.1.54,欣 ...
相关推荐
本教程将深入探讨如何将Spring、Ibatis框架与MySQL集群集成,以实现高效、可靠的数据库操作。 首先,让我们了解Spring和Ibatis。Spring是一个全面的Java应用开发框架,它提供了依赖注入、面向切面编程、事务管理等...
本文将详细介绍MYSQL集群的搭建过程。 Knowledge Point 1: MYSQL集群架构 MYSQL集群架构主要包括管理节点、数据节点和SQL节点。管理节点负责管理集群的配置和状态,数据节点负责存储数据,SQL节点负责处理SQL请求...
本文将详细介绍如何在 CentOS 7 环境下搭建 MySQL 集群,包括整个搭建步骤及部分常见问题的解决方案。 #### 二、环境准备 - **操作系统**: CentOS 7.0 - **硬件配置**: 至少三台服务器 - MGM (Management Server):...
MySQL 集群环境搭建 MySQL 集群环境搭建是指将多台服务器组合成一个高性能、可靠的数据库系统,以实现高可用性和高性能。该系统可以分担客户的访问压力,自动进行数据分区和负载均衡,实现线性数据库扩展。 1. ...
在本文中,我们将详细介绍MySQL集群的概念、架构、环境配置、安装和配置MySQL集群版本、配置Management Server等。 MySQL集群简介 MySQL集群是一个无共享的、分布式节点架构的存储方案,其目的是提供容错性和高...
MySQL集群配置教程旨在帮助初学者理解并实现MySQL集群的搭建,让数据库的高可用性和负载均衡成为可能。MySQL集群(MySQL Cluster)是一种分布式事务处理系统,它提供了数据复制和分区,确保了数据的一致性和可用性。...
MySQL集群是一种分布式数据库解决方案,旨在提高数据的可用性、可扩展性和容错性。在本方案中,我们将探讨MySQL集群的构建、工作原理以及其在实际应用中的优势和挑战。 一、MySQL集群概述 MySQL集群(MySQL ...
我们将介绍如何在 3 台服务器上安装和配置 MySQL 集群,包括 Server1、Server2 和 Server3,其中 Server1 和 Server2 作为实际的 MySQL 数据库集群的服务器,而 Server3 作为管理节点服务器。 一、Linux MySQL 集群...
6. DolphinSCI的介绍:DolphinSCI是Oracle公司提供的MySQL集群产品,它支持高可用性、高性能、高扩展性的数据库解决方案。 7. Continuent的介绍:Continuent是一家提供数据库高可用性解决方案的公司,它的产品...
Windows环境下MySQL集群的搭建,使用了三个节点,第一个节点作为管理节点,第二个节点作为数据节点A和SQL节点A,第三个节点作为数据节点B和SQL节点B。 此外,还演示了如何使用图形化客户端管理MySQL集群,新建数据库...
MySQL集群是一种高性能、高可用性的数据库集群技术,它通过将多个MySQL数据库实例组成一个集群来提供数据的冗余和故障转移能力。在评估MySQL集群的实施之前,了解其架构、组件以及它们之间的交互是非常必要的。 ...
MySQL集群是一种用于提高数据库服务可用性和性能的技术,它通过分散数据和处理负载来实现这一目标。在本篇文章中,我们将探讨8种不同的MySQL集群方案,分析它们的特点、优缺点以及适用场景。 1. **MySQL主从复制...
在进行MYSQL集群测试时,涉及的知识点相当广泛,主要包括以下几个方面: 1. 测试工具介绍:文档提到了mysqlslap、sysbench、supersmack等工具,这些都是用于测试MYSQL性能的工具。 - mysqlslap是一个用于模拟多...
MySQL集群解决方案旨在提高数据库系统的高可用性和负载均衡,以应对日益增长的网络服务需求。MySQL作为世界上最流行的开源数据库,因其开源、免费、跨平台、多语言支持和高效等特点而备受青睐。然而,MySQL在某些...
在本篇中,我们将深入探讨如何在CentOS7环境下部署MySQL集群,具体为1个管理节点加2个数据节点和2个SQL节点的配置。首先,我们从环境清理和准备工作开始,然后逐步进行软件安装、配置以及启动服务。 1. **环境清理...
在本文中,我们将详细介绍 MYSQL 集群的配置和实现过程。 在开始之前,我们需要了解 MYSQL 集群的基本概念。MYSQL 集群是指多个 MYSQL 服务器组成的集群,每个服务器都可以独立地提供数据库服务。通过将数据分布在...
本篇文章将根据提供的文档标题、描述、标签以及部分内容,详细介绍MySQL集群7.1.29版本的规划、安装、配置和运行的基本知识。 #### MySQL集群结构图及名词解释 **管理节点**:管理MySQL集群内的其他节点,包括配置...
在Linux环境中安装MySQL集群是一项复杂但重要的任务,它能够提供高可用性和数据冗余,确保数据库服务的稳定性和性能。以下是对安装过程的详细描述: 首先,你需要一个支持MySQL集群的Linux发行版。描述中没有明确...