直播视频:


(点击图片查看视频)

幻灯片下载地址:https://oss-cn-hangzhou.aliyuncs.com/yqfiles/1138a8a3aff5f63b426162e265d98375.pdf


5月27日云栖社区《云数据库RDS for PostgreSQL最佳实践》的直播分享顺利结束,来自阿里云的高级技术专家德歌与大家分享阿里云云数据库PostgreSQL的最佳技术实战,包括上云实战、数据迁移与同步、阿里云RDS相关周边组件用法、插件使用等内容。直播中德歌还就部分操作在线进行了演示。本次视频直播的整理文章、视频、幻灯片整理完毕,如下内容。

上云实践

在上云之前,首先需要评估RDS的规格,这是因为线下使用的硬件可能与线上的硬件不能一一对应,并且线上的RDS可能还做了一定的优化。在评估RDS规格的时候,需要考虑以下几个方面:

  • 可用区:

    • 尽量与应用服务器在同一可用区;
    • 否则只能通过公网地址访问。
  • 数据库版本:根据业务需求选择,建议选择新版本;
  • 网络:与应用服务器在同一VPC,或者都在经典网络,否则只能通过公网地址访问;
  • 容量:根据实际的需求购买,最后留有足够余量(用于存储XLOG,已经运行SQL时可能产生的临时文件)。余量建议不低于1GB、同时不低于实际数据空间的20%;
  • 内存:建议大于活跃数据的实际占用空间;
  • CPU:根据购买的内存规格设定;
  • IOPS:根据购买的内存规格设定。

图一 RDS PG性能评测与瓶颈分析

对于评测所选的RDS规格是否可以满足业务需求,可采用TPC-B、TPC-C以及自定义评测模型对RDS PG进行性能评测与瓶颈分析。其中自定义模型评测中,可以使用Sysbench测试阿里云RDS PostgreSQL性能或者通过并行COPY 或写大对象测试网络吞吐率。

图二 TPC-B实例诊断

在上云实践中,数据的迁移也至关重要,数据的迁移主要分为同构全量迁移、同构增量迁移、异构全量迁移、异构增量迁移四种方式。

同构全量迁移

图三 同构全量迁移


从用户端PostgreSQL 迁移到阿里云 PostgreSQL主要有两种方法:第一种方法是在云端数据库创建与线下数据库一致的用户、数据库名。采用pg_dump 依次导出线下数据库,然后再采用pg_restore 依次还原线下数据库,整个迁移过程数据是不落地的,是通过管道过去的;另一种方法是借助阿里云提供的数据迁移工具DTS,通过简单的操作即可完成线上线下的数据迁移。

同构增量迁移

如果是用户端PostgreSQL 迁移到 阿里云 PostgreSQL的同构增量迁移,可以使用xDB增量迁移插件,该插件由enterprisedb默认提供。

异构全量迁移

如果线下是一个Oracle或者SQL Server数据库,可以采用DTS将数据迁移到线上的 PostgreSQL。

异构增量迁移

图四 异构增量迁移


异构增量的迁移实现的方法比较多。首先可以使用xDB增量迁移插件,该插件支持从Oracle、SQL Server迁移到EDB和PostgreSQL,反之同样可行。除此之外,Oracle GoldenGate(oracle的商业产品)和Symmetricds(基于触发器实现的开源软件)同样可支持异构增量迁移。

RDS PG使用最佳实践

接下来将介绍RDS PG使用最佳实践,主要包括备份与恢复、RT的优化、插件用法、参数最佳实践、安全与审计、规格升降级、数据分片的用法、读写分离、一主多备、异地容灾、诊断实践、事件通知等。

备份与恢复

图五 备份与恢复


RDS的备份与恢复可在PG的管理控制台进行实现,使用者只需将需要备份的时间点等调度信息在管理控制台配置好之后,就可以自动地在后台实现全量以及归档的备份。备份恢复到任意时间点的操作也很简单,只需要在控制管理台中创建一个临时实例,并输入需要恢复到的时间点即可。但有一点值得注意的是,如果将线上的数据库恢复到某个具体的时间点,首先需要创建一个临时实例,然后再从该临时实例中当时数据库中的数据导入到线上数据库中,临时实例是目前无法替换线上的数据库的。

RT的优化

