【DB吐槽大会】第3期 - share nothing RO

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 大家好,这里是DB吐槽大会,第3期 - share nothing RO

背景


1、产品的问题点

  • 每增加1个从库或只读实例就需要增加一份数据拷贝
  • 复制时需要传输所有主库产生的WAL或逻辑增量日志

2、问题点背后涉及的技术原理

  • 通过全量的数据文件拷贝+逻辑或物理的增量复制创建从库, 每一个从库都是一份完整的拷贝.

3、这个问题将影响哪些行业以及业务场景

  • 读压力很大, 并且需要超过1个只读实例才能满足读请求诉求的业务. 例如偏重计算(业务逻辑放在数据库中)的业务. 基于推荐算法的短视频、社交、内容、电商等C端业务.
  • 主库使用了主从HA架构后, 依旧有只读实例诉求的场景. 这个几乎是通用的, 所有业务都被命中.

4、会导致什么问题?

  • 昂贵的只读实例, 不仅要计算资源, 还需要同样的存储资源.
  • 每个只读实例都需要与主库建立连接复制增量WAL或逻辑日志, 需要消耗主库的网络和IO资源, 只能创建有限的只读实例个数.
  • 只读实例可能恢复慢, 特别是mysql基于逻辑增量的架构, 事务结束后才能apply日志, 大事务对数据库延迟影响较大.
  • 主库发生HA后, 如果新主库的日志量偏少, 只读库将无法成为新主库的从库, 需要重建, 导致新一轮的全量数据拷贝. 影响业务.

5、业务上应该如何避免这个坑

  • 建立很多只读实例的客户, 成本问题无解
  • 采用级联模式复制, 减少每个节点的下游节点个数.
  • 逻辑复制慢的问题, 可以考虑PG的物理流复制, 延迟和事务大小无关
  • 主库发生HA后如果只读库不能成为新主库的从库, 可以使用pg_rewind来避免需要拷贝全量数据.

6、业务上避免这个坑牺牲了什么, 会引入什么新的问题

  • 级联模式增加了管理成本, 跳数增加, 延迟增加. 还有上游发生问题时, 整个级联下游全部受到影响.
  • 物理流复制虽然延迟低, 但是apply可能与query本身产生冲突, 需要使用feedback来减少上游vacuum铲掉下游以来的tuple, 但是又会带来膨胀、vacuum无用功等增加cpu和io消耗的问题.
  • pg_rewind增加了管理成本. 普通用户不会用.

7、数据库未来产品迭代如何修复这个坑

  • Oracle RAC
  • PolarDB



相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
关系型数据库 PostgreSQL Docker
harbor-db重启报错:initdb: error: directory "/var/lib/postgresql/da..
harbor-db重启报错:initdb: error: directory "/var/lib/postgresql/da..
488 1
|
XML SQL Ubuntu
freeswitch 优化db
freeswitch 优化db
|
SQL 关系型数据库 数据库
|
安全 NoSQL MongoDB
【安装MongoDB报错】mkdir: /data/db: Read-only file system
在安装MongoDB时,需要创建一个/data/db文件夹用来作为默认数据库目录。 但是因为Mac电脑默认是开启安全模式的,不能在根目录下面随便创建删除文件夹。所以我们创建的时候,会报这个错误mkdir: /data/db: Read-only file system,
703 0
|
存储 传感器 监控
【DB吐槽大会】第1期——PG MVCC
大家好,这是DB吐槽大会,第1期 - PG MVCC
12417 0
|
SQL 关系型数据库 Java
【DB吐槽大会】第5期 - PG local memory
大家好,这里是DB吐槽大会,第5期 - PG local memory
|
存储 缓存 关系型数据库
【DB吐槽大会】第6期 - PG Double Cache
大家好,这里是DB吐槽大会,第6期 - PG Double Cache
|
存储 关系型数据库 MySQL
|
SQL 分布式数据库 数据库