上一主题: MYSQLR、MYSQLR64-适合复制的 MySQL 数据库组件

下一主题: ORACLE:ORACLE 数据库组件

PGSQL64-PostgreSQL 数据库组件

PGSQL、PGSQL64:PostgreSQL 数据库组件

概览

目录

系统

类别

数据库组件

用户卷

yes

最小 内存

160 MB

操作系统

Linux

约束

no

问题/注释

咨询论坛

功能概述

重要信息! PGSQL 在 CA 3Tera AppLogic 2.8+ 中不可用;请改用 PGSQL64。

PGSQL64 是基于 PostgreSQL 数据库引擎的数据库组件 (http://www.postgresql.org)。 它提供一种简便方法将数据库添加到任何应用。 PGSQL64 是一种企业级数据库组件,支持 MYSQLx 组件当前不支持的许多功能。 这些功能包括存储过程、触发器、视图和用户自定义的数据类型。

PGSQL64 在应用定义的卷(可在每个 PGSQL64 实例上配置)上存储数据库。 PGSQL64 在空卷上启动时,将有选择性地创建一个空数据库。 无法在多个 PGSQL 实例(每 PGSQL 实例一个数据库卷)之间共享 PGSQL64 数据库卷。

PGSQL64 客户端通过 in 终端访问已配置的数据库。 通过相同的终端处理数据库请求并传回完成确认。 PGSQL64 允许任何有效的 Postgres 用户通过 in 终端访问数据库(该组件具有一个预配置的超级用户角色:标准 postgres)。 可以使用通过 in 终端支持的最大并发连接数来配置 PGSQL64 。

PGSQL64 还能够维护可通过日志终端访问的数据库日志。 该日志可用于跟踪数据库信息和错误日志记录。 日志路径、名称、期限和内容都是可配置的。 此外,还可以启用各种数据库统计信息和调试信息,以帮助配置数据库访问模式及诊断问题/错误。

PGSQL64 通常用于通用型 Web 数据库应用(具有执行简单查询的大量用户的小型数据库)或决策支持数据库(具有执行复杂查询的少量用户的大型数据库)。

名称

最新版本

操作系统

PostgreSQL

说明

PGSQL64

2.0.2-1

CentOS 5.5

9.0.1

 

边界

资源

资源

最小值

最大值

默认值

CPU

0.1

16

0.4

内存

160 MB

32G

512 MB

带宽

1 Mbps

2 Gbps

250 Mbps

注意:应基于两个主要因素增加内存:并发用户数和数据库大小。 通常,PGSQL 使用每 128 MB 内存可支持大约 80 个并发用户。 数据库越大,PGSQL 用于处理的内存应越大。 例如:对于 10G 数据库,PGSQL 至少应配置 1G 内存-如果超过 1G,则性能更佳。

终端

名称

目录

协议

说明

in

in

PGSQL

接收来自客户端的 PostgreSQL 数据库请求。

log

out

CIFS

用于访问远程文件系统以存储错误日志。 如果未使用该终端,则可将其保持未连接状态。

mon

out

CCE

发送性能和资源使用统计信息。 此终端可保持未连接状态。

默认接口已启用。 它用于诊断和故障排除(通过 SSH)。 此组件的未来版本可能会禁用 SSH 访问。

用户卷

说明

data

用于数据库数据存储的卷。

重要信息! 数据卷必须专用于 PGSQL 实例(不能与其他组件共享)。

属性

注意:除了文件名和路径外,PGSQL 属性都不区分大小写。

属性名

类型

说明

auto_create

字符串

当数据库不存在时是否创建它。 可能值为 yes 和 no,yes 表示创建数据库,no 表示阻止自动创建(以避免在卷损坏时意外覆盖)。 如果设置为 no 并且用户卷中不存在数据库,则组件在维护模式下启动(不启动 PostgreSQL 后台进程)。
默认值为 yes。

read_only

字符串

通过 in 终端访问的数据库是只读的。 可能值为 yes 和 no,yes 表示只读,no 表示读/写。 此属性仅供 PGSQL 用来优化数据库的性能(只读数据库不需要垃圾回收等)。
默认值为 no。

max_connections

整数

PGSQL 应通过 in 终端处理的到数据库的最大并发活动连接数。 PGSQL 在用于内存管理的高级计算中使用此值。 通常,对于每 80 个并发连接,PGSQL 需要 128 MB 内存。 一旦达到连接限制,PGSQL 便拒绝所有后续连接。
默认值是 100。

query_complexity

字符串

此属性指定用户将针对用于 PGSQL 的数据库执行的查询的常规复杂性。 可能值为:
simple-仅包括几行的简单查询(常规使用)。 大多数 Web 数据库应用都使用简单查询。
complex-包括数百行并可访问数据库中的数百万行的复杂查询(即决策支持应用或事务处理量很大的应用)。
=PGSQL= 使用查询复杂性来确定应为查询处理保留的内存量。
默认值为 simple。

sync_on_write

字符串

PGSQL 是否应等待将数据库更新以物理方式写入磁盘(主要是在提交事务时)。 可能值有 yes 和 no,yes 表示等待磁盘更新,no 表示缓存更新并在稍后写入更新,从而改进性能(延迟写入)。 将此属性设置为 yes 可能会导致性能损失,但也会确保,在组件崩溃或失败发生之后,数据库可以恢复到一致状态。 请注意,如果将数据库指定为只读,PGSQL 将自动禁用此功能并忽略此属性的值。
默认值为 yes。

时区

字符串

指定在组件中使用的时区。 如果此属性为空,则时区未经修改且保持原样。 此处提供可支持时区的列表。 默认值:空

日志记录属性

属性名

类型

说明

log_filename

字符串

数据库日志文件的文件名,相对于通过 log 终端访问的文件系统(例如:postgresql.log 表示 /mnt/log/postgresql.log,或 /pgsql_logs/postgresql.log 表示 /mnt/log/pgsql_logs/postgresql.log)。 如果为空,则禁用日志记录。 可在日志文件名中指定 %-escapes(与 Linux strftime 模式相同-有关 %-escapes 的完整列表,请参阅本主题末尾的参考部分)。 如果不使用 %-escapes,PGSQL 将附加日志文件的创建时间的新纪元。 默认值:(空)。

log_age

整数

日志文件的最长生存期;指定以分钟为单位。 在经过指定的分钟数之后,使用 log_filename 属性创建新日志文件。 如果日志文件已存在,PGSQL 将截断它;这样就允许日志循环。 设置为 0,以禁用基于时间的新日志文件的创建。
默认值为 1440(每天一个日志)。

log_size

整数

日志文件的最大大小;指定以兆字节为单位。 当日志文件达到指定大小时,使用 log_filename 属性创建新日志文件。 如果日志文件已存在,PGSQL 将截断它;这样就允许日志循环。 设置为 0,以禁用基于大小的新日志文件的创建。
默认值是 0。

log_level

字符串

数据库日志记录级别。 可能值为:
none-不记录任何内容。
error-只记录 PGSQL 检测到的错误。
warn-既记录警告又记录错误。
notice-记录警告、错误和通知。
debug-除警告、通知和错误外,还记录其他调试信息。 调试信息包括执行的 SQL 语句和数据库连接信息(建立/断开)。
默认值为 warn。

log_cmd_stats

字符串

是否在 PGSQL 中记录有关执行 SQL 命令的统计信息(以及命令开始执行的时间)。 可能值有 yes 和 no,yes 表示启用日志记录,no 表示禁用日志记录。 可以使用 PGSQL 中的 pg_stat_activity 系统视图访问统计信息。 如果设置为 no,将禁用 PGSQL 自定义计数器。
默认值为 yes。 自动真空需要统计信息日志记录。

重要信息! 如果启用了日志记录但未连接 log 终端,PGSQL 组件将无法启动。

自定义计数器

如果 log_cmd_stats 属性设置为 yes,PGSQL 组件将通过 mon 终端报告下列自定义计数器。 这些计数器属于 PostgreSQL 计数器组:

计数器名称

说明

Active processes

服务器的活动服务器进程数

Transactions committed

服务器中已提交的事务数

Rolled back

服务器中已回滚的事务数

DB Block fetch requests

服务器的磁盘块获取请求数

DB Block fetch hits

在服务器缓存中找到的磁盘块获取请求数

错误消息

在组件启动失败的情况下,系统日志可能记录以下错误消息:

错误消息

说明

错误: 无法更新 postgres.conf 配置文件,可能是由于启动卷上的磁盘空间不足。

PGSQL 无法更新 postgres.conf 配置文件。 可能的原因-启动卷已满、存在权限问题

错误: 意外的内部错误: 缺少 postgres.conf.tmpl 文件,请与 CA 技术支持联系

模板文件 postgresql.conf.tmpl 不存在或不可读,请与 CA 支持联系

错误: 无法访问指定的日志文件;请检查 log_filename 属性是否包含正确路径,log 终端是否已连接。

PGSQL 无法确定日志文件目录,可能的原因-log_filename 值无效

错误: 无法向指定的日志文件写入内容;请检查指定的日志目录是否可写。

无法向 PostgreSQL 日志文件写入内容

错误: 为 log_level 属性指定了未知日志级别

指定的 log_level 值无效,它应为以下值之一:none、error、warn、notice、debug

错误: log_cmd_stats 无法启用,因为数据库被指定为只读

log_cmd_stats 要求数据库是可读写的

错误: 无法挂接用户的数据库卷。 请确保已使用有效的文件系统格式化该卷

PGSQL 无法使用数据库文件挂接指定的卷。 请确保卷已存在并使用 ext3 文件系统进行格式化

错误: PGSQL 在维护模式下启动,因为提供的数据库卷上存在无法识别的 PostgreSQL 数据库

指定的数据库卷不包含有效数据库,auto_create 设置为“no”。 组件将在维护模式下启动

错误: 无法在提供的数据库卷上创建新数据库。 有关该故障的更多详细信息,请参阅 PGSQL 中的 /var/log/appliance/log 文件

PGSQL 无法清空数据库目录或创建新数据库目录

错误: 无法启动 PostgreSQL 服务器。 有关该故障的更多详细信息,请参阅 PGSQL 中的 /var/log/appliance/log 日志文件

PGSQL 无法启动 PostgreSQL 服务器,请参阅 /var/log/pgstartup.log 和 /var/log/appliance/log 了解详细信息

错误: 已指定 log_filename,但未连接 log 终端。

log_filename 属性不为空,但未连接 PGSQL 的 log 终端

错误: 已指定 log_filename,但未挂接日志设备。

log_filename 属性不为空,但 PGSQL 无法访问日志记录设备。 可能的原因是 PGSQL 在 NAS 之前启动

显示板消息

在遇到需要用户注意的严重错误时,PGSQL 会将消息记录到网格的显示板,如下所示:

消息

说明

数据卷容量不到可用磁盘空间的 5%

PGSQL 组件上的数据卷容量不到可用磁盘空间的 5%。 建议增加卷的大小。

数据卷容量不到可用磁盘空间的 1%

PGSQL 组件上的数据卷容量不到可用磁盘空间的 1%。 需要立即引起注意;可能发生数据丢失。

当可用磁盘空间量降到阈值以下时,只记录这些消息一次。

性能

PGSQL 性能在很大程度上受 sync_on_write、log_filename 和 log_cmd_stats 属性值的影响。 将 fsync、日志记录和统计信息全部禁用(sync_on_write=no、log_filename=""、log_cmd_stats=no)可以实现最佳性能。 下表包含在启用和禁用这些功能时实现的示例 pgbench 测试结果(以 tps(每秒事务次数)为单位进行指定)。 pgbench 是 PostgreSQL 随附的一个实用工具,用于度量数据库的性能。

pgbench 测试配置

已启用

已禁用

1 个客户端,100 次请求

40-70 tps

650 tps

10 个客户端,100 次请求

60-90 tps

1100 tps

100 个客户端,100 次请求

70-110 tps

1200 tps

典型用法

简单的双层应用(Web 数据库应用)

下图显示 PGSQL 组件在面向执行简单查询的很多用户的双层 Web 应用中的典型用法:

简单的双层应用(Web 数据库应用)

正在使用的组件:

客户端请求到达 usr 网关。 网关会将请求转发到 Web 服务器,后者处理请求。 当 srv 上的脚本(例如:Perl 或 PHP)需要访问永久数据时,它会通过 db 终端使用 dbase 组件。

在此示例中,用于 dbase 的数据库不是只读的,可能有许多用户通过 srv 访问该数据库来执行简单查询。 因此,dbase 配置为使用 256M 内存。 此外,该数据库不保留任何数据库错误日志文件(未连接 log 终端)。

示例属性配置:

属性名

说明

auto_create

yes

如果数据卷为空,则创建数据库。

read_only

no

数据库不是只读的,可以进行修改。

query_complexity

simple

用户通常执行简单查询。

sync_on_write

yes

等待将数据库更新以物理方式写入磁盘。

注意:还必须在 dbase 上配置数据卷,必须在网站上配置内容卷。 要创建可在此处使用的应用卷,请参阅《网格用户指南》。

可扩展的双层应用(Web 数据库应用)

下图显示 PGSQL 组件在双层 Web 应用中的典型用法,其中数据库用于在负载均衡的多个 Web 服务器之间共享状态和数据(面向许多执行简单查询的用户)。 此外,此示例有一个单独的用于维护的输入,管理员通过该输入可以登录并访问用于维护的数据库;此示例还有一个可供管理员登录并查看 PostgreSQL 错误日志的输入。

可扩展的双层应用(Web 数据库应用)

正在使用的组件:

客户端请求到达 usr 网关。 网关会将请求转发到 webs 负载均衡器,后者将请求定向到 Web 服务器中的一个(srv1 或 srv2)。 当 Web 服务器上的脚本(例如:Perl 或 PHP)需要访问永久数据时,它们会通过其 db 终端使用 dbase 组件。

dbase 数据库会通过 log 终端将其错误日志写入 logs 组件。 此外,管理员还可以通过 logs 组件的 log 网关登录并查看数据库错误日志文件(以及 Web 服务器日志文件)。

此外,管理员还可以通过 admin 服务器的 maint 网关在 SSH 上登录。 从 admin 服务器中,管理员可以访问 dbase 数据库中的统计信息或更改数据库架构。 例如:admin 服务器可以通过 gway 网关访问 Internet,以下载库或数据库架构的较新版本。

在此示例中,用于 dbase 的数据库不是只读的,可能有许多用户通过 Web 服务器访问该数据库来执行简单查询。 因此,dbase 配置为使用 256M 内存。 此外,该数据库还配置为保留一个星期的日志文件,每天一个文件(在每星期之后,将覆盖日志文件)。

示例属性配置:

属性名

说明

auto_create

yes

如果数据卷为空,则创建数据库。

read_only

no

数据库不是只读的,可以进行修改。

query_complexity

simple

用户通常执行简单查询。

sync_on_write

yes

等待将数据库更新以物理方式写入磁盘。

log_filename

dblog.%a

要在日志数据卷上存储的错误日志文件的名称-每天一个文件。

log_age

1440

每个日志文件适用于一天,例如 dblog.Mon。

log_level

error

错误日志记录级别。

注意:

maint、admin、gway 以及 log 组件不是运行双层应用所必需的。 如果存在,admin 服务器可能具有用于数据库清理、发送电子邮件等的 cron 作业。

简单的双层应用(决策支持系统)

下图显示 PGSQL 组件在为对大小是数 GB 的大型数据库执行复杂查询的几个用户实现决策支持系统的双层 Web 应用中的典型用法:

简单的双层应用(决策支持系统)

正在使用的组件:

客户端请求到达 usr 网关。 网关会将请求转发到 srv 服务器,后者处理请求。 当 srv 上的脚本(例如:Perl 或 PHP)需要访问永久数据时,它会通过 db 终端使用 dbase 组件。 dbase 组件配置为在由 logs 公开的共享的根目录内存储其日志文件。

使用浏览器,管理员可连接到 admin 网关来查看 PostgreSQL 日志文件。 admin 网关将请求转发给日志 NAS 组件。

在此示例中,用于 dbase 的数据库不是只读的,用户可能通过 srv 访问该数据库来执行复杂查询(访问数百万行的大型查询)。 因此,dbase 应配置为使用 1536 MB 的内存。 此外,该数据库还配置为保留一个星期的日志文件,每天一个文件(在每星期之后,将覆盖日志文件)。

示例属性配置:

属性名

说明

auto_create

yes

如果数据卷为空,则创建数据库。

max_connections

25

数据库限制为 25 个并发用户。

read_only

no

数据库不是只读的,可以进行修改。

query_complexity

complex

用户通常执行复杂查询。

sync_on_write

yes

等待将数据库更新以物理方式写入磁盘。

log_filename

dblog.%a

要在日志数据卷上存储的错误日志文件的名称-每天一个文件。

log_age

1440

每个日志文件适用于一天,例如 dblog.Mon。

log_level

error

错误日志记录级别。

注意:还必须在 dbase 组件和 logs 组件上配置数据卷。

简单的双层应用(Web 只读数据库应用)

PGSQL 组件的不太常见的用法是使用只读数据库的双层 Web 应用。 除了数据库为只读(不允许进行任何修改)之外,这与前面的简单应用示例相同。 重要的是,设置 PGSQL 的参数,以便它在将要关闭只读数据库不需要的各种 PostgreSQL 功能时使用只读数据库,这样会提高性能(数据库自动真空处理、数据库修改统计信息,等等)。

示例属性配置:

属性名

说明

auto_create

no

数据卷上的数据库应已存在。

read_only

yes

数据库是只读的,不允许修改。

query_complexity

simple

用户通常执行简单查询。

log_filename

dblog.%a

要在日志数据卷上存储的错误日志文件的名称-每天一个文件。

log_age

1440

每个日志文件适用于一天,例如 dblog.Mon。

log_level

error

错误日志记录级别。

调试数据库应用

PGSQL 公开属性,以允许使用参数化的日志文件 (log_filename) 来调试数据库。 例如:在您需要跟踪 SQL 语句、了解执行 SQL 语句所花费的时间、了解 SQL 语句的失败原因等时,这是很有用的。 调试信息包括:

为了调试数据库,通常配置下列属性:

属性名

说明

log_level

debug

调试日志记录级别。

log_cmd_stats

yes

日志 SQL 命令统计信息(计时、处理、执行等)。

调试信息存储在可通过 log 终端访问的错误日志中,或可通过 PostgreSQL 统计信息视图之一来访问:http://www.postgresql.org/docs/8.3/static/monitoring-stats.html。

说明

请注意下列各项:

http://www.postgresql.org/docs/8.3/interactive/index.html-PostgreSQL 8.3 文档

此组件中使用的第三方开源软件

除了在组件基类(LUX64 是 PGSQL64 的基类)中发现的软件之外,还使用了下列第三方开源软件。

软件

版本

已修改

许可

说明

libgcrypt

1.4.4-5.el5

GPLv2

N/A

libgpg-error

1.4-2

GPLv2

N/A

libxslt

1.1.17-2.el5_2.2

GPLv2

N/A

postgresql

9.0.1-1PGDG

BSD

N/A

postgresql-libs

9.0.1-1PGDG

BSD

N/A

postgresql-server

9.0.1-1PGDG

BSD

N/A

postgresql-test

9.0.1-1PGDG

BSD

N/A

samba-client

3.0.28-1.el5_2.1

GPLv3

N/A

samba-common

3.0.28-1.el5_2.1

GPLv3

N/A