在某些场景下,例如淘宝京东这样海量的数据,高访问量的场景,无疑对数据库造成了相当大的负载,同时对于系统的稳定性和扩展性提出很高的要求。
而单个服务器所能够提供的服务以及负载都是有限的。
所以,为了系统的问题,以及较快的响应速度或处理能力,在数据库方面就有了集中解决方案,分库分表,读写分离,这些都能在一定程度上有效地减小单台数据库的压力。
而本文就是从读写分离角度来一探究竟。
主要理解以下三个点就差不多了: 1、主机负责写操作 2、从机负责读操作 3、从机自动从主机中同步数据
然而,我们对于一个新的东西,我们就要提出我们的哲学三问: 我是谁?我在那?我要干嘛? 是什么?为什么?怎么做?
1、什么是读写分离
读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。
2、为什么要读写分离呢?
因为数据库的“写”(写10000条数据到oracle可能要3分钟)操作是比较耗时的。但是数据库的“读”(从oracle读10000条数据可能只要5秒钟)。所以读写分离,解决的是,数据库的写入,影响了查询的效率。
3、什么时候要读写分离?
数据库不一定要读写分离,如果程序使用数据库较多时,而更新少,查询多的情况下会考虑使用,利用数据库 主从同步 。可以减少数据库压力,提高性能。当然,数据库也有其它优化方案。memcache 或是 表折分,或是搜索引擎。都是解决方法。
4.主从复制、读写分离的基本设计
在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。
取自:读写分离的实现原理及使用场景[1]
这里使用docker进行数据库的安装,docker的优势以及就怎么安装docker就不多做赘述了,感兴趣的可以去翻一下我以前的文章。
这里只安装了一个主机(master),一个从机(slave)
为什么?
如果不进行同步的配置,那么从机无法获取主机的数据,最终就会导致同步失败。
在从机中的配置文件加入以下参数。
1.主机
1.从机
1、修改配置文件(以master为例)
2、拷贝(主从都需要拷贝,以master为例) 如果服务器有vi编辑器,直接使用vi编辑器即可。
3、重启mysql
4、查看是否配置成功
如果出现以下数据即为成功。
5、在从机(slave)中配置主机(master)
在第一个数据库(master)创建我们配置的数据库,然后随意修改该数据库的数据,刷新slave,数据同步成功。
1、因为在配置当中指定了数据库(lomtomdb),也就是binlog-do-db
参数,所以从机只会同步主机中的lomtomdb数据库,其他数据库不同步。2、修改配置文件时,log-bin
参数所指定的目录一定是要mysql能够操作的文件,也就是说,如果你指定了其他目录,请给予mysql操作权限。
本文首发于CSDN,作者:lomtom 原文链接:https://blog.csdn.net/qq_41929184/article/details/112306554 你的支持就是我最大的动力。