《阿里云(谢桂起)最新版RDS PostgreSQL数据迁移与版本升级全攻略(1).pdf》由会员分享,可在线阅读,更多相关《阿里云(谢桂起)最新版RDS PostgreSQL数据迁移与版本升级全攻略(1).pdf(20页珍藏版)》请在三个皮匠报告上搜索。
1、PostgreSQL中文社区第13届PostgreSQL中国技术大会聚焦云端创新汇聚智慧共享谢桂起阿里云RDS PostgreSQL数据迁移与版本升级全攻略PostgreSQL中文社区PostgreSQL中文社区目录contentsRDS PostgreSQL上的数据迁移和版本升级工作原理02深入了解PostgreSQL的复制与升级01数据迁移与版本升级示例0301深入了解PostgreSQL的复制和升级PostgreSQL中文社区PostgreSQL中文社区PostgreSQL复制演进及各大版本差异2001,PostgreSQL 7.1:write-ahead log 被引入,解决事务提交前
2、必须 fsync 的问题2005,PostgreSQL 8.0:支持 wal 文件归档以及 Point-In-Time Recovery2010,PostgreSQL 9.0:Streaming Replication:支持高效低延迟的主备复制Hot Standby:支持备节点执行只读查询2014,PostgreSQL 9.4:Logical Decoding:支持数据库的修改以自定义的格式传输Replication Slots:支持主节点保留未被备节点应用的 wal 文件2017,PostgreSQL 10.0:pgoutput插件发布逻辑复制支持发布/订阅模型2017-至今:PG14:逻辑
3、复制支持流复制PG15:逻辑复制支持两阶段事务PG16:逻辑复制支持从备节点复制PG17:1.支持原生 failover slot2.大版本升级保留 slot 和 subscription3.PostgreSQL中文社区物理复制的原理物理复制:使用精确的块地址进行逐字节复制,把对文件块的改动发送到接收端物理复制的流程流程:(1)initdb初始化并启动主节点(2)pg_basebackup备份并启动备节点(3)备节点walreceiver进程启动(4)备节点walreceiver进程发送连接请求(5)主节点接收请求并启动walsender进程(6)主备节点进行握手(7)walreceiver不
4、停接收回放数据,追赶主节点(8)主备数据同步完成,建立流复制特点:1.实例级别数据复制2.数据强一致3.无DDL限制,无对象类型限制4.实时同步,无大事务限制5.primary和standby必须相同大版本6.standby只能读不能写7.不支持数据库级别、schema级别、部分表级别复制PostgreSQL中文社区逻辑复制的原理逻辑复制:相对于物理复制的概念,把对数据的改动(一般是修改前/修改后的行)发送给接收端逻辑复制的架构存量数据复制:1.Replication launcher进程为每个subscription启动Apply worker进程2.Apply worker进程为subsc
5、ription中的每个表启动Table Sync worker进程3.Table Sync worker进程在publication端创建对应的slot并同步存量数据增量数据复制:1.客户端在publication端写入数据,publication端的Backend进程将数据写入缓冲区并将增量数据写入到WAL中2.WAL Sender进程从WAL中获取增量数据,并通过指定的逻辑解码插件将增量数据解码之后发送给接收端3.Apply worker进程获取到增量数据并进行应用PostgreSQL中文社区逻辑复制的原理逻辑解码整体流程:1.Wal Sender进程读取WAL记录并使用rmgr模块解析,
6、并将解析好的数据放入内存中的RecorderBuffer2.当解析到commit/abort时,将对应的事务通过预先设定的逻辑解码插件解析和输出3.PG14及以上支持流式逻辑复制,通过在创建subscription时指定streaming=on开启流式逻辑复制,支持publication端将进行中的事务发送给subscription端常见逻辑解码插件:test_decoding:社区内置的逻辑解码示例插件,支持将WAL中的增量数据解码成文本数据pgoutput:社区内置的逻辑解码插件,也是PG原生逻辑复制的默认插件,从PG10版本开始引入pglogical:由2ndQuadrant团队开发和维