• 数据库的高可用 及 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 逻辑库,进行管理

  • 相关阅读:
    codeforces 540 C Ice Cave【BFS】
    UVa 140 Bandwidth【枚举排列】
    UVa 1600 Patrol Robot【BFS】
    UVa 1599 Ideal Path【BFS】
    HDU 4324 Triangle LOVE【拓扑排序】
    HDU 2647 Reward【拓扑排序】
    UVa 10305 Ordering Tasks【拓扑排序】
    codeforces 501 B Misha and Changing Handles 【map】
    codeforces 510 C Fox And Names【拓扑排序】
    落谷_2740/poj_1273/USACO_4.2/网络流
  • 原文地址:https://www.cnblogs.com/misscai/p/10031779.html
Copyright © 2020-2023  润新知