• 主从数据库读写分离知识


    (一)为什么要实现读写分离?

    为了服务器承载更多的用户?提升了网站的响应速度?分摊数据库服务器的压力?就是为了双机热备又不想浪费备份服务器?上面这些回答,我认为都不是错误的,但也都不是完全正确的。「读写分离」并不是多么神奇的东西,也带不来多么大的性能提升,也许更多的作用的就是数据安全的备份吧。从一个库到读写分离,从理论上对服务器压力来说是会带来一倍的性能提升,但你仔细思考一下,你的应用服务器真的很需要这一倍的提升么?那倒不如你去试着在服务器使用一下缓存系统,如 Memcached、Redis 这些分布式缓存,那性能可能是几十倍的提升。而且,在服务器硬件异常强悍及性能廉价的今天,完全更没必要了,所以,在今天,我认为它更多的职责就是为了数据安全而设计的,同时又提升了一些性能,这样也挺好。

    总结:分摊数据库服务器的压力,并保证数据库数据安全。

    (二)如何实现读写分离?

    读写分离方式很简单,就是在你读数据时去连接从库,在你写数据的时候去连接主库,具体代码实现当然就是连接时候去操作了,这没什么难度,在代码里写就是了,但是这样源程序就要被改动了,假设一个场景,我们已经部署好了数据库服务器,这个要实现主从,当然这种方法就有限制了。

    巧妙的使用AOP就可以实现: AOP 可以在方法开始执行前后插入执行我们想要的代码,那这样,我们可以在执行数据库操作前根据业务来动态切换数据源,这种方式首先不需要在业务代码中去做切换,二是可能以后我们不需要读写分离了,把 AOP 切换的代码去掉就行了,三是可能就是拓展性更强。

    (三)主从数据库如何保证数据一致性?

    数据的一致性通过主从复制实现,以mysql主(称master)从(称slave)复制的原理为例:

    1、master将数据改变记录到二进制日志(binary log)中,也即是配置文件log-bin指定的文件(这些记录叫做二进制日志事件,binary log events);

    2、slave将master的binary logevents拷贝到它的中继日志(relay log);

    3、slave重做中继日志中的事件,将改变反映它自己的数据(数据重演);

     (四)主从配置需要注意的地方

    1、主DB server和从DB server数据库的版本一致;

    2、主DB server和从DB server数据库数据一致,这里就可以把主的备份在从上还原,也可以直接将主的数据目录拷贝到从的相应数据目录;

    3、主DB server开启二进制日志,主DB server和从DB server的server_id都必须唯一;

    (五)一主一从与一主多从的区别以及实现

    我的上一篇文章主要讨论一主多从,而且只是给了实际应用中的实现方向,自己实现具体的这个可以参考链接:

    https://blog.csdn.net/zbw18297786698/article/details/54343188

    说明:所有内容仅做学习记录
  • 相关阅读:
    python3
    python2
    python的爬虫
    SQL SEVERE 基本用法 1
    安装SQL SEVER 2017 express 轻量入门级软件 安装教程
    面试学习资料
    后端架构师--总结网址收藏(个人)
    JVM学习网址(收集总结)
    RabbitMQ--学习资源汇
    Redis 学习资料目录(Important)
  • 原文地址:https://www.cnblogs.com/jayinnn/p/9561350.html
Copyright © 2020-2023  润新知