【云小课】【第42课】RDS for PostgreSQL插件介绍

举报
数据库的小云妹 发表于 2022/04/18 11:31:30 2022/04/18
【摘要】 本文介绍RDS for PostgreSQL支持的插件及不同插件的创建、删除或使用方法。PostgreSQL插件简介PostgreSQL是开源数据库中经典的大型关系型数据库之一,它不仅具备经典关系型数据库的功能,而且在不断发展。PostgreSQL的发展不仅受到了很多基于PostgreSQL外部应用的影响,而且发展出了更多基于PostgreSQL的应用,例如PostGIS(GIS领域中重要组...

云小课必用.png

本文介绍RDS for PostgreSQL支持的插件及不同插件的创建、删除或使用方法。

PostgreSQL插件简介

PostgreSQL是开源数据库中经典的大型关系型数据库之一,它不仅具备经典关系型数据库的功能,而且在不断发展。PostgreSQL的发展不仅受到了很多基于PostgreSQL外部应用的影响,而且发展出了更多基于PostgreSQL的应用,例如PostGISGIS领域中重要组件)。从技术角度讲,PostGISPostgreSQL的一个扩展(extension),即插件。像PostGIS这样的插件已经在计算机相关的领域中都得到不同程度的应用,它成为PostgreSQL功能延展性的主要特点。

PostgreSQL插件的功能不仅体现在新增复杂的数据类型、索引等数据的基本功能上,这些基本功能也是GIS领域所特别需要的,并且PostgreSQL的插件可以完成包括分布式、异构数据访问等的各种高级功能。这使得PostgreSQL数据库不仅仅是一个传统的经典关系型数据库,并且通过插件的扩展功能,它完全可以满足今天互联网对于大数据应用的需求。

RDS for PostgreSQL插件列表

RDS for PostgreSQL和社区版PostgreSQL一样,也支持通过插件,实现更多的扩展功能。当前RDS for PostgreSQL支持的插件如下表所示:

插件名称

PostgreSQL 9.5

PostgreSQL 9.6

PostgreSQL 10

PostgreSQL 11

PostgreSQL 增强版

PostgreSQL 12

PostgreSQL 13

address_standardizer

2.5.1

2.5.1

2.5.1

2.5.1

2.5.1

3.0.0

3.1.0

address_standardizer_data_us

2.5.1

2.5.1

2.5.1

2.5.1

2.5.1

3.0.0

3.1.0

amcheck

1.1

1.1

1.2

1.2

auto_explain

2

2

2

2

2

2

2

bloom

1.0

1.0

1.0

1.0

btree_gin

1.0

1.0

1.2

1.3

1.3

1.3

1.3

btree_gist

1.1

1.2

1.5

1.5

1.5

1.5

1.5

citext

1.1

1.3

1.4

1.5

1.5

1.6

1.6

cube

1.0

1.2

1.2

1.4

1.4

1.4

1.4

dblink

1.1

1.2

1.2

1.2

1.2

1.2

1.2

dict_int

1.0

1.0

1.0

1.0

1.0

1.0

1.0

dict_xsyn

1.0

1.0

1.0

1.0

1.0

1.0

1.0

earthdistance

1.0

1.1

1.1

1.1

1.1

1.1

1.1

fuzzystrmatch

1.0

1.1

1.1

1.1

1.1

1.1

1.1

hll

2.12

2.12

2.12

2.12

2.12

2.14

2.15.1

hstore

1.3

1.4

1.4

1.5

1.5

1.6

1.7

icu

1.0

1.0

1.0

1.0

intagg

1.0

1.1

1.1

1.1

1.1

1.1

1.1

intarray

1.0

1.2

1.2

1.2

1.2

1.2

1.3

isn

1.0

1.1

1.1

1.2

1.2

1.2

1.2

ltree

1.0

1.1

1.1

1.1

1.1

1.1

1.2

mysql_fdw

2.5.5

2.5.5

2.5.5

2.5.5

oracle_fdw

2.1.0

2.1.0

2.1.0

2.2.0

2.3.0

orafce

3.8.0

3.8.0

3.8.0

3.8.0

0

3.8.0

3.14.0

pageinspect

1.3

1.5

1.6

1.7

1.7

1.7

1.8

passwordcheck

2

2

2

2

2

2

2

pg_bigm

1.2_20200228

1.2_20200228

1.2_20200228

1.2_20200228

pg_buffercache

1.1

1.2

1.3

1.3

1.3

1.3

1.3

pg_cron

1.2.0

1.3.0

pg_freespacemap

1.0

1.1

1.2

1.2

1.2

1.2

1.2

pg_hint_plan

1.1.5

1.2.0

1.3.0

1.3.5

1.3.5

1.3.7

1.3.7

pg_jieba

1.1.0

1.1.0

1.1.0

1.1.0

1.1.0

1.1.0

2.0.1

pg_pathman

1.5.8

1.5.8

1.5.8

1.5.8

1.5.8

1.5.12

1.5.12

pg_prewarm

1.0

1.1

1.1

1.2

