`
85977328
  • 浏览: 1898645 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MYSQL集群介绍

 
阅读更多
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
分享到:
评论

相关推荐

    Spring + Ibatis 与mysql集群集成

    本教程将深入探讨如何将Spring、Ibatis框架与MySQL集群集成,以实现高效、可靠的数据库操作。 首先,让我们了解Spring和Ibatis。Spring是一个全面的Java应用开发框架,它提供了依赖注入、面向切面编程、事务管理等...

    mysql集群搭建教程

    本文将详细介绍MYSQL集群的搭建过程。 Knowledge Point 1: MYSQL集群架构 MYSQL集群架构主要包括管理节点、数据节点和SQL节点。管理节点负责管理集群的配置和状态,数据节点负责存储数据,SQL节点负责处理SQL请求...

    centos7搭建mysql集群

    本文将详细介绍如何在 CentOS 7 环境下搭建 MySQL 集群,包括整个搭建步骤及部分常见问题的解决方案。 #### 二、环境准备 - **操作系统**: CentOS 7.0 - **硬件配置**: 至少三台服务器 - MGM (Management Server):...

    mysql集群环境搭建.docx

    MySQL 集群环境搭建 MySQL 集群环境搭建是指将多台服务器组合成一个高性能、可靠的数据库系统,以实现高可用性和高性能。该系统可以分担客户的访问压力,自动进行数据分区和负载均衡,实现线性数据库扩展。 1. ...

    Linux MySQL集群环境搭建

    在本文中,我们将详细介绍MySQL集群的概念、架构、环境配置、安装和配置MySQL集群版本、配置Management Server等。 MySQL集群简介 MySQL集群是一个无共享的、分布式节点架构的存储方案,其目的是提供容错性和高...

    mysql集群配置教程

    MySQL集群配置教程旨在帮助初学者理解并实现MySQL集群的搭建,让数据库的高可用性和负载均衡成为可能。MySQL集群(MySQL Cluster)是一种分布式事务处理系统,它提供了数据复制和分区,确保了数据的一致性和可用性。...

    mysql集群的一种方案

    MySQL集群是一种分布式数据库解决方案,旨在提高数据的可用性、可扩展性和容错性。在本方案中,我们将探讨MySQL集群的构建、工作原理以及其在实际应用中的优势和挑战。 一、MySQL集群概述 MySQL集群(MySQL ...

    linux mysql集群

    我们将介绍如何在 3 台服务器上安装和配置 MySQL 集群,包括 Server1、Server2 和 Server3,其中 Server1 和 Server2 作为实际的 MySQL 数据库集群的服务器,而 Server3 作为管理节点服务器。 一、Linux MySQL 集群...

    mysql集群-中文版

    6. DolphinSCI的介绍:DolphinSCI是Oracle公司提供的MySQL集群产品,它支持高可用性、高性能、高扩展性的数据库解决方案。 7. Continuent的介绍:Continuent是一家提供数据库高可用性解决方案的公司,它的产品...

    MySQL集群配置与使用(Windows环境)

    Windows环境下MySQL集群的搭建,使用了三个节点,第一个节点作为管理节点,第二个节点作为数据节点A和SQL节点A,第三个节点作为数据节点B和SQL节点B。 此外,还演示了如何使用图形化客户端管理MySQL集群,新建数据库...

    MySQL集群评估手册.pdf

    MySQL集群是一种高性能、高可用性的数据库集群技术,它通过将多个MySQL数据库实例组成一个集群来提供数据的冗余和故障转移能力。在评估MySQL集群的实施之前,了解其架构、组件以及它们之间的交互是非常必要的。 ...

    mysql集群方案对比

    MySQL集群是一种用于提高数据库服务可用性和性能的技术,它通过分散数据和处理负载来实现这一目标。在本篇文章中,我们将探讨8种不同的MySQL集群方案,分析它们的特点、优缺点以及适用场景。 1. **MySQL主从复制...

    MYSQL集群测试

    在进行MYSQL集群测试时,涉及的知识点相当广泛,主要包括以下几个方面: 1. 测试工具介绍:文档提到了mysqlslap、sysbench、supersmack等工具,这些都是用于测试MYSQL性能的工具。 - mysqlslap是一个用于模拟多...

    mysql集群解决方案

    MySQL集群解决方案旨在提高数据库系统的高可用性和负载均衡,以应对日益增长的网络服务需求。MySQL作为世界上最流行的开源数据库,因其开源、免费、跨平台、多语言支持和高效等特点而备受青睐。然而,MySQL在某些...

    centos7部署mysql集群1

    在本篇中,我们将深入探讨如何在CentOS7环境下部署MySQL集群,具体为1个管理节点加2个数据节点和2个SQL节点的配置。首先,我们从环境清理和准备工作开始,然后逐步进行软件安装、配置以及启动服务。 1. **环境清理...

    MYSQL 集群

    在本文中,我们将详细介绍 MYSQL 集群的配置和实现过程。 在开始之前,我们需要了解 MYSQL 集群的基本概念。MYSQL 集群是指多个 MYSQL 服务器组成的集群,每个服务器都可以独立地提供数据库服务。通过将数据分布在...

    mysql集群7.1.29配置文档linux

    本篇文章将根据提供的文档标题、描述、标签以及部分内容,详细介绍MySQL集群7.1.29版本的规划、安装、配置和运行的基本知识。 #### MySQL集群结构图及名词解释 **管理节点**:管理MySQL集群内的其他节点,包括配置...

    linux安装mysql集群

    在Linux环境中安装MySQL集群是一项复杂但重要的任务,它能够提供高可用性和数据冗余,确保数据库服务的稳定性和性能。以下是对安装过程的详细描述: 首先,你需要一个支持MySQL集群的Linux发行版。描述中没有明确...

Global site tag (gtag.js) - Google Analytics