zoukankan      html  css  js  c++  java
  • mysql读写分离总结

      随着一个网站的业务不断扩展,数据不断增加,数据库的压力也会越来越大,对数据库或者SQL的基本优化可能达不到最终的效果,我们可以采用读写分离的策略来改变现状。读写分离现在被大量应用于很多大型网站,这个技术也不足为奇了。ebay就做得非常好。ebay用的是oracle,听说是用Quest Share Plex 来实现主从复制数据。

    一、什么是读写分离

      读写分离简单的说是把对数据库读和写的操作分开对应不同的数据库服务器,这样能有效地减轻数据库压力,也能减轻io压力。主数据库提供写操作,从数据库提供读操作,其实在很多系统中,主要是读的操作。当主数据库进行写操作时,数据要同步到从的数据库,这样才能有效保证数据库完整性。

      主数据库同步到从数据库后,从数据库一般由多台数据库组成这样才能达到减轻压力的目的。读的操作怎么样分配到从数据库上?应该根据服务器的压力把读的操作分配到服务器,而不是简单的随机分配。mysql提供了MySQL-Proxy实现读写分离操作。不过MySQL-Proxy好像很久不更新了。oracle可以通过F5有效分配读从数据库的压力。

    二、读写分离方案

      1. 淘宝TDDL,client模型,关键链路上不需要额外的服务器(diamond配置服务器,宕机不影响服务),不会产生额外的故障点。排名第一。

      2. 奇虎atlas,阿里amoeba,cobar 都是server模型,需要在关键链路上增加额外服务器,会产生额外的故障点。排名并列第二。

      3. msyql-proxy,MySQL官方出品,据说是atlas是根据它优化出来的,排名第三

      4. mysql replicationDriver,排名第四

    三、采用Atlas+Keepalived实现MySQL读写分离、读负载均衡

      具体参阅:http://sofar.blog.51cto.com/353572/1601552/

      Atlas+Keepalived实现MySQL读写分离主要有以下优点:

      (1)、基于mysql-proxy-0.8.2进行修改,代码完全开源;
      (2)、比较轻量级,部署配置也比较简单;
      (3)、支持DB读写分离;
      (4)、支持从DB读负载均衡,并自动剔除故障从DB;
      (5)、支持平滑上下线DB;
      (6)、具备较好的安全机制(IP过滤、账号认证);
      (7)、版本更新、问题跟进、交流圈子都比较活跃。

      总体架构图:

     参阅文章

    MySQL + Atlas --- 部署读写分离 http://www.cnblogs.com/yyhh/archive/2015/12/29/5084844.html

    MySQL-(Master-Slave)配置 http://www.cnblogs.com/luxh/p/4088420.html

    MySQL Master Slave同步配置 http://www.cnblogs.com/xiazh/archive/2011/04/22/1971182.html

    使用Atlas实现MySQL读写分离 http://www.cnblogs.com/luxh/p/4104516.html

    解决Mysql读写分离数据延迟 http://blog.csdn.net/allen_hdh/article/details/19854783

    MySQL 读写分离后的数据一致性问题 https://www.v2ex.com/t/174052

    浅谈mysql主从复制的高可用解决方案 http://blog.csdn.net/burpee/article/details/49422235

  • 相关阅读:
    c 的内存分配与释放原则: 通常应遵循“谁malloc,谁free”的原则。
    总算知道怎样从ImageMagick生成的数据转换成HICON: MagickGetImageBlob & LookupIconIdFromDirectoryEx
    收藏:Non-direct与direct ByteBuffer区别
    java NIO 直接与非直接缓冲区
    [收藏]:[算法]LRU和LFU的区别
    异步IO的并发能力:backlog的配置很重要
    ByteBuffer: 当由一个byte[]来生成一个固定不变的ByteBuffer时,使用ByteBuffer.wrap(byte[]);
    ByteBuffer的allocate与allocateDirect2013-01-11
    Windows完成端口与Linux epoll技术简介
    Java并发——Fork/Join框架与ForkJoinPool
  • 原文地址:https://www.cnblogs.com/shamo89/p/6748151.html
Copyright © 2011-2022 走看看