1.2

1.2

1.2

pg_repack

1.4.6

1.4.6

1.4.6

1.4.6

1.4.6

1.4.6

1.4.6

pg_roaringbitmap

0.5.2

0.5.2

0.5.2

0.5.2

pg_stat_statements

1.3

1.4

1.6

1.6

1.6

1.7

1.8

pg_trgm

1.1

1.3

1.3

1.4

1.4

1.4

1.5

pg_visibility

1.2

1.2

1.2

1.2

pgcrypto

1.2

1.3

1.3

1.3

1.3

1.3

1.3

pglogical

2.3.3

2.3.3

2.3.3

2.3.3

pg_profile_pro

1.0

pgrouting

3.1.0

3.1.0

3.1.0

3.1.3

pgrowlocks

1.1

1.2

1.2

1.2

1.2

1.2

1.2

pg_sql_history

1.0

1.0

1.0

1.0

1.0

1.0

1.0

pgsql-ogr-fdw

1.0.12

1.0.12

1.0.12

1.0.12

pgstattuple

1.3

1.4

1.5

1.5

1.5

1.5

1.5

plpgsql

1.0

1.0

1.0

1.0

1.0

1.0

1.0

plperl

1.0

1.0

1.0

1.0

plproxy

2.10.0

2.10.0

2.10.0

2.10.0

plv8

2.3.15

2.3.15

2.3.15

2.3.15

postgis

2.5.1

2.5.1

2.5.1

2.5.1

2.5.1

3.0.0

3.1.0

postgis_raster

集成到postgis

集成到postgis

集成到postgis

集成到postgis

集成到postgis

3.0.0

3.1.0

postgis_sfcgal

2.5.1

2.5.1

2.5.1

2.5.1

2.5.1

3.0.0

3.1.0

postgis_tiger_geocoder

2.5.1

2.5.1

2.5.1

2.5.1

2.5.1

3.0.0

3.1.0

postgis_topology

2.5.1

2.5.1

2.5.1

2.5.1

2.5.1

3.0.0

3.1.0

postgres_fdw

1.0

1.0

1.0

1.0

1.0

1.0

1.0

postgres-decoderbufs

1.3.1

1.3.1

1.3.1

1.3.1

postgresql_anonymizer

0.7.1

0.7.1

0.7.1

0.7.1

q3c

2.0.0

2.0.0

2.0.0

2.0.0

rum

1.3.7

0

1.3.7

1.3.7

sslinfo

1.2

1.2

1.2

1.2

tablefunc

1.0

1.0

1.0

1.0

1.0

1.0

1.0

tds_fdw

2.0.1

2.0.1

2.0.1

2.0.1

2.0.2

test_decoding

2

2

2

2

2

2

2

timescaledb

0

1.3.2

1.3.2

1.3.2

1.3.2

1.7.0

2.1.0

tsm_system_rows

1.0

1.0

1.0

1.0

1.0

1.0

1.0

tsm_system_time

1.0

1.0

1.0

1.0

1.0

1.0

1.0

unaccent

1.0

1.1

1.1

1.1

1.1

1.1

1.1

uuid-ossp

1.0

1.1

1.1

1.1

1.1

1.1

1.1

wal2json

2.3

2.3

2.3

2.3

xml2

1.1

1.1

1.1

1.1

zhparser

1.0

1.0

1.0

1.0

1.0

1.0

1.0


1.png

  • 表中的数据均来源于PostgreSQL引擎各个版本,最新小版本支持的插件列表。
  • 您可以通过SELECT name FROM pg_available_extensions;查看当前实例支持的插件列表。如果当前实例的版本不支持某个插件,您可以将当前实例迁移至新版本实例,迁移方法请参考迁移方案概览
  • 使用mysql_fdw、oracle_fdw、pgsql-ogr-fdw、postgres_fdw和tds_fdw等需要跨数据库实例访问的插件时,需确保两个数据库实例的服务端IP必须在同一个VPC和子网内。
  • 具有公测权限的用户才可使用RDS for PostgreSQL 13,您可以提交工单申请。

创建RDS for PostgreSQL插件

1.png

  • RDS for PostgreSQL插件是数据库级生效,并不是全局生效。因此创建插件时需要在业务所在数据库上进行手动创建。
  • RDS for PostgreSQL的以下插件不需要通过手动创建或删除:
  • auto_explain
  • passwordcheck
  • pg_profile_pro
  • pg_sql_history
  • plpgsql
  • wal2json
  • test_decoding
  • RDS for PostgreSQL 11、RDS for PostgreSQL 增强版、RDS for PostgreSQL 12和RDS for PostgreSQL 13的最新小版本,支持以root用户通过社区的方式来创建(create extension)、删除(drop extension)插件。

1.  执行如下命令,以root用户连接数据库,以database1为例,并使用模板库template1创建需要支持插件的数据库。

# psql --host=RDS_ADDRESS --port=DB_PORT --dbname=database1 --username=root -c "create database DB_NAME template template1;"

