
|
概览 |
|
|
目录 |
系统 |
|
类别 |
数据库组件 |
|
用户卷 |
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 后台进程)。 |
|
read_only |
字符串 |
通过 in 终端访问的数据库是只读的。 可能值为 yes 和 no,yes 表示只读,no 表示读/写。 此属性仅供 PGSQL 用来优化数据库的性能(只读数据库不需要垃圾回收等)。 |
|
max_connections |
整数 |
PGSQL 应通过 in 终端处理的到数据库的最大并发活动连接数。 PGSQL 在用于内存管理的高级计算中使用此值。 通常,对于每 80 个并发连接,PGSQL 需要 128 MB 内存。 一旦达到连接限制,PGSQL 便拒绝所有后续连接。 |
|
query_complexity |
字符串 |
此属性指定用户将针对用于 PGSQL 的数据库执行的查询的常规复杂性。 可能值为: |
|
sync_on_write |
字符串 |
PGSQL 是否应等待将数据库更新以物理方式写入磁盘(主要是在提交事务时)。 可能值有 yes 和 no,yes 表示等待磁盘更新,no 表示缓存更新并在稍后写入更新,从而改进性能(延迟写入)。 将此属性设置为 yes 可能会导致性能损失,但也会确保,在组件崩溃或失败发生之后,数据库可以恢复到一致状态。 请注意,如果将数据库指定为只读,PGSQL 将自动禁用此功能并忽略此属性的值。 |
|
时区 |
字符串 |
指定在组件中使用的时区。 如果此属性为空,则时区未经修改且保持原样。 此处提供可支持时区的列表。 默认值:空 |
日志记录属性
|
属性名 |
类型 |
说明 |
|
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,以禁用基于时间的新日志文件的创建。 |
|
log_size |
整数 |
日志文件的最大大小;指定以兆字节为单位。 当日志文件达到指定大小时,使用 log_filename 属性创建新日志文件。 如果日志文件已存在,PGSQL 将截断它;这样就允许日志循环。 设置为 0,以禁用基于大小的新日志文件的创建。 |
|
log_level |
字符串 |
数据库日志记录级别。 可能值为: |
|
log_cmd_stats |
字符串 |
是否在 PGSQL 中记录有关执行 SQL 命令的统计信息(以及命令开始执行的时间)。 可能值有 yes 和 no,yes 表示启用日志记录,no 表示禁用日志记录。 可以使用 PGSQL 中的 pg_stat_activity 系统视图访问统计信息。 如果设置为 no,将禁用 PGSQL 自定义计数器。 |
重要信息! 如果启用了日志记录但未连接 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 应用中的典型用法:

正在使用的组件:
客户端请求到达 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 错误日志的输入。

正在使用的组件:
客户端请求到达 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 |
| 版权所有 © 2011 CA。 保留所有权利。 | 就该主题发送电子邮件至 CA Technologies |