`

mysql集群的初步整理

 
阅读更多

mySql数据库如果采用复制(Replication)方式的群集,在程序中进行读写分离的处理办法有如下几种:

自动主从管理方案有: MHA 官方介绍:https://code.google.com/p/mysql-master-ha/

1、采用 MySql提供的  ReplicationDriver 驱动程序, 简单的过程如下:
  
   缺点: 无法集成到 Spring 进行读写分离操作。

public static void main(String[] args) throws Exception {
    ReplicationDriver driver = new ReplicationDriver();
 
    Properties props = new Properties();
 
    // We want this for failover on the slaves
    props.put("autoReconnect", "true");
 
    // We want to load balance between the slaves
    props.put("roundRobinLoadBalance", "true");
 
    props.put("user", "foo");
    props.put("password", "bar");
 
    //
    // Looks like a normal MySQL JDBC url, with a
    // comma-separated list of hosts, the first
    // being the 'master', the rest being any number
    // of slaves that the driver will load balance against
    //
 
    Connection conn =
        driver.connect("jdbc:mysql://master,slave1,slave2,slave3/test",
            props);
 
    //
    // Perform read/write work on the master
    // by setting the read-only flag to "false"
    //
 
    //这个节点应该是通过spring的事务管理来设置,同时这个conn对象应该不是一个真正的connection,
    //而是一个代理类,通过设置readonly,代理类会去使用不同的connection,
    //那么问题是它该代理类使用的connection是哪里取的,抑或说难道它每次都会新开一个connection?,需要看源代码
        
   conn.setReadOnly(false);
 
    conn.setAutoCommit(false);
    conn.createStatement().executeUpdate("UPDATE some_table ....");
    conn.commit();
 
    //
    // Now, do a query from a slave, the driver automatically picks one
    // from the list
    //
 
    conn.setReadOnly(true);
 
    ResultSet rs =
      conn.createStatement().executeQuery("SELECT a,b FROM alt_table");
 
     .......
  }


2、采用 多数据源方式配置, 如:配置写数据源, 读数据源, 在程序中选择使用。

#读数据源
DBDriver=com.mysql.jdbc.Driver 
url=jdbc\:mysql\:loadbalance\://slave1,slave2,slave3\:3306/test?roundRobinLoadBalance\=true&characterEncoding\=UTF-8 
name=test 
pass=test 
characterEncoding=utf8

#写数据源
DBDriver=com.mysql.jdbc.Driver 
url=jdbc\:mysql\:loadbalance\://master\:3306/test?roundRobinLoadBalance\=true&characterEncoding\=UTF-8 
name=test 
pass=test
characterEncoding=utf8

3、Mysql Router
 
  MySQL Proxy 是非 GPL 的, 所以选择 MySql Router ,
  MySQL Router是一个轻量级的中间件,提供了应用程序与后端数据库的透明路由,是mysql用来实现负载均衡和高可用功能。
  同时router也提供了使用fabric 高可用的方式。

  配置中:
  mode = read-only时,
   客户端请求将被循环分发给配置列表,当配置列表中服务器不可用,将会跳过该服务器,
   列表中下一个可用机器将处理请求,如列表没有可用服务器,路由将失败。

  mode = read-write时,
     所有客户端请求都会被列表中第一个可用服务器处理,当此服务器宕机时,
     列表中下一个可用机器才会处理客户端请求,如列表没有可用服务器,路由将失败。
     第一个被成功连接的服务器信息将被保存在内存中,重启router后失效。

  这样可以通过  Router 访问  mysql , 这样做好像也没有什么明显的好处(除负载均衡外)。

4、下面的数据库中间件 可以 访问 读写分离的 mysql 数据库集群,摘录如下,以备查看。

  A、Amoeba
     百度知道地址: http://baike.baidu.com/link?url=N2uPirw5znkFAvFUh0PDLlRLy7flqfUNdJmsP6oNCm-ziGrFSxzX-H1_fnjJ1FmjGjyZ1daDPc_euxVwcg-OBq
     从官网看, 最近一次更新在: Last Update: 2013-07-05

  B、Mycat
    http://www.mycat.org.cn/
    国内最活跃的、性能最好的开源数据库中间件!
   
    这个很活跃,国人的,请大力支持。

0
0
分享到:
评论

相关推荐

    Spring + Ibatis 与mysql集群集成

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

    mysql集群搭建教程

    MYSQL集群搭建教程 MYSQL集群搭建是指将多个MYSQL服务器组合成一个集群,以提高数据库的高可用性和负载能力。本文将详细介绍MYSQL集群的搭建过程。 Knowledge Point 1: MYSQL集群架构 MYSQL集群架构主要包括管理...

    centos7搭建mysql集群

    ### CentOS 7 搭建 MySQL 集群详解 #### 一、概述 随着业务规模的扩大,单一数据库服务器往往难以满足高并发、大数据量的需求。为了提高系统的可用性和性能,采用 MySQL 集群成为一种常见的解决方案。本文将详细...

    mysql集群环境搭建.docx

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

    Linux MySQL集群环境搭建

    "Linux MySQL集群环境搭建" 在Linux系统下,MySQL集群的搭建是一个复杂的过程,它需要oroughly了解MySQL集群的概念、架构和配置。在本文中,我们将详细介绍MySQL集群的概念、架构、环境配置、安装和配置MySQL集群...

    mysql集群配置教程

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

    mysql集群的一种方案

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

    linux mysql集群

    Linux MySQL 集群安装和配置 本文将向您讲述如何安装和配置一个基于 Linux 的 MySQL 集群,实现高可用性和负载均衡。我们将介绍如何在 3 台服务器上安装和配置 MySQL 集群,包括 Server1、Server2 和 Server3,其中...

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

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

    MySQL集群评估手册.pdf

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

    mysql集群-中文版

    标题:“mysql集群-中文版” 描述:“高可用的mysql集群的讲解,简单明了,通俗易懂,希望大家喜欢。” 知识点: 1. MySQL集群的定义和重要性:MySQL集群是一种高性能、高可用性的数据库解决方案,它允许多个MySQL...

    mysql集群方案对比

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

    MYSQL集群测试

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

    centos7部署mysql集群1

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

    mysql集群解决方案

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

    MYSQL 集群

    MYSQL 集群 MYSQL 集群是大型网站架构的设计方案的核心组件之一,旨在提高数据库的高可用性和可扩展性。在本文中,我们将详细介绍 MYSQL 集群的配置和实现过程。 在开始之前,我们需要了解 MYSQL 集群的基本概念。...

    mysql集群化的三种武器-MNC,MGC与MIC

    MySQL集群化是一种确保数据库系统高可用性、高性能和可扩展性的技术。它允许一个数据库环境由多个服务器组成一个统一的集群,从而可以在发生故障时自动切换到健康的节点,提高数据处理能力和可靠性。在标题中提到的...

    linux安装mysql集群

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

Global site tag (gtag.js) - Google Analytics