1.png

  • RDS_ADDRESS为RDS实例的IP地址。
  • DB_PORT为RDS数据库实例的端口。
  • DB_NAME为需要创建插件的数据库名称。

回显如下信息,请输入root用户的密码。

Password for user root:

2.png

如果执行操作为:由普通用户user1创建的数据库db1,您需要先使用普通用户user1登录数据库db1(登录方式参考上述内容),然后执行如下命令将数据库db1的权限授予root用户。

GRANT ALL ON DATABASE db1 TO root;


示例:创建需要支持插件的数据库my_extension_db

# psql --host=192.168.6.141 --port=5432 --dbname=database1 --username=root -c "create database my_extension_db template template1;"

Password for user root: 
CREATE DATABASE

2.   以root用户连接需要支持插件的数据库,并创建插件。

# psql --host=RDS_ADDRESS --port=DB_PORT --dbname=DB_NAME --username=root -c "select control_extension('create','EXTENSION_NAME');"

1.png

  • RDS_ADDRESS为RDS实例的IP地址。
  • DB_PORT为RDS数据库实例的端口。
  • DB_NAME为需要创建插件的数据库名称。
  • EXTENSION_NAME为插件名称,请参见上表。


回显如下信息,请输入root用户的密码。

Password for user root:

示例:在数据库my_extension_db中创建postgis插件

# psql --host=192.168.6.141 --port=5432 --dbname=my_extension_db --username=root -c "select control_extension('create','postgis');"

Password for user root:  
      control_extension        
------------------------------ 
 create postgis successfully. 
(1 row)

删除RDS for PostgreSQL插件

1.png

  • RDS for PostgreSQL插件是数据库级生效,并不是全局生效。因此创建插件时需要在业务所在数据库上进行手动创建。
  • RDS for PostgreSQL的以下插件不需要通过手动创建或删除:
  • auto_explain
  • passwordcheck
  • pg_profile_pro
  • pg_sql_history
  • plpgsql
  • wal2json
  • test_decoding
  • RDS for PostgreSQL 11、RDS for PostgreSQL 增强版、RDS for PostgreSQL 12和RDS for PostgreSQL 13的最新小版本,支持以root用户通过社区的方式来创建(create extension)、删除(drop extension)插件。

执行如下命令,以root用户连接已创建插件的数据库,并删除插件。

# psql --host=RDS_ADDRESS --port=DB_PORT --username=root --dbname=DB_NAME -c "select control_extension ('drop','EXTENSION_NAME');"

1.png

  • RDS_ADDRESS为RDS实例的IP地址。
  • DB_PORT为RDS数据库实例的端口。
  • DB_NAME为需要创建插件的数据库名称。
  • EXTENSION_NAME为插件名称,请参见上表。

回显如下信息,请输入root用户的密码。

Password for user root:

示例:

# psql --host=192.168.6.141 --port=5432 --dbname=my_extension_db --username=root -c "select control_extension('drop','postgis');"

Password for user root: 
     control_extension      
----------------------------
 drop postgis successfully.
(1 row)

RDS for PostgreSQL插件说明

插件名称

插件说明

postgis

  • 创建postgis插件时,会同步创建以下插件:postgis、postgis_topology、fuzzystrmatch、postgis_tiger_geocoder、address_standardizer及address_standardizer_data_us。
  • 创建的postgis插件版本如果大于等于3.0.0,创建postgis插件时会同步创建postgis_raster插件。
  • 创建postgis插件时,主备实例的主机创建插件后,请先断开备机已经建立的连接,备机需要重新建立连接更新search_path设置。
  • 对于PostgreSQL增强版实例,创建postgis插件前,需要在控制台上将实例参数“empty_is_null”设置为“OFF”。

plpgsql

plpgsql 1.0插件支持提供SQL过程语言,默认内置安装,无需手动创建该插件。

earthdistance

安装earthdistance插件前,请先安装cube插件。

cube

如果已安装earthdistance插件,删除cube插件会导致earthdistance插件不可用。

timescaledb

RDS for PostgreSQL的timescaledb插件不支持tsl协议的特性,具体如下:

  • add_compress_chunks_policy
  • add_drop_chunks_policy
  • add_reorder_policy
  • alter_job_schedule
  • compress_chunk
  • decompress_chunk
  • drop_chunks
  • interpolate
  • locf
  • move_chunk
  • remove_compress_chunks_policy
  • remove_drop_chunks_policy
  • remove_reorder_policy
  • reorder_chunk
  • set_integer_now_func
  • time_bucket_gapfill

wal2json

该插件是逻辑复制插件,您可以直接使用该插件,不需要通过control_extension安装。

pg_profile_pro

因发现插件存在缺陷,现暂时关闭支持,我们会在缺陷修复后重新开放,给您造成不便敬请谅解。

pg_repack

pg_repack可以使用最小的锁资源来重新整理表和索引的物理页面,从而实现物理页面的碎片整理。相较于使用clustervacuumn full重写表,pg_repack不需要在整个处理期间持有表级排他锁,因此能提供近似的在线服务。具体操作请参考使用pg_repack插件

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。