1、CynosDB for PostgreSQL一主多读架构孙旭腾讯云 高级工程师SPEAKER孙旭腾讯云 高级工程师10年数据库内核研发经验,熟悉PostgreSQL、Teradata数据库内核,熟悉数据库的查询优化、执行、事务并发以及存储等子系统;对分布式数据库有深入的研究和研发经验。目前在腾讯云从事CynosDB数据库研发工作。内容CynosDB for PostgreSQL架构CynosDB for PostgreSQL关键设计CynosDB for PostgreSQL一主多读架构为什么需要CynosDB传统数据库在云上面临的问题资源利用率低扩展能力不足资源规划难备份难CynosDB解决
2、思路计算存储分离:计算资源弹性调度能力日志下沉以及异步回放:减少网络IO共享分布式存储:资源弹性扩展后台持续日志备份CynosDB for PostgreSQL架构PostgreSQL主实例CynosStore ClientPostgreSQL读实例CynosStore ClientStorage NodeStorage NodeStorage NodeCynosStore集群管理服务对象存储写日志读页面读页面CynosDB-云原生数据库日志下沉核心架构设计日志异步回放多版本读(同步)CynosDB for PostgreSQL架构-关键设计backend日志buffer日志发送日志发送Rep
3、lica日志异步写入日志并行插入日志写入buffer日志链日志链日志合并日志合并数据原子修改(MTR)MTR(Minimal Transaction Record)CynosStoreProcessCynosStore ClientbackendCynosStore ClientbackendCynosStore ClientPostgreSQL日志下沉、异步回放日志CynosStoreVDL(Volume Durable LSN)CPL(Consistency Point LSN)日志回收最小读点(Minimal Read Point LSN)CynosDB for PostgreSQL架构
4、-关键设计多版本读(同步)RPL(Read Point LSN)任何一个VDL都可以是一个RPL202530405030页面ARead(A,30)50Read(A,50)MRPL=30日志回收一主多读传统主备模式的问题横向扩展读能力提升数据库的可用性多读(Replica)优势创建新备需要拷贝数据:额外存储资源备机切换和启动需要恢复大量日志:慢收到日志需要写磁盘:慢PostgreSQLmasterPostgreSQLstandbyXLOG传统PostgreSQL主备模式仍有缺点解决BufferPinLock冲突一主多读-架构DBCynosStoreProcessDBCynosStore Proc
5、essBlock Journal ListJournal Bufferjournal、运行信息、FSMMinXid、MRPLData BufferJournal ApplyPostgreSQL(RW)PostgreSQL(RO)Replica本地不存储数据Repica并行恢复日志,不落盘COSFSM备份FSM到COS,备份配置文件到CynosStore核心架构设计CynosStore扩展系统读能力、快速主备切换Repica多版本数据Buffer本地存储本地存储Journal SenderJournal SenderJournal Sender日志buffer持久化的日志Journal Rece
6、iver日志buffer合并的日志接收到的日志运行信息运行时内存:事务列表,锁等数据BufferJournal Apply1.nPostgreSQL(RO)DB EngineCynosStore ProcessCynosStore ProcessDB EnginePostgreSQL(RW)Block-Journal HTAB页面不在内存,跳过日志合并PostgreSQL(RO)PostgreSQL(RO)journal多个读节点、并行日志恢复一主多读-架构CynosStore Process实现连接管理、日志管理一主多读-架构DB EngineCyno