Q1:刘海清,如何在从库备份,选择什么软件或者命令
1)生产建议使用从库进行备份。数据备份的方式有:pg_dump、pg_dumpall、pg_rman、barman、pg_basebackup等
2)日志备份可以通过:从库设置archive_mode = always方式实现日志记录。linux平台下可每日定时tar + rsync备份到远端
Q2:两个数据库如何实现增量同步?有更新逻辑时如何处理?
1)增量同步的方式有:
物理同步:基于流复制协议,将增量的redo回放到从库。如有更新逻辑,会将对应的redo回放,更新对应buffer
逻辑同步:同步模式设置为:logical。可使用内置的逻辑复制方式,即发布端创建PUBLICATION,订阅端创建SUBSCRIPTION。当然也可以使用wal2json等插件
2)物理同步是整库的复制,类似oracle的DG。逻辑复制可以针对具体表等
3)使用逻辑同步时建议表均有主键,以实现更好的性能
Q3:PG如何做基于流复制的跨数据中心(跨子网)自动故障转移解决方案,要求对应用透明,不用改连接串
1)跨数据中心想实现应用透明,不改连接串。通常应用访问DNS域名,具体解析到那个数据中心由高可用去判断
2)跨数据中心的自动故障转移方案:使用partoni(推荐)、pg_auto_failover
Q4:pg 9.4有这个逻辑复制订阅功能吗?
有,从PG 9.4开始的
Q5:PG如何从WAL日志解析出具体SQL?有什么好的工具推荐吗?
可以使用wal2json、alidecode、pgoutput、decoderbufs等
Q6:PG中,业务误操作后快速闪回具体某张表的某些操作?
开源版暂时没有闪回功能。可以基于流复制搭建专门的从库用于误操作恢复(基于时间点恢复),有快照可以加快恢复速度
Q7:PG的流复制在备库应用日志时,是直接修改数据文件的物理块吗?不用翻译成SQL重跑
物理复制不需要
Q8:刚老师讲的partoni做高可用可能会丢数据是在什么场景下?
建议从数据库端实现数据的一致性保障!
Q9:ECOX开源吗?
商业系统,可自行下载测试:
https://w3.ww-it.cn/Fileud/lists/cate_id/30Q10:siupan,pg_auto_failover是否可用于生产环境?
建议复查代码逻辑
Q11:repmgr里面的witness什么场景下必须用?没有好像也影响不大
通常用于仲裁节点,建议核查文档
Q12:pg的日志数据解析工具有么,支持kafka,或者直接到clickhouse类数仓的
1)日志解析:logical 模式plugin解析redo log
2)同步依赖CDC工具,详见:
正确的配置和使用 Debezium CDC 捕获、同步 PG 逻辑增量数据
https://github.com/digoal/blog/blob/master/202011/20201127_02.mdQ13:请问下从库的统计信息都是为零的,在从库执行计划是怎么生产的,会参考主库的统计信息吗?
1)正常情况下从库也是有统计信息的
2)可以核查是否是基于规则的,或者硬版本
Q14:PG可以用这个逻辑复制订阅功能吗?
理论上内核为PG 9.4以后的支持,详见GP文档官方文档
Q15:请问流复制一个主节点支持多少个从节点?
1)受限于max_wal_senders参数配置
2)受限于具体的硬件可用资源
Q16:个人在实现WAL逻辑复制工具时,通过创建复制槽时,获取快照,然后根据快照实现一些业务操作,但在业务操作出错时,如果获取先前的快照 名称,看文档上创建复制槽时的快照 仅在当时有效,再连接就获取不到了,请问有什么解决方案?
1)逻辑复制槽是全局的,与是否当前会话无关
2)快照可以export导出给其他会话。例如:备份数据。可当前启动事务并创建快照,然后创建逻辑复制槽,其他会话可正常使用该逻辑复制槽。当前会话导出全量数据。从而全量+增量备份
Q17:pg的从库 能支持延时从库么
支持的。可以在recovery.conf添加参数,例:recovery_min_apply_delay = '48h'
Q18:pg页内组织tuple,是不是很容易在页间移数据?
是的。如进行垃圾回收,会挪动组内tuple。详解可观看视频答疑
Q19:pg加索引可以加参数不锁表,加列可以不锁表吗
1)正常情况下(不需要rewrite table),加列是当即生效的。这个也是有区别于MySQL的
2)建议业务时间段内频繁使用的大表,选定闲时做加列操作