云服务器内容精选
-
测试工具 Sysbench是一款基于LuaJIT的,模块化多线程基准测试工具,常用于数据库基准测试。通过内置的数据库测试模型,采用多线程并发操作来评估数据库的性能。了解Sysbench更多详情,请访问https://github.com/akopytov/sysbench。 本次测试使用的Sysbench版本为1.0.12,具体的安装命令如下: #wget -c https://github.com/akopytov/sysbench/archive/1.0.12.zip #yum install make automake libtool pkgconfig libaio-devel postgresql-devel #unzip 1.0.12.zip #cd sysbench-1.0.12 #./autogen.sh #./configure --with-pgsql --without-mysql #make #make install RDS for PostgreSQL 12,RDS for PostgreSQL 13测试工具如下: Sysbench版本:1.0.18
-
测试模型 表结构 CREATE TABLE `sbtest` ( `id` INTEGER IDENTITY(1,1) NOT NULL, `k` INTEGER DEFAULT '0' NOT NULL, `c` CHAR(120) DEFAULT '' NOT NULL, `pad` CHAR(60) DEFAULT '' NOT NULL, PRIMARY KEY (`id`) ) 读写比 Sysbench默认提交的事务中包含18条SQL语句,具体执行语句和条数如下: 主键SELECT语句,10条: SELECT c FROM ${rand_table_name} where id=${rand_id}; 范围SELECT语句,4条: SELECT c FROM ${rand_table_name} WHERE id BETWEEN ${rand_id_start} AND ${rand_id_end}; SELECT SUM(K) FROM ${rand_table_name} WHERE id BETWEEN ${rand_id_start} AND ${rand_id_end}; SELECT c FROM ${rand_table_name} WHERE id BETWEEN ${rand_id_start} AND ${rand_id_end} ORDER BY c; SELECT DISTINCT c FROM ${rand_table_name} WHERE id BETWEEN ${rand_id_start} AND ${rand_id_end} ORDER BY c; UPDATE语句,2条: UPDATE ${rand_table_name} SET k=k+1 WHERE id=${rand_id} UPDATE ${rand_table_name} SET c=${rand_str} WHERE id=${rand_id} DELETE语句,1条: DELETE FROM ${rand_table_name} WHERE id=${rand_id} INSERT语句,1条: INSERT INTO ${rand_table_name} (id, k, c, pad) VALUES (${rand_id},${rand_k},${rand_str_c},${rand_str_pad})
-
测试环境 区域:华北-北京一。 可用分区:可用区1。 弹性云服务器(Elastic Cloud Server,简称E CS ):规格选择通用计算型c3.2xlarge.2,8U16GB,操作系统镜像使用CentOS7.4 64位版本,详见图1。由于压测工具需要安装额外的编译工具,建议ECS绑定弹性IP。 图1 ECS配置 RDS for PostgreSQL 12,RDS for PostgreSQL 13测试环境如下: 区域:华北-北京四 可用分区:可用区1 弹性云服务器(Elastic Cloud Server,简称ECS):规格选择通用计算增强型 | c6.4xlarge.2 | 16vCPUs | 32GB,操作系统镜像使用CentOS 7.6 64bit位版本。由于压测工具需要安装额外的编译工具,建议ECS绑定弹性IP。
-
函数 本章节介绍了在PostgreSQL11开源版本的基础上,RDS for PostgreSQL增强版支持的内置函数和高级函数包。 表1 内置函数 内置函数 说明 add_months(date,integer) 返回date加上integer的值,返回值为DATE类型。 appendchildxml(XMLType_instance, XPath_string, value_expr[, namespace_string]) 在XMLType类型数据XMLType_instance指定位置XPath_string处追加value_expr节点,其中namespace_string用于描述XPath_string的命名空间信息。 asciistr(string) 返回给定字符串string对应的ASCII值,不支持非ASCII字符。 bin_to_num(expr_list) 将expr_list中的二进制串转换为对应的十进制数,返回值类型为NUMBER。 bitand(number1,number2) 返回number1和number2按位与的值,返回值为BIT类型。 convert(char, dest_char_set[, source_char_set]) 将source_char_set字符集编码格式的输入字符串char,转换为dest_char_set字符集编码格式,该函数只在服务端生效。 cosh(n) 返回参数n的双曲余弦值; decode(expr,search1, result1[[,search2, result2],......][, default]) 将expr表达式值依次与所有search表达式(search1,search2......)进行比较,如果与searchn进行匹配,则返回resultn,否则返回default。如果没有default,返回null。 empty_blob() 返回一个空BLOB类型。 hextoraw(char) 将十六进制字符串转换为RAW类型的值。 instrb(string, substring[, position[, occurrence]]) 返回从字符string的第position位置开始,第occurrence次出现的子串substring起始位置,默认从字符串string首部开始第一次出现的位置。 last_day(date) 返回date所在月的最后一天。 lengthb(char) 返回char字符的字节长度,char支持的类型为所有字符串类型(如CHAR, VARCHAR2, NCHAR, NVARCHAR2等)或可隐式转换为字符串的类型(如integer等)。 listagg(measure_expr[, 'delimiter']) within group(order_by_clause) [over query_partition_clause] 将query_partition_clause分组中的每个列表达式measure_expr值按order_by_clause规则排序后,再合并成一行,值之间使用delimiter分隔符进行分隔。 lnnvl(condition) 返回条件表达式condition的取反值,返回类型为BOOLEAN。 mod(n2, n1) 支持除数为0的情况,即当n1为0时,直接返回n2。 months_between(date1, date2) 返回date1与date2之间相差的月数,当date2早于date1,返回值为负数。 nanvl(n2, n1) 当单精度或双精度浮点数n2的值为NAN,则返回n1,否则返回n2。 nchr(number) 返回本地字符集中二进制与number相等的字符。 new_time(date, timezone1, timezone2) 返回timezone1的date时间对应的timezone2的时间,返回值类型为DATE。 next_day(date, char) 返回date后的第一个自然日(包括工作日、休息日和节假日),返回值为DATE类型。 numtodsinterval(n, interval_unit) 根据INTERVAL数据类型单元interval_unit(取值范围:'DAY'、'HOUR'、'MINUTE'、'SECOND'),将数字n转换为数据类型INTERVAL DAY TO SECOND。 numtoyminterval(n, 'interval_unit') 将数字n按照指定单位interval_unit转为数据类型INTERVAL YEAR TO MONTH,其中interval_unit取值为:YEAR、MONTH。 nlssort(char[, nlsparam]) 按照nlsparam指定的排序字符集对字符串char进行排序,默认使用char字符串字符集排序; nls_upper(char[, nlsparam]) 根据nlsparam指定的排序规则将字符串char中的字母转换为大写,其中char字符串类型为CHAR, VARCHAR2, NCHAR, NVARCHAR2,CLOB或NCLOB,nlsparam的取值为'NLS_SORT = sort'。 nls_lower(char[, nlsparam]) 根据nlsparam指定的排序规则将字符串char中的字母转换为小写,其中char字符串类型为CHAR, VARCHAR2, NCHAR, NVARCHAR2,CLOB或NCLOB,nlsparam的取值为'NLS_SORT = sort'。 nvl(expr1, expr2) 返回expr1, expr2中第一个非空值。 rawtohex(raw) 将RAW类型的值转换为十六进制字符串。 regexp_count(source_char, pattern, position, match_param) 返回指定字符串source_char中的指定位置position开始,匹配正则表达式模式pattern的次数。其中,match_param参数会影响正则表达式匹配规则,比如match_param='i'忽略大小写等。 regexp_instr(source_char, pattern[, position[, occurrence[, return_opt[, match_param[, subexpr]]]]]) 该函数拓展了INSTR函数的功能,允许使用正则表达式匹配,返回值类型为INTEGER。 position表示查找起始位置。 occurrence表示查找pattern在source_char的第几次出现。 return_opt: 取值为0表示返回模式匹配的起始位置。 取值为1表示返回模式匹配的结束位置。 match_param表示正则表达式模式匹配控制参数,如区分大小写等。 subexpr表示正则表达式分组匹配的组号。 regexp_like(source_char, pattern[,match_param]) source_char为字符串表达式,pattern为正则表达式,match_param为正则表达式控制参数,返回字符串source_char是否可按照正则表达式pattern进行匹配。 regexp_substr(source_char, pattern[,position[,occurrence[,match_param[,subexpr]]]]) 按正则表达式在source_char字符串中匹配子字符串。 source_char为查找的输入字符串,支持所有字符串类型(如CHAR, VARCHAR2, NCHAR, NVARCHAR2等)或可隐式转换为字符串的类型(如integer等)。 pattern为子字符串匹配的正则表达式。 position为指定匹配的起始字符位置。 occurrence为pattern在source_char出现的次数。 match_parameter为正则表达式控制参数。 subexpr为pattern的第几个子表达式,范围为0~9。 raise_application_error(errnum, errmsg) 将错误码errnum与错误消息errmsg输出到客户端。 remainder(n2, n1) 返回n2/n1的余数,类似于mod,区别在于,mod取余时用了floor处理,而remainder使用round处理。返回值类型为NUMERIC或双精度浮点数(由入参类型决定)。 round(n,precision) 返回n的四舍五入值,precision为精度值。 scn_to_timestamp(number) 返回SCN号number产生的最近时间戳; sinh(n) 返回数字n的双曲正弦值,当n类型为BINARY_FLOAT,返回类型BINARY_DOUBLE,否则返回值类型为NUMERIC。 substr(char,position[,substring_length]) 返回char字符串中第position个字符开始,长度为substring_length的子字符串。若不指定substring_length,则截取到字符串结尾。 substrb(char, position[, substring_length]) 返回char字符串中第position个字节开始,长度为substring_length字节的子字符串。若不指定substring_length,则截取到字符串结尾。 sys_context(namespace, parameter) 返回指定参数parameter在命名空间namespace下的值,返回值类型为VARCHAR2。 sys_guid() 返回RAW类型的全局唯一标识。 sys_connect_by_path(column, char) 仅适用于CONNECT BY查询,返回column列的根节点; tanh(n) 返回参数n的双曲正切值; to_blob(char) 将char字符串转换为BLOB类型,char支持的类型为所有字符串类型(如CHAR, VARCHAR2, NCHAR, NVARCHAR2等)或可隐式转换为字符串的类型(如integer等)。 to_binary_float(expr) 将数字字符串expr转换为单精度float类型。 to_binary_double(expr) 将数字字符串expr转换为双精度float类型。 to_clob(char) 将char字符串转换为CLOB数据类型。 to_char(char) 增加char支持的类型:char、character、varchar。 to_date(char[,fmt]) 将char时间字符串按照fmt格式转换为date数据类型,char支持的类型有CHAR、VARCHAR2、NCHAR、 NVARCHAR2、TIMESTAMP。如果省略fmt,则char必须采用DATE数据类型的默认格式。 to_dsinterval('sql_format' | 'ds_iso_format') 将SQL标准(如'100 00:00:00')或ISO标准(如'P100DT05H')的时间字符串转换为数据类型INTERVAL DAY TO SECOND。 to_multi_byte(char) 将单字节字符char转换成对应的多字节字符。 to_number(expr) 将expr表达式值转换为number类型。 to_number(expr, fmt, 'nlsparam') 按照指定格式fmt转换expr字符串为数字,返回类型为NUMBER,其中nlsparam为国际化语言参数,支持的参数分别为:NLS_NUMERIC_CHARACTERS、NLS_CURRENCY、NLS_ISO_CURRENCY。 to_timestamp(char[,fmt]) 将char时间字符串按照fmt格式转换为timestamp数据类型,char支持的类型有CHAR、VARCHAR2、NCHAR、 NVARCHAR2、TIMESTAMP。如果省略fmt,则char必须采用TIMESTAMP数据类型的默认格式。 to_single_byte(char) 将多字节输入字符串转换为单字节字符串。 to_yminterval('sql_format' | 'ym_iso_format') 将SQL标准(如'01-02')或ISO标准(如'P1Y2M')的时间字符串转换为数据类型INTERVAL MONTH TO YEAR。 timestamp_to_scn(timestamp) 根据时间戳timestamp返回系统变更号SCN; trunc(date[, fmt]) 按照fmt指定的日期格式对date进行截断处理,返回值类型为DATE。如果省略fmt,则默认日期格式为'DDD'。 tz_offset({time_zone_name | '{+|-}hh:mi'}) 返回指定时区的偏移量,返回值类型VARCHAR2,参数可以是时区名time_zone_name或者'{+|-}hh:mi'格式字符串。 value(correlation_variable) 以对象表的方式返回correlation_variable所关联表的记录行,返回类型为correlation_variable所关联的对象表。 表2 高级函数包 高级函数包 说明 DBMS_OUTPUT.PUT(item) 将item字符串放入本地缓冲区;item为所有可以转换为字符串的类型。 DBMS_OUTPUT.PUT_LINE(item) 将item字符串放入本地缓冲区,然后将整个本地缓冲区的内容整体输出;item为所有可以转换为字符串的类型。 DBMS_RANDOM.SEED(val) val为生成随机数的种子,可为字符串和数字类型。 DBMS_RANDOM.VALUE([low,high]) 返回low和high之间长度为16位的随机数,如果不指定low和high的范围,则默认范围为0~1。 dbms_lob.getlength(lob_loc {clob|blob}) 返回lob_loc指定的LOB对象长度; dbms_lob.read(lob_loc, amount, offset, buffer) 从指定偏移offset读取LOB对象lob_loc指定长度amount的内容写入缓冲区buffer; dbms_lob.write(lob_loc, amount, offset, buffer) 将buffer缓冲器的内容写入大对象lob_loc缓冲区(并不影响所引用的大对象),从offset开始写入长度为amount。 utl_raw.cast_to_raw(char) 将VARCHAR2类型字符串char转换为RAW类型,返回值类型为RAW。 utl_raw.length(raw) 返回raw数据类型的字节长度,返回值类型为NUMBER。 utl_raw.cast_from_binary_integer(n, endianess) 按照endianess指定的内存对齐方式将整数n转换为RAW类型,其中endianess取值分别为: 1,大端对齐; 2,小端对齐; 3,按机器对齐方式; 父主题: RDS for PostgreSQL增强版
-
RDS for PostgreSQL内核版本发布记录 RDS for PostgreSQL支持的社区版本的发布日期和版本更新说明如下表所示。 表1 内核版本发布记录 发布日期 支持的社区版本 版本更新说明 2024-09 16.4 15.8 14.13 13.16 12.20 主要更新以下内容: 同步社区最新的代码,修复CVE-2024-7348、CVE-2024-4317等安全漏洞和功能性问题。 更多版本发布说明: 社区16.4、15.8、14.13、13.16、12.20版本发布说明 2024-03 16.2 15.6 14.11 13.14 12.18 主要更新以下内容: 引入16版本。 同步社区最新的代码,修复CVE-2024-0985等安全漏洞和功能性问题。 更多版本发布说明: 社区16版本发布说明 社区16.2、15.6、14.11、13.14、12.18版本发布说明 2023-12 15.5 14.10 13.13 12.17 11.22 主要更新以下内容: 同步社区最新的代码,修复CVE-2023-5868、CVE-2023-5869、CVE-2023-5870等安全漏洞和功能性问题。 更多版本发布说明: 社区15.5、14.10、13.13、12.17、11.22版本发布说明 2023-09 15.4 14.9 13.12 12.16 11.21 主要更新以下内容: 引入15版本。 同步社区最新的代码,修复CVE-2023-34917、CVE-2023-39418等安全漏洞和功能性问题。 更多版本发布说明: 社区15.4版本发布说明 社区14.9、13.12、12.16、11.21版本发布说明 2023-08 14.8 13.11 12.15 11.20 主要更新以下内容: 同步社区最新的代码,修复CVE-2023-2454、CVE-2023-2455等安全漏洞和功能性问题。 更多版本发布说明: 社区14.8、13.11、12.15、11.20版本发布说明 2023-04 14.6 13.9 12.13 11.18 10.23 主要更新以下内容: 支持pgl_ddl_deploy插件。 升级zhparser插件版本。 更多插件信息: 不同内核版本支持的插件不同,详见RDS for PostgreSQL引擎支持的插件。 2022-12 14.6 13.9 12.13 11.18 10.23 主要更新以下内容: 同步社区最新的代码,修复安全漏洞和功能性问题。 更多版本发布说明: 社区14.6、13.9、12.13、11.18、10.23版本发布说明 2022-07 14.4 13.7 12.11 11.16 10.21 主要更新以下内容: 引入14版本。 同步社区最新的代码,修复CVE-2022-1552等安全漏洞和功能性问题。 更多版本发布说明: 社区14.4版本发布说明 社区13.7、12.11、11.16、10.21版本发布说明 2022-04 13.6 12.10 11.15 10.20 9.6.24 主要更新以下内容: 同步社区最新的代码,修复安全漏洞和功能性问题。 更多版本发布说明: 社区13.6、12.10、11.15、10.20、9.6.24版本发布说明 2021-04 13.2 12.6 11.11 10.16 9.6.21 9.5.25 主要更新以下内容: 引入13版本。 同步社区最新的代码,修复安全漏洞和功能性问题。 支持Failover Slot,详见逻辑订阅故障转移(Failover Slot)。 更多版本发布说明: 社区13.2、12.6、11.11、10.16、9.6.21、9.5.25版本发布说明 2020-03 12.2 / 2019-12 9.5.19 / 2019-11 11.5 10.10 9.6.15 / 2019-08 11.4 9.6.13 9.5.17 / 2019-07 11.2 10.8 / 2019-06 9.5.15 / 2019-03 10.6 9.6.11 / 2019-01 11.0 / 2018-11 10.3 / 2018-03 9.6.5 / 2018-02 9.6.3 / 2017-10 9.5.5 / 父主题: RDS for PostgreSQL版本发布说明
-
RDS for PostgreSQL内核版本说明 RDS for PostgreSQL支持的社区版本的发布日期和版本更新说明如下表所示。 表1 内核版本发布记录 发布日期 支持的社区版本 版本更新说明 2024-03 16.2 15.6 14.11 13.14 12.18 主要更新以下内容: 引入16版本。 同步社区最新的代码,修复CVE-2024-0985等安全漏洞和功能性问题。 更多版本发布说明: 社区16版本发布说明 社区16.2、15.6、14.11、13.14、12.18版本发布说明 2023-12 15.5 14.10 13.13 12.17 11.22 主要更新以下内容: 同步社区最新的代码,修复CVE-2023-5868、CVE-2023-5869、CVE-2023-5870等安全漏洞和功能性问题。 更多版本发布说明: 社区15.5、14.10、13.13、12.17、11.22版本发布说明 2023-09 15.4 14.9 13.12 12.16 11.21 主要更新以下内容: 引入15版本。 同步社区最新的代码,修复CVE-2023-34917、CVE-2023-39418等安全漏洞和功能性问题。 更多版本发布说明: 社区15.4版本发布说明 社区14.9、13.12、12.16、11.21版本发布说明 2023-08 14.8 13.11 12.15 11.20 主要更新以下内容: 同步社区最新的代码,修复CVE-2023-2454、CVE-2023-2455等安全漏洞和功能性问题。 更多版本发布说明: 社区14.8、13.11、12.15、11.20版本发布说明 2023-04 14.6 13.9 12.13 11.18 10.23 主要更新以下内容: 支持pgl_ddl_deploy插件。 升级zhparser插件版本。 更多插件信息: 不同内核版本支持的插件不同,详见RDS for PostgreSQL引擎支持的插件。 2022-12 14.6 13.9 12.13 11.18 10.23 主要更新以下内容: 同步社区最新的代码,修复安全漏洞和功能性问题。 更多版本发布说明: 社区14.6、13.9、12.13、11.18、10.23版本发布说明 2022-07 14.4 13.7 12.11 11.16 10.21 主要更新以下内容: 引入14版本。 同步社区最新的代码,修复CVE-2022-1552等安全漏洞和功能性问题。 更多版本发布说明: 社区14.4版本发布说明 社区13.7、12.11、11.16、10.21版本发布说明 2022-04 13.6 12.10 11.15 10.20 9.6.24 主要更新以下内容: 同步社区最新的代码,修复安全漏洞和功能性问题。 更多版本发布说明: 社区13.6、12.10、11.15、10.20、9.6.24版本发布说明 2021-04 13.2 12.6 11.11 10.16 9.6.21 9.5.25 主要更新以下内容: 引入13版本。 同步社区最新的代码,修复安全漏洞和功能性问题。 支持Failover Slot,详见逻辑订阅故障转移(Failover Slot)。 更多版本发布说明: 社区13.2、12.6、11.11、10.16、9.6.21、9.5.25版本发布说明 2020-03 12.2 / 2019-12 9.5.19 / 2019-11 11.5 10.10 9.6.15 / 2019-08 11.4 9.6.13 9.5.17 / 2019-07 11.2 10.8 / 2019-06 9.5.15 / 2019-03 10.6 9.6.11 / 2019-01 11.0 / 2018-11 10.3 / 2018-03 9.6.5 / 2018-02 9.6.3 / 2017-10 9.5.5 / 父主题: RDS for PostgreSQL内核
-
步骤1:购买ECS 登录管理控制台,查看是否有弹性云服务器。 有Linux弹性云服务器,执行3。 无Linux弹性云服务器,执行2。 图1 ECS实例 购买弹性云服务器时,选择Linux操作系统,例如CentOS。 由于需要在ECS下载PostgreSQL客户端,因此需要为ECS绑定弹性公网IP(EIP),并且选择与RDS for PostgreSQ L实例 相同的区域、VPC和安全组,便于RDS for PostgreSQL和ECS网络互通。 购买Linux弹性云服务器请参考《弹性云服务器快速入门》中“购买弹性云服务器”章节。 在ECS实例基本信息页,查看ECS实例的区域和VPC。 图2 ECS基本信息 在RDS for PostgreSQL实例概览页,查看RDS实例的区域和VPC。 图3 PostgreSQL概览 确认ECS实例与RDS for PostgreSQL实例是否处于同一区域、同一VPC内。 是,执行步骤2:测试连通性并安装PostgreSQL客户端。 如果不在同一区域,请重新购买实例。不同区域的云服务之间内网互不相通,无法访问实例。请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。 如果不在同一VPC,可以修改ECS的VPC,请参见切换虚拟私有云。
-
步骤2:测试连通性并安装PostgreSQL客户端 登录ECS实例,请参见《弹性云服务器用户指南》中“Linux弹性 云服务器远程登录 (VNC方式)”。 在RDS“实例管理”页面,单击实例名称进入“概览”页面。 选择“连接管理”,在“连接信息”模块获取实例的内网地址和数据库端口。 图4 连接信息 在ECS上测试是否可以正常连接到RDS for PostgreSQL实例内网地址的端口。 telnet 192.168.0.7 5432 如果可以通信,说明网络正常。 如果无法通信,请检查安全组规则。 查看ECS的安全组的出方向规则,如果目的地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将RDS实例的内网IP地址和端口添加到出方向规则。 图5 ECS的安全组 查看RDS的安全组的入方向规则,需要将ECS实例的私有IP地址和端口添加到入方向规则,具体操作请参见设置安全组规则。 打开客户端安装页面。 PostgreSQL官网提供了针对不同操作系统的客户端安装方法。 下面将以CentOS下PostgreSQL 12版本为例,介绍安装PostgreSQL客户端。 选择数据库版本、操作系统、操作系统架构,在弹性云服务器上执行以下命令安装PostgreSQL客户端。 sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm 图6 安装客户端 数据库版本,选择与RDS for PostgreSQL数据库实例一致的版本。 操作系统,选择与弹性云服务器一致的操作系统。 操作系统架构,选择与弹性云服务器一致的操作系统架构。 图7 安装rpm包 图8 客户端安装完成
-
步骤1:购买ECS 登录管理控制台,查看是否有弹性云服务器。 有Linux弹性云服务器,执行3。 无Linux弹性云服务器,执行2。 图1 ECS实例 购买弹性云服务器时,选择Linux操作系统,例如CentOS。 由于需要在ECS下载PostgreSQL客户端,因此需要为ECS绑定弹性公网IP(EIP)。 购买Linux弹性云服务器请参考《弹性云服务器快速入门》中“购买弹性云服务器”章节。 在ECS实例基本信息页,查看ECS实例的区域和VPC。 图2 ECS基本信息 在RDS for PostgreSQL实例概览页,查看RDS实例的区域和VPC。 图3 PostgreSQL概览
-
步骤2:测试连通性并安装PostgreSQL客户端 登录ECS实例,请参见《弹性云服务器用户指南》中“Linux弹性云服务器远程登录(VNC方式)”。 在RDS“实例管理”页面,单击实例名称进入“概览”页面。 选择“连接管理”,在“连接信息”模块获取实例的公网地址和数据库端口。 图4 连接信息 如果没有绑定公网地址,请参见绑定弹性公网IP。 在ECS上测试是否可以正常连接到RDS for PostgreSQL实例公网地址的端口。 telnet 公网地址 5432 如果可以通信,说明网络正常。 如果无法通信,请检查安全组规则。 查看ECS的安全组的出方向规则,如果目的地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将RDS实例的公网IP地址和端口添加到出方向规则。 图5 ECS的安全组 查看RDS的安全组的入方向规则,需要将ECS实例的私有IP地址和端口添加到入方向规则,具体操作请参见设置安全组规则。 打开客户端安装页面。 PostgreSQL官网提供了针对不同操作系统的客户端安装方法。 下面将以CentOS下PostgreSQL 12版本为例,介绍安装PostgreSQL客户端。 选择数据库版本、操作系统、操作系统架构,在弹性云服务器上执行以下命令安装PostgreSQL客户端。 sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm 图6 安装客户端 数据库版本,选择与RDS for PostgreSQL数据库实例一致的版本。 操作系统,选择与弹性云服务器一致的操作系统。 操作系统架构,选择与弹性云服务器一致的操作系统架构。 图7 安装rpm包 图8 客户端安装完成
-
场景一 场景描述 使用RDS for PostgreSQL数据库时,业务执行大量复杂SQL,造成临时文件堆积,内存耗尽发生OOM,数据库重启过程非常缓慢,导致业务较长时间不可用。 原因分析 由于业务执行复杂SQL,如果SQL中涉及排序、Hash join、聚合等操作,超过配置work_mem参数大小时,会生成临时文件。大量执行这样的SQL,在发生OOM时,数据库进程被OS杀掉,此时内核不会对临时文件进行清理,从而导致临时文件的堆积。过多的临时文件会拖慢数据库启动,这是因为在PostgreSQL数据库进程启动时,需要删除所有之前产生的所有临时文件,如果存在大量临时文件堆积,将导致数据库启动缓慢。 解决方案 建议业务侧优化SQL,或适当调大work_mem参数值(会增加内存占用),减少临时文件生成。
-
场景二 场景描述 使用RDS for PostgreSQL数据库时,业务创建了大量的表。某一时间连接数与业务量激增,数据库进程内存耗尽发生OOM,从而导致数据库重启,但重启过程非常缓慢,导致业务较长时间不可用。 原因分析 由于数据库发生了OOM进而导致进程重启,在启动时会进入故障恢复模式,这时内核进程会遍历所有表并做fsync(将os缓存内容刷新至磁盘),如果业务创建的表对象过多,在启动时便会消耗大量时间进行遍历,从而导致数据库启动缓慢,影响业务可用性。 解决方案 建议业务侧限制创建表的数量,单实例表数量最好不超过2万,单库表数量最好不超过4千,详见实例使用规范。 建议业务侧配置内存监控,必要时扩充内存规格,尽量避免OOM发生。同时关注inode数监控指标,控制创建的对象数量。
-
操作场景 安全组是一个逻辑上的分组,为同一个虚拟私有云内具有相同安全保护需求,并相互信任的弹性云服务器和云数据库RDS实例提供访问策略。 为了保障数据库的安全性和稳定性,在使用云数据库RDS实例之前,您需要设置安全组,开通需访问数据库的IP地址和端口。 内网连接RDS实例时,设置安全组分为以下两种情况: ECS与RDS实例在相同安全组时,默认ECS与RDS实例互通,无需设置安全组规则,执行通过内网连接RDS for PostgreSQL实例(Linux方式)。 ECS与RDS实例在不同安全组时,需要为RDS和ECS分别设置安全组规则。 设置RDS安全组规则:为RDS所在安全组配置相应的入方向规则。 设置ECS安全组规则:安全组默认规则为出方向上数据报文全部放行,此时,无需对ECS配置安全组规则。当在ECS所在安全组为非默认安全组且出方向规则非全放通时,需要为ECS所在安全组配置相应的出方向规则。 本节主要介绍如何为RDS实例设置相应的入方向规则。 关于添加安全组规则的详细要求,可参考《虚拟私有云用户指南》的“添加安全组规则”章节。
-
注意事项 因为安全组的默认规则是在出方向上的数据报文全部放行,同一个安全组内的弹性云服务器和云数据库RDS实例可互相访问。安全组创建后,您可以在安全组中定义各种访问规则,当云数据库RDS实例加入该安全组后,即受到这些访问规则的保护。 默认情况下,一个用户可以创建100个安全组。 默认情况下,一个安全组最多只允许拥有50条安全组规则。 一个RDS实例允许绑定多个安全组,一个安全组可以关联多个RDS实例。 为一个安全组设置过多的安全组规则会增加首包延时,因此,建议一个安全组内的安全组规则不超过50条。 当需要从安全组外访问安全组内的云数据库RDS实例时,需要为安全组添加相应的入方向规则。 为了保证数据及实例安全,请合理使用权限。建议使用最小权限访问,并及时修改数据库默认端口号(5432),同时将可访问IP地址设置为远程主机地址或远程主机所在的最小子网地址,限制远程主机的访问范围。 源地址默认的IP地址0.0.0.0/0是指允许所有IP地址访问安全组内的云数据库RDS实例。 关于添加安全组规则的详细要求,可参考《虚拟私有云用户指南》的“添加安全组规则”章节。
-
注意事项 因为安全组的默认规则是在出方向上的数据报文全部放行,同一个安全组内的弹性云服务器和云数据库RDS实例可互相访问。安全组创建后,您可以在安全组中定义各种访问规则,当云数据库RDS实例加入该安全组后,即受到这些访问规则的保护。 默认情况下,一个用户可以创建100个安全组。 默认情况下,一个安全组最多只允许拥有50条安全组规则。 一个RDS实例允许绑定多个安全组,一个安全组可以关联多个RDS实例。 为一个安全组设置过多的安全组规则会增加首包延时,因此,建议一个安全组内的安全组规则不超过50条。 当需要从安全组外访问安全组内的云数据库RDS实例时,需要为安全组添加相应的入方向规则。 为了保证数据及实例安全,请合理使用权限。建议使用最小权限访问,并及时修改数据库默认端口号(5432),同时将可访问IP地址设置为远程主机地址或远程主机所在的最小子网地址,限制远程主机的访问范围。 源地址默认的IP地址0.0.0.0/0是指允许所有IP地址访问安全组内的云数据库RDS实例。 关于添加安全组规则的详细要求,可参考《虚拟私有云用户指南》的“添加安全组规则”章节。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格