mysql分表分库可以读写分离_MySQL 分库分表/读写分离

一、分库分表

1. 水平切分

A. 定义:它是将同一个表中的记录拆分到多个结构相同的表(不同库)中;

B. 作用:可以将数据分布到集群的不同节点上,从而缓存单个数据库的压力。

2. 垂直切分

A. 定义:是将一张表按列切分成多个表,通常是按照列的关系密集程度进行切分;

B. 作用:方便实现动静分离,冷热分离的数据库表的设计模式,数据维护相对简单。

3. 涉及到问题:分片策略、事务问题、ID唯一性等。

二、主从复制

1. 定义:将主库的数据异步的同步到从库的操作,由于主从同步的异步性,从库与主库的数据会短时间内不一致。

2. 工作原理

A. binlog线程:Master服务器在每个事务更新数据完成之前,将该操作记录串行地写入到二进制日志文件(Binary Log);

B. I/O线程:Slave服务器中I/O线程在不停地监听Master的二进制日志是否有更新,如果没有它会睡眠等待Master产生新的日志事件,如果有新的日志事件,则会将其拷贝至Slave服务器中的中继日志(Relay Log);

C. SQL线程:Slave服务器中SQL线程从中继日志读取事件,并重做其中的事件从而更新Slave的数据,使其与Master中的数据一致。

437cc7b22d6e1cd3a3733cbe144bc24c.png

3. 复制方式

A. 异步复制:是MySQL默认的复制方式,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整;

B. 半同步复制:介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间;

全同步复制:指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响;

C. GTID模式:

D. 多源复制:

三、读写分离

1. 定义:主服务器处理写操作以及实时性要求比较高的读操作,而从服务器处理读操作。

2. 作用

A. 主从服务器负责各自的读和写,极大程度缓解了锁的争用;

B. 从服务器可以使用 MyISAM,提升查询性能以及节约系统开销;

C. 增加冗余,提高可用性。

325102096207c9c5a6f28b88c9eaa800.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值