`
talentluke
  • 浏览: 592198 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用复制来提升MySQL的高可用性和处理能力

 
阅读更多

摘自http://www.linuxdiyf.com/bbs/thread-64961-1-1.html

 

昨晚看了一晚上的MySQL文档,主要是关于MySQL的复制方面的文档,用的工具是MySQL的帮助文档+金山词霸。

终于比较大概的了解了如何通过复制来提升MySQL数据库的高可用性和处理能力,不过还没有经过实际的试验,但整体的思想是清楚了,下面把思路大概的描述一下,有机会再进行实验。

首先在服务器端采用1+N的模型来安装和配置MySQL数据库。1就是一个master数据库,N就是一至多个slave数据库。master数据 库必须启用binlog模式,关于这两种数据库的配置参见MySQL的文档。配置完成后就形成了一个1+N的复制集群,当对master进行修改时会自动 把修改的数据更新到N个slave数据库上。但是有一个注意的是,所有的修改操作包括添加、删除、修改等语句必须作用在master数据库上,这样才能使 数据可靠的复制到其他slave服务器上。另外,由于slave服务器只用作查询,因此选用MyISAM的存储引擎可以提高查询的速度。

而在客户端呢?如何使客户端程序能均衡的使用这些可用的服务器呢?而且更新操作只能对master进行处理。这个岂不是应用程序对数据库的操作逻辑非常的复杂?

其实没有那么复杂,MySQL为我们提供了接口可以将这些复杂的操作透明化。下面主要介绍采用JDBC的客户端如何工作在基于复制的集群环境中,其他编程语言请参照mysql的文档。

MySQL最新的JDBC驱动程序包中提供了一个驱动类就是 com.mysql.jdbc.ReplicationDriver 。这个驱动类允许在url中设置多个mysql主机地址。

在上面的url中,有三个主机地址分别是master1,slave1,slave2,其中ReplicationDriver 规定第一个主机是master主机地址,剩下的全部是slave主机。另外有两个参数必须指定为true,就是autoReconnect和roundRobinLoadBalance。

使用这个驱动和配置后还不能马上解决所有的问题,我们还需要对程序做一些小改动。

我们必须告诉驱动程序,哪些语句的执行是作用在master数据库,而哪些语句的执行作用在slave数据库上。

ReplicationDriver 是通过Connection对象的readOnly属性来判断该操作是否为更新操作。因此我们在执行一个sql语句的时候必须调用一下 setReadOnly告诉驱动程序当前执行的操作是否是只读。如果你是使用hibernate操作数据库的,那可以调用 Query.setReadOnly方法。

以上就是整个思路的大概描述,猜想肯定还有存在一些问题,例如因为数据的复制过程是异步的,也是说有可能执行了某个更新操作,但是查询的时候查不到的情况出现。当然这些问题只能在实际的过程中进行解决。

另外关于最新版本的MySQL 5.1有一个集群的功能,不过经过研究发现这个东西简直就是儿戏,实在搞不懂MySQL怎么会做这么不负责任的设计,因为这个特性要求数据库是整个 load到内存中的,也就是说你的数据有多大,内存就得有多大,怎么说呢? 如果你真的内存足够大,你去试试吧,反正这种方案已经被我否决了,希望MySQL能改进一下。

 

参考 http://www.knowsky.com/397775.html

分享到:
评论

相关推荐

    MySQL主从复制实现高可用性和负载均衡.pdf

    摘要:本文首先介绍了MySQL主从复制架构的优势,包括实现读写分离减轻主库压力、提供容灾冗余、负载均衡提升并发能力、分离报表分析等。...关键词:MySQL 主从复制 高可用性 读写分离 冗余 负载均衡 数据分析

    MySQL Replication(复制)用MySQL5.5提高可扩展性和可用性_5.5

    MySQL Replication(复制)已经在一些著名的网站和企业广泛应用以将数据库的扩展性提升到极限水平。对用户而言可以简单快速地为数据库创建多个副本,超越单个数据库实例容量的限制,弹性扩展数据库系统以满足快速增长...

    MySQL进阶-高可用、分布式、主从复制原理、备份恢复

    MySQL进阶涉及多个主题,其中高可用性、分布式系统、主从复制原理和备份恢复是核心部分。以下是关于这些主题的详细解释: 高可用性 (High Availability) 定义:确保在任何给定的时间点,服务都是可用的。 策略: ...

    MySQL管理之道 性能调优、高可用与监控.part2.rar

    本书适合所有希望构建和管理高性能、高可用性的mysql数据库系统的开发者和dba阅读。 目录 · · · · · · 前言 第一部分 mysql5.5 新特性篇 第1章 mysql5.5介绍 2 1.1 性能上的显著改变 2 1.1.1 mysql5.5默认...

    深入理解Mysql MHA高可用集群搭建:从实验到实战

    MHA(Master High Availability)是一个用于MySQL高可用性的开源工具,专门用于处理MySQL主从复制架构中的主节点故障。本文深入探讨了MHA的关键组成部分,包括MHA Manager和MHA Node的角色,以及它如何在主节点故障...

    深入探索MySQL主从架构与读写分离:提升数据安全和性能的实战指南

    此外,还探讨了MySQL高可用方案和分库分表的实用性,说明了这些技术在处理大数据量时如何提升数据库性能和可扩展性。总之,本文为开发者提供了一套完整的MySQL主从架构与读写分离的实战指南,旨在帮助他们有效地解决...

    mysql 5.6 新特性

    通过在线DDL/模式更改来提高应用程序可用性 支持通过 Memcached API 对 InnoDB 进行 NoSQL 访问,从而使开发人员能灵活的以适当的技术因应开发速和应用系统效能的需求 通过改进复制来实现高性能、自我修复的分布式...

    [高性能MySQL(第3版)].Baron.Scbwartz等.扫描版

    此外,增补的MySQL高可用性及云特性,也让人更加欣喜。  相信不少人会因为找不到某些书中引用的资料或工具而苦恼,但从本书中按图索骥,会发现这些东西正是作者对MySQL社区的杰出贡献,也就是说,你可以直接用这些...

    2024年MySQL安装及配置超详细教程.zip

    内容包括MySQL的基础概念、下载安装、配置方法、命令行操作、数据备份与恢复、数据导入导出、数据库和用户管理、图形界面工具的使用、复制功能、备份恢复策略、高可用性和集群以及性能调优等。 **适用人群:** 本...

    2024年小白必看!超详细MySQL下载安装教程

    内容涵盖MySQL的下载安装、命令行界面操作、性能优化、高可用性、复制功能、备份恢复策略、监控故障排除、社区支持、持续更新等高级功能。 **适用人群:** 本教程适合所有准备在数据库管理领域发展的开发者,尤其是...

    MySQL高可用数据库内核深度优化的四重定制

    近期我们的数据库团队对原生复制的多个方面进行了深度优化,提升了UDB高可用数据库的功能和性能。今天借社群这个平台,跟大家分享一二。UDB以虚拟IP、HAProxy、单节点UDB数据库搭建双节点高可用架构:双节点的UDB...

    简单谈谈MySQL的半同步复制

    MySQL通过复制(Replication)实现存储系统的高可用。目前,MySQL支持的复制方式有: 异步复制(Asynchronous Replication):原理最简单,性能最好。但是主备之间数据不一致的概率很大。 半同步复制(Semi-...

    oracle数据库面试题目汇总

    通常都有什么模型来解决mysql高可用性 mysql创建可以允许远程登录,只能管理test数据库下所有表的用户,写出命令 用过memecached吗?它是用来解决什么问题的? 了解nginx吗?说明nginx为什么比apache等web容器高...

    MHA实施文档.pdf

    MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件...

    MHA实施文档.zip

    MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件...

    PostgreSQL v9.3 For Win.zip

    此外,该版本提升了可靠性和可用性,实现了快速的故障转移;数据页的 checksum。此外在复杂的复制环境中,可在故障发生时迅速转移主数据节点。   在针对开发者方面改进包括: 额外的 JSON 构建和解析方法 自动...

    Node.js Sequelize如何实现数据库的读写分离

    使用较多的数据库优化方案是:通过主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力。 1. replication选项与读写分离 Sequelize 支持读/写分离,要实现读/写分离...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

Global site tag (gtag.js) - Google Analytics