数据库的高可用 及 Mycat的引入

(一)实现数据库的读写分离

  1 业务需求

     在服务中,只配置主库.如果遇到了高并发的现象,则主库有宕机的风险,用户大量的请求中,查询的数量是最多的.如何进行优化呢??

  2 解决方案: 使用代理服务器(Amoeba)

    Amoeba是一个以Mysql为底层的数据存储,并对应用提供Mysql协议接口的proxy.它集中地响应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行.基于此可以实现负载均衡,读写分离,高可用性等需求.与MySql官方的MySql Proxy相比,作者强调的是amoeba配置的方便(基于XML的配置文件),用SQLJEP语法书写规则,比基于lua的脚本的Mysql Proxy简单.

  

  3 双机热备

  Master:A主要的作用向从库B同步数据

  从库B:向A主库同步数据

  

  3.1调用流程

  正常情况下,主库负责写库操作,从库主要负责读库操作

  当主库宕机时,通过某些技术手段可以实现数据库的主从切换.这时从库即充当主库又充当从库.

  运维人员将主库修复完成后启动.因为之前已经配置了双击热备的形式.这时因为从库已经运行了一段时间,其中的数据一定比主库的多,这时从库将数据同步给主库,最终实现了数据的一致.

 



(二)Mycat的引入(遇到数据库瓶颈,无法继续优化sql,使用Mycat)

  1 Mycat是数据库的分库分表中间件,国内最活跃的,性能最好的开源软件数据库中间件!

  2 Mycat的特性

    ? 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理

    ? 基于心跳的自动故障切换,支持读写分离,支持Mysql主从,以及galera cluster集群

    ? 支持分布式事务

  3 数据库的优化

    ?优化SQL语句---原则

      a:能用单表不用关联查询.正常的数据库设计需要满足三范式要求.

      b:使用关联时尽可能提早确定数据.否则会进行大量的笛卡尔积操作.直接影响程序执行性能.

      c:尽可能根据主键查询

    ?创建索引

      对于经常查询的数据,为其创建索引文件

      a: 普通索引  INDEX (id)

      b: 唯一索引  UNIQUE INDEX unique_id(id ASC)

      c: 全文索引   FULLTEXT INDEX fulltext_name(name)

      d: 单列索引  INDEX single_name(name(20))       //索引长度为20

      e: 多列索引  INDEX multi(id,name(20))

      f: 空间索引   SPATIAL INDEX sp(space)

    ? 添加缓存

      为经常查询的数据,将数据添加到缓存中,提高查询效率

    ? 定期转储数据

      采用历史表策略 将旧的数据保存到历史表中.当前表中只维护现在使用的数据

    ? 分库分表

      因为数据库瓶颈问题,无法以现在的优化策略,优化数据库,这时需要将数据库进行分库分表操作.也就是将一个数据库动态的拆分为多个数据库.

   4 数据库的垂直拆和水平拆

            根据不同的数据库,将有关联关系的数据表拆分到一个数据库中,将没有关联关系的数据表拆分到不同的数据库中.(根据业务拆分)

  

       将数据库中的表数据拆分到多个数据库中得表中

  

 



   

          Mycat 逻辑库,进行管理

原文地址:https://www.cnblogs.com/misscai/p/10031779.html

时间: 2024-10-24 17:39:21

数据库的高可用 及 Mycat的引入的相关文章

heartbeat v1 实现 MariaDB数据库的高可用

MariaDB数据库服务的高可用: 使用 heartbeat v1 版实现两个节点的 MariaDB数据库服务的高可用. 节点: node1        192.168.60.33 node2        192.168.60.88 MySQL数据库的数据文件使用nfs共享文件系统解决 nfs Server       192.168.60.22 架构如下图: 一.heartbeat 节点之间通信要求的设置: (1).解决节点的主机名解析 因为 heartbeat 的节点间通讯基于名称.基于

基于mysql-mmm实现MySQL数据库的高可用

