MySQL--主从同步、分库分表

1.MySQL主从同步

核心是二进制日志,二进制日志记录了所有的DDL语句和DML语句。

DDL数据定义语言,用于定义DB对象,例如表table、索引index等,

常见的命令:

  1. CREATE 创建数据库对象。
  2. ALTER 修改数据库对象结构。
  3. DROP 删除数据库对象。

DML数据操作语言,用于对DB中的数据进行操作,例如插入、更新、删除等。

常见的命令:

  1. INSERT 插入数据
  2. UPDATE 更新数据
  3. DELETE 删除数据
  4. SELECT 检索数据

可以说,DDL用于管理DB的结构,而DML用于对DB中的数据进行操作。

具体的主从同步流程

  1. Master主库在事务提交时,会把数据变更记录在二进制日志文件Binlog中。
  2. 从库读取主库二进制日志文件Binlog,写入到从库的中继日志Relay log中。
  3. 从库重做中继日志中的事件,读取数据,再将数据写入到自己的DB中,这样就实现了数据的同步。

2.MySQL--分库分表

为什么要分库分表?

  1. 项目业务的数据太多,业务发展较快。
  2. 仅靠优化已解决不了性能问题。
  3. IO瓶颈、CPU瓶颈。等等。

拆分策略:

垂直拆分:

          垂直分库:以表为依据,根据业务将不同的表拆分到不同库中。特点:1.按业务对数据分级管理、维护、监控、扩展。2.在高并发下,提高磁盘IO和数据量连接数。

          垂直分表:以字段为依据,根据字段属性将不同字段拆分到不同表中。特点:1.冷热数据分离。 2.减少IO过度争抢,两表互不影响。

水平拆分:

          水平分库:将一个库的数据拆分到多个库中。特点:1.解决了单库大数量,高并发的性能瓶颈问题。 2.提高了系统的稳定性和可用性。

          水平分表:将一个表中的数据拆分到多个表中(可以在同一个库中)。特点:1.优化单表数据量过大产生的性能问题。 2.避免IO争抢并减少锁表的概率。

分库分表产生的问题:

  1. 分布式事务一致性问题
  2. 跨节点关联查询
  3. 跨节点分页、排序函数
  4. 主键避重

解决:使用分库分表中间件:sharding-sphere、mycat。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值