3年部署3000套PG实例的架构设计与踩坑经验( 七 )
Q&A
Q1:目前PosgreSQL的recovery功能与Oracle相比怎么样?
A:PostgreSQL本身的备份恢复功能很完备 , 支持恢复到指定时间点 , 使用也很方便 。 另外还有很多第三方的开源备份管理工具 , 比如pg_rman , barman等等 , 可以更加方便的管理备份 。 所以 , 我觉得PG的备份恢复不弱于Oracle这样的商业数据库 。
Q2:老师你们的高可用方案是怎样的?
A:我们基于PG原生的流复制搭建HA集群 , 对外提供VIP由普通的读写业务访问 。 只读业务在JDBC的URL上同时所有个节点的实际IP , 通过pgjdbc的多主机URL功能进行读写分离和读负载均衡 。
Q3:用PosgreSQL的时候 , 什么时候开始表分区?实现方式是怎样?
A:我们内部规范要求单表控制在1亿记录或10GB , 超过这个标准建议分区或分片 。 分区的话如果是PG10或以下版本 , 建议使用pg_pathman插件 。 PG10及以前版本的分区在分区数很大时性能会比较差 。 如果是更高的PG版本 , 特别是PG12以后就建议直接使用原生的分区了 。 分片我们使用Citus进行分库分表 。
Q4:请问你们的监控、自动化运维方面用了什么工具?
A:监控上我们主要用了Zabbix和Prometheus , 其他的日常运维方面主要使用的自研的工具和平台 。
Q5:3000+实例如何管理?有运维系统支撑下 , 需要多少人力?
A:我们主要运维工作都通过内部的运维平台支撑 , 实现了自动化 。 如果只是单纯PG的维护的话 , 我觉得10个人左右甚至更少是可以支撑的 。
Q6:MySQL如何迁移到PostgreSQL呢?有什么需要注意的事项吗?
A:我们用mysql_fdw进行迁移 , 这也是很方便的一种方式 。 关于迁移的注意事项 , 除了数据类型是适配 , 需要注意PG一定要使用UTF8编码 。 另外PG不支持0000这个特殊的Unicode字符 。 当然这个字符也没是什么实际意义 , 主要是有一些应用系统数据入库不规范 , 在以前的DB2或MySQL库里不小心写入的这个字符 , 后面迁移到PG的时候就需要规范化 , 把这个非法字符删掉 。
Q7:PosgreSQL使用内存方面有什么好的监控方式吗?经常会遇到连接爆内存不足 , 但实际上系统还有内存 。
A:可以使用OS级别的内存监控 , 比如可用内存量和swap , 一旦出现swap都需要及时处理 。 如果系统还有内存但连接爆内存不足就要具体问题具体分析了 , 需要参考当时出错的信息 。 建议把问题的复现方法提供出来 。
Q8:citus的高可用如何实现的呢?是每个worker节点都搭建一个从库吗 , cn节点是否也需要搭建一个从库?
A:Citus支持2种高可用方式 , 一种是多副本分片 , 由CN节点在写数据的时候同时写多个副本到不同worker上;另一个是使用PG原生的高可用 , 比如流复制 。
多副本的高可用方式 , 维护简单 , 但使用起来有一些限制 , 比如不支持Citus MX , 写入性能下降明显等等 , Citus官方手册上也认为多副本高可用只适合append only的业务场景 。
因此 , Citus更加通用的高可用方式是由底层PG做高可用 , 即CN节点以及下面每个Worker节点都采用流复制的方式部署一对主备机器 。
Q9:有没有一个搭建citus集群的具体实施说明呢?
A:Citus部署实施相关的问题 , 可以参考一下《Citus生产部署和维护.pptx》(https://pan.baidu.com/s/1eRQsdAa) 。
另外 , Citus集群里每个节点都是PG , 这些PG节点的参数配置以及HA部署和普通的PG是一样的 , 参考PG的相关资料即可 。
推荐阅读
- 气球|花3年搞出气球的一千种死法 这操作把我看害怕了
- 苹果|被苹果打入冷宫!最便宜iOS设备超3年没更新了 满满都是回忆
- 阿里巴巴|东数西算全面爆火 概念股大面积涨停 阿里、腾讯、字节、快手已大规模部署
- 散热器|猫头鹰公布2022产品线路图:推迟了3年白色风扇将于Q4发售
- 电动车|元宇宙内自己造实车 这事真能成!A00级电动车 2023年交付
- GDP|中国第一个12万亿GDP大省诞生!连续33年全国领跑
- iPhone|苹果5.7寸iPhone SE前瞻:最快2023年登场
- 智能手机|男子扒前女友眼皮手机转账15万 判决来了:获刑3年半
- AMD|国外装机商统计了3年数据发现:Intel处理器比AMD更稳定可靠
- 华为|时隔3年 华为发布第2代空气净化器:1499元 支持鸿蒙