一个请求的RT大约在2ms左右,因此网络的RT会严重影响系统的性能,比如在几条SQL语句的RT就可以达到十几毫秒,而由这几条SQL语句组成的事物在数据库中执行时间仅需1ms甚至更短的时间。针对这种情况,可以采用UDF进行RT的优化,用户自己将业务逻辑下降到数据库层面处理,充分地利用数据库的计算能力,以减轻网络延迟带来的瓶颈。

插件用法

PostgreSQL可以查询当前RDS PG版本支持的插件名,具体的SQL语句见下图所示。创建插件的过程也很简单,只需要采用create extension+插件名的方式即可创建对应的插件。

图六 插件用法


具体的插件用法,使用者可以参看插件对应的手册进行操作。这里简单介绍两种插件:

  • auto_explain 插件用法:用户可以通过此插件查看某些SQL语句在执行过程中是否出现异常;
  • pg_hint_plan 插件:该插件是一个强制用户使用用户提供的执行计划的插件。

安全与审计

图七 安全和审计


用户可以登陆RDS管理控制台来设置安全和设计,其中通白名单为允许连接数据库的来源IP;同时SQL设计也是需要用户主动开启的,开启之后可以看到数据库之间的每条SQL语句。

规格升降级

用户可登陆RDS管理控制器查看基本信息和变更配置,完成规格升降级。

分布式用法

图八 分布式用法


尽管目前RDS PG是多节点配置,但是整体对用户提供访问服务的还是一个节点,这一个节点就有可能成为整个系统的瓶颈。虽然RDS PG现在还不支持分布式,但对于用户而言,实现分布式其实很简单。用户通过在ECS上安装分布式中间件即可实现分布式用法。比如说用户购买了8个RDS,然后在中间件上配置好,然后就可以将数据均衡地打散到8个RDS中。目前支持的中间件包括:plproxy、oneproxy for pgsql、pgpool-II、pg_shard、citusdb、FDW。

读写分离

由于目前RDS尚未开放只读节点,用户在做读写分离时,需要将RDS同步一份到ECS上,然后再通过中间件来实现读写分离。读写分离的插件也相当多,包括Pgpool-II、Oneproxy for pgsql和Pg-jdbc,可以实现用户自定义函数、黑名单、白名单的配置。

一主多备

目前,RDS PG内部一主多备功能正在建设。用户如果自建RDS PG备库有两种方法:

  •    自建RDS PG逻辑备库:用户可以使用RDS PG提供的alidecode插件,在异地创建RDS PG的逻辑备库;
  •    自建RDS PG的物理备库:如果用户需要构建一个和RDS PostgreSQL一模一样的备库,则可以通过流复制或者归档来完成。

异地容灾的操作类似于一主多备,因此此处不再赘述。

诊断实践

图九 诊断实践


用户可以登录RDS管理控制台,进行设置报警阀值、设置监控间隔和查询慢SQL;同时控制台也提供了查看日志的接口;此外,还可以使用auto explain和debug 分别实现查看当前的执行计划是否异常和打印SQL的parse, rewritten, plan日志,分析计划相关的问题。

事件通知

通过在管控平台设置好阀值,接收通知,同时当数据库可用性状态变化时也会自行通知。

阿里云RDS相关周边组件用法

图十 阿里云RDS相关周边组件用法

 

阿里云RDS相关周边组件中最为重要的就是OSS(对象存储),OSS的使用方法较多,其中比较重要的一点就是实现数据的冷热分离。下面一个实例来展示下其实现过程:用户购买RDS PG之后,会连续不断地有数据插进来,并且不断地有数据变成冷数据,新插进来的数据成为热数据。如果将所有的数据都保留在线上的PG里,数据库会越来越大,但是这些冷数据的访问频率并不高。针对该类应用场景,阿里RDS提供了一个名为OSS_fdw的插件,可以将历史数据(冷数据)导入OSS中,然后通过建web表的方式直接读取之前导入的历史数据。经过上述操作可以实现冷热数据分离,热数据放在关系数据库中,冷数据放在OSS中,需要使用冷数据时,可以将其导入一个临时库中,也就是一个预热过程,预热之后和访问本地数据相同。

另外一个就是管理,管理主要是冷数据和OSS对象存储的URL对应关系,包括时间片。这些对应关系可以存储在RDS PG中,用户只需维护好URL的元数据信息,定时将冷数据导出至OSS,实现冷热数据的分离。应用在访问RDS时,访问的是热数据,如果访问冷数据,需要一个过读元数据,然后将对应的OSS导入到RDS PG中的预热过程。性能上,每天新增的数据插入OSS,对于每个实例,可以实现100MB/s速度。