MMM简介 MMM(Master-Master Replication Manager for MySQL)MySQL主主复制管理器,实现了对MySQL双主复制架构的监控,故障转移和管理.mysql-mmm在实现过程中提供了多个虚拟IP,包括用于写操作的虚拟IP和用于读操作的虚拟IP.在双主复制架构中仅有其中的一台主节点可用于写操作,所有节点包括从节点对外提供读操作.当其中的一个从节点故障时,它持有的虚拟IP会自动转移至其他节点上.若故障的是主节点,它持有的写操作的虚拟IP和读操作的虚拟IP都会

MySQL数据库的优化(下)MySQL数据库的高可用架构方案

MySQL数据库的优化(下)MySQL数据库的高可用架构方案 2011-03-09 08:53 抚琴煮酒 51CTO 字号:T | T 在上一篇MySQL数据库的优化中,我们跟随笔者学习了单机MySQL数据库的优化,今天我们继续跟随笔者学习MySQL优化的集群方案. AD:51CTO 网+首届APP创新评选大赛火热启动——超百万资源等你拿! [51CTO独家特稿]在上一篇MySQL数据库的优化中,我们跟随笔者学习了单机MySQL数据库的优化,今天我们继续跟随笔者学习MySQL优化的集群方案. M

利用lamp架构搭建Discuz论坛,并实现对数据库的高可用

lamp架构=LAMP指的Linux(操作系统).Apache(HTTP 服务器),MySQL(数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web 服务器. #############源码安装php########### tar jxf php-5.6.20.tar.bz2 cd php-5.6.20 解决依赖性: yum install freetype-devel libmcrypt-2.5.8-9.el6.x86_64.rpm net-snmp-d

corosync+pacemaker+crmsh+DRBD实现数据库服务器高可用集群构建

  DRBD (DistributedReplicated Block Device) 是 Linux 平台上的分散式储存系统.其中包含了核心模组,数个使用者空间管理程式及 shell scripts,通常用于高可用性(high availability, HA)丛集.DRBD 类似磁盘阵列的RAID 1(镜像),只不过 RAID 1 是在同一台电脑内,而 DRBD 是透过网络. DRBD 是以 GPL2 授权散布的自由软件. 实验架构图: 一.高可用集群构建的前提条件 1.主机名互相解析,实现

heartbeat v1(CRM)+DRBD实现数据库服务器高可用集群搭建

一. 方案简介 本方案采用Heartbeat双机热备软件来保证数据库的高稳定性和连续性,数据的一致性由DRBD这个工具来保证.默认情况下只有一台mysql在工作,当主mysql服务器出现问题后,系统将自动切换到备机上继续提供服务,当主数据库修复完毕,又将服务切回继续由主mysql提供服务. 二. 方案优缺点 优点:安全性高.稳定性高.可用性高,出现故障自动切换, 缺点:只有一台服务器提供服务,成本相对较高.不方便扩展.可能会发生脑裂. 三. 方案架构图 四.  方案适用场景 本方案适用于数据库访

Mysql数据库实现高可用

Mysql实现高可用 MMM MMM(master-master replication manager for mysql)mysql主主复制管理器. MMM是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql master-master复制的配置(同一时间只有一个节点是可写的). MMM的监管端是会提供多个虚拟ip(vip),包括一个可写的vip,多个可读的vip,通过监管的管理,这些ip会绑定在可用的mysql上,当某一台m

MySQL数据库之高可用MHA简介 MySQL学习

MHA目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用. MHA还提供在线主库切换的功能,能够安全地切换当前运行的主库到一个新的主库中(通过将从库提升为主库),大概0.5-2秒内即可完成. ? 自动故

MySQL数据库——MMM高可用群集架构

概念 MMM(Master-Master replication managerfor Mysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的). MMM高可用架构说明 mmm_mond:监控进程,负责所有的监控工作,决定和处理所有节点角色活动.此脚本需要在监管机上运行. mmm_agentd:运行在每个mysql服务器上的代理