数据库的高可用 及 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

时间: 11-27

数据库的高可用 及 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都会

利用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.主机名互相解析,实现

生产环境下mycat高可用方案mycat+keepalive(1)

#主master配置如下 cat  /etc/keepalived/keepalived.conf global_defs { notification_email { [email protected] } #notification_email_from [email protected] #smtp_server 10.168.0.48 #smtp_connect_timeout 10 router_id nginx } vrrp_script chk_haproxy { script "

常用数据库高可用和分区解决方案(1) — MySQL篇

在本文中我们将会讨论MySQL.Oracle.MongoDB.Redis以及Oceanbase数据库,大家可能会奇怪为什么看不到有名关系型数据库MSSQL.DB2或者有名NoSQL数据库Hbase.LevelDB等,最主要原因是我对这些数据库熟悉层度不够.但相信这些数据库都会有相应的解决方案. 首先我们看一下数据库以及常看到的HA以及分布式架构方案 数据库类型 架构方案 架构类型 MySQL Keepalived+MySQL Replication HA MHA+MySQL Replicatio

分布式数据存储 - MySQL主从复制高可用方案

前面几篇文章说道MySQL数据库的高可用方案主从复制.主从复制的延迟产生原因.延迟检测及延迟解决方案(并未从根本上解决),这种主从复制方案保证数据的冗余的同时可以做读写分离来分担系统压力但是并非是高可用方案,因为主从节点中主节点仍然是单点的,一旦主节点宕机会导致应用中写失败.双主复制虽然很好的避免主节点的单点故障,但是未提供统一访问入口来实现负载均衡,如果其中master宕掉的话需要手动切换到另外一个master,而不能自动进行切换.本篇文章就来剖析主从复制的高可用. 一.基础概念介绍 Keep

MySQL高可用之MHA的搭建

MySQL MHA架构介绍: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正的高可用. 该软件由两部分组成:MHA Manag

corosync 实现 MariaDB 数据库服务的高可用

方案: corosync + pacemaker  提供HA的解决方案. 使用NFS共享服务器导出的共享文件系统做为数据目录: 拓扑图如下: 一.配置HA高可用集群的各节点间能够基于主机名通讯. 1.设置主机名 (1).在 192.168.60.128 主机设置 编辑/etc/sysconfig/network文件,使得主机名永久有效 [[email protected] ~]# vim /etc/sysconfig/network HOSTNAME=node2.9527du.com 使用hos

SQL Server 2014 高可用之前言:这里就随便说说

几个月前把自己的Demo环境拿来全部推翻了(现在也忘了为嘛推翻了,重新做好蛋疼),准备再重新做一个高可用环境,准备把自己能做的高可用都挨着做一遍. SQL Server作为微软大多数多系统的后端数据库,所以,还是先把后端的数据库做成高可用了,再挨着做前端的应用.本系列里面有数据库的高可用以及以前做的备份恢复的东西. 由于对于数据库的了解还是在皮毛上,所以后面的文章有什么问题的地方,还是请各位大牛能指正的指正下吧,在此先谢谢了!