此外,PostgreSQL也可以和 MongoDB结合使用,将 MongoDB作为一个计算单元,PostgreSQL 作为 一个SQL的接口来实现MongoDB BI功能。

数据同步

图十一 数据同步


数据同步又分为RDS PG到线下单向同步、线下到RDS PG单向同步、线上线下双向同步三种。

RDS PG到线下单向同步

从RDS PG到线下单向同步有两种方式,一是通过使用RDS PG提供的alidecode插件,在异地创建RDS PG的逻辑备库。在用户端的数据库可以是和RDS PG不一样的数据库,只同步部分数据;另一种方式是建立完全一致的物理备库。该过程需要申请一定的权限,可以在线下做一个云端数据库的镜像。

线下到RDS PG单向同步

图十二 线下到RDS PG单向同步

如果线下数据库版本大于等于9.4,就可以使用 Lgical Decode实现;如果版本小于9.4,可以采用增量的数据同步,如xDB、Goldengate、 Smmetricds。

线上线下双向同步

线上线下双向同步用到的技术与之前的提到的技术类似,如xDB和Logical Decode都是支持双向同步的。

文章内所提到的所有案例的详细介绍文章链接如下:

 

TPC-C 测试软件

HammerDB:http://www.hammerdb.com/document.html

OLTP 性能评测

https://yq.aliyun.com/articles/35517

https://github.com/digoal/sysbench

PostgreSQL

网络延迟 瓶颈定量分析:https://yq.aliyun.com/articles/35176

同构全量迁移:

方法一:https://help.aliyun.com/document_detail/rds/rds_qs_pg/rds_qs_pg_00007.html

方法二:https://help.aliyun.com/knowledge_list/8314900.html

同构增量迁移

xDB:https://dts.console.aliyun.com/

异构全量迁移

https://help.aliyun.com/knowledge_list/8314900.html

https://dts.console.aliyun.com/

RT的优化

https://yq.aliyun.com/articles/35176

https://yq.aliyun.com/articles/35517

插件用法

auto_explain :http://www.postgresql.org/docs/9.5/static/auto-explain.html

pg_hint_plan:https://yq.aliyun.com/articles/7255

自建RDS PG的物理备库

https://yq.aliyun.com/articles/7255

OpenAPI

https://help.aliyun.com/document_detail/rds/OpenAPI-manual/RDS-OpenAPI-Invoke/rquest-structure.html

关于分享者 

德歌 PostgreSQL中国社区发起人、阿里云飞天八部数据库技术组技术专家


相关系列文章:

  • 第十一期:《“技术女神”清宵:云存储之基本技巧和上云实践》
  • 第十期:《虎嗅:四年覆盖9成互联网企业中高层的网站架构演变》
  • 第九期:《微博:一亿访问量背后的分钟级服务器扩容》
  • 第七期:《美柚:最懂女性App背后的混合云架构与大数据服务》
  • 第六期:《涂鸦科技:支撑从零暴增数十亿数据的背后,竟无专职运维!》
  • 第五期:《千万级用户App小咖秀:服务端架构设计分享》
  • 第四期:《空格App亿元A轮融资背后:云上多场景技术架构实践与经验》
  • 第三期:《国内在线预订模式开创者驴妈妈旅游网:如何在混合云上搭建产品数据分析系统》
  • 第二期:《游族网络:如何运维千台以上游戏云服务器》
  • 第一期:《淘宝丁奇:如何解决影响MySQL使用的9大问题》

