数据库通关整理4-主从复制结构分析(进阶问题:主从复制、读写分离、主从选择、多级复制)

java通关整理汇总-Java基础、计算机网络、数据库、设计模式、框架、算法模板、笔试


1. slave从服务器是否可以进行写操作?
  • 假设slave可以主动的进行写操作,slave又无法通知master,这样就导致了master和slave数据不一致了。因此slave不应该进行写操作,至少是slave上涉及到复制的数据库不可以写。实际上,这里已经揭示了读写分离的概念。
2. 主从复制中,多个从服务器都不能写,他们的作用?
  • 数据备份,当主服务器挂掉的时候,可以用从服务器的数据,从服务器提升为主服务器。
  • 负载均衡,读操作一般会多于余写操作,多个从服务器分担主服务器的查询功能,就可以减轻负担。
3. web应用怎么判断具体连接哪一个服务器?主?从?哪一个从?

在这里插入图片描述

  • 找一个组件,application program只需要与它打交道,用它来完成MYSQL的代理,实现SQL语句的路由。
  • mysql proxy并不负责,怎么从众多的slaves挑一个?可以交给另一个组件(比如haproxy)来完成。这就是所谓的MYSQL的读写分离。

原始处理:
在应用程序中设置,insert/delete/update这些更新数据库的操作,用connection(for master)进行操作,select用connection(for slaves)进行操作。
从服务器怎么选择:
简单的轮询算法。就是假设所有的从数据库的承载能力都是一样的或者相当的,把服务器进行一系列的排序,然后根据序号顺序分配一个从服务器。
问题:一旦某一个服务器挂掉,那么应用程序就也要修改了

4. 如果主服务器挂了怎么办?

哨兵模式

5. 多级复制的概念?

在MYSQL master内部,维护N个线程,每一个线程负责将二进制日志文件发往对应的slave。master既要负责写操作,还的维护N个线程,负担会很重。可以这样,slave-1是master的从,slave-1又是slave-2,slave-3,…的主,同时slave-1不再负责select。 slave-1将master的复制线程的负担,转移到自己的身上。

6. 第一次查询由一个从服务器响应,第二次相同的查询在另外一个服务器响应,这个时候就不能利用缓存查询,节省效率了。

可以利用共享式缓存

7. 随着应用的日益增长,读操作很多,我们可以扩展slave,但是如果master满足不了写操作了,怎么办呢?

scale up ?更好的服务器? 没有最好的,只有更好的,太贵了。。。

scale out ? 主从复制架构已经满足不了。

可以分库【垂直拆分】,分表【水平拆分】。

8. Scale Up和Scale-out

Scale Up(纵向扩展) 主要是利用现有的存储系统,通过不断增加存储容量来满足数据增长的需求。但是这种方式只增加了容量,而带宽和计算能力并没有相应的增加。所以,整个存储系统很快就会达到性能瓶颈,需要继续扩展。

Scale-out横向扩展架构的升级通常是以节点为单位,每个节点往往将包含容量、处理能力和I / O带宽。一个节点被添加到存储系统,系统中的三种资源将同时升级。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值