德歌:阿里云RDS PG最佳实践相关推荐

  1. (新零售)商户网格化运营 - 阿里云RDS PostgreSQL最佳实践

    原文地址 背景 伟大的马老师说: "纯电商时代很快会结束,未来的十年.二十年,没有电子商务这一说,只有新零售这一说,也就是说线上线下和物流必须结合在一起,才能诞生真正的新零售" 线 ...

  2. 时间、空间、对象 海量极速多维检索 - 阿里云RDS PostgreSQL最佳实践

    标签 PostgreSQL , 时间 , 空间 , 对象属性 , 多维度检索 , 海量 , 空间索引 , 数据分区 , 块级索引BRIN , 多级索引 , GIN倒排索引 , JSON索引 , 多列索 ...

  3. 海明距离mysql查询_海量数据,海明距离高效检索(smlar) - 阿里云RDS PosgreSQL最佳实践-阿里云开发者社区...

    标签 PostgreSQL , 海明距离 , smlar , GiST索引 背景 SimHash的应用 通过上面的步骤,我们可以利用SimHash算法为每一个网页生成一个向量指纹,那么问题来了,如何判 ...

  4. Greenplum roaring bitmap与业务场景 (类阿里云RDS PG varbitx, 应用于海量用户 实时画像和圈选、透视)

    摘要: 标签 PostgreSQL , Greenplum , varbitx , roaring bitmap , pilosa , varbit , hll , 多阶段聚合 背景 roaring ...

  5. 【转载】破解物联网落地困境-阿里云硬件接入最佳实践

    破解物联网落地困境-阿里云硬件接入最佳实践 <剑指物联>第五期中,阿里云IoT事业部总经理库伟曾提到物联网实施过程中的困境.比如在设备厂家层面:智能设备连接不稳定,网络安全差:在ISV层面 ...

  6. 高德地图基于阿里云MaxCompute的最佳实践

    原文链接:点击打开链接 摘要: 云计算带来的变革不言而喻,作为一种新型的IT交付模式,切实为企业节省IT成本.加快IT与企业业务结合效率.提升创新能力.加强管理水平以及增强系统本身的可靠性等方面提供巨 ...

  7. 阿里云迁移工具推荐最佳实践:Xen虚拟化迁移到阿里云

    1.迁移需求分析 Xen虚拟化是早期半虚拟化技术,现有部分本地还在使用,像Citrix公司开发的XenServer虚拟化管理平台,底层就是运用的xen虚拟化技术底座,但是目前市场使用比较多的还是开源K ...

  8. PgSQL · 应用案例 · 阿里云 RDS PostgreSQL 高并发特性 vs 社区版本

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 背景 进程模型数据库,需要为每个会话指派独立的进程与之服务,在连接数非常多,且大都是活跃连接时,进程调度浪费或引入的开 ...

  9. MSSQL · 最佳实践 · RDS SDK实现数据库迁移上阿里云RDS SQL Server

    title: MSSQL · 最佳实践 · RDS SDK实现数据库迁移上阿里云RDS SQL Server author: 风移 摘要 至今,我们完成了SQL Server备份还原专题系列七篇月报分 ...

  10. 阿里云运维架构实践秘籍 ——乔帮主的云技术实践绝学:降云十八掌

    传统IT正在向DT变革.未来,云计算将成为互联网的基础设施.作为技术过来人,亲历了中国互联网时代的发展.云计算云时代的发展,以及技术人员眼中云计算所带来的技术变革. 云对技术架构的变革 物理机体系阶段 ...

最新文章

  1. iOS ---网络请求封装(自动缓存与手动缓存)
  2. Jmeter干货 不常用却极其有用的几个地方
  3. 计算机原理基础知识pdf,计算机原理第一章.pdf
  4. 百度地图 key_Android百度地图导航的接入(包含驾车、公交、步行)
  5. 清除webbrowser cookie/session的6种方法
  6. vue-cli详细教程
  7. leetcode 455. 分发饼干 思考分析
  8. Android dp转px,sp转px
  9. 从数据类型 nvarchar 转换为 numeric 时出错_JS入门篇(三):javascript的数据类型详解...
  10. Java基础---API概述---常用类(Object类/String类)---equals和==
  11. 单行溢出隐藏没生效_至今没搞懂,为什么这个缸这么火?
  12. SQL 实战教程(八)
  13. 图解clientWidth,offsetWidth,scrollWidth,scrollTop
  14. 计算机专业学ROSTCM,ROST-CM软件分词和词频统计用法体验
  15. TwinCAT3中台达A3伺服使用
  16. NSIS打包工具用法介绍与NSIS相关软件下载
  17. 各种多媒体软件安装教程
  18. 【Springboot】——@Deprecated
  19. ubuntu16.04Django环境的搭建
  20. 软件质量的定义以及相关理论

热门文章

  1. 平面三角形外心坐标推导
  2. 第3章 网站评价准则和色彩心理学
  3. 差分 线宽 线距_需要做阻抗的信号线时应该怎样计算线宽、线距规则?
  4. matlab 使用textscan读取带文本的csv文件
  5. 数据读取的常见函数以及区别(fopen、open、textscan、fwrite、fread函数)
  6. matlab 行 读取文件 跳过_matlab-Textscan在行首跳过所需的空白
  7. AS更换背景主题以及背景图片
  8. Excel表的标题栏锁定
  9. 2021-03-09
  10. xp访问贡享显示指定服务器,XP访问Win10共享打印机指定的网络名不再可用解决方法...