准备数据库连接
了解如何配置 Oracle GoldenGate for PostgreSQL 的数据库连接、系统和参数设置。
Oracle GoldenGate for PostgreSQL 使用预打包的 ODBC 驱动程序连接到 PostgreSQL 数据库。可以使用数据源名称 (Data Source Name,DSN) 或直接连接来建立连接,并提供数据库服务器主机、端口、数据库和其他信息。
使用 DSN 连接需要将连接详细信息列在 odbc.ini 文件中,而使用直接条目是在将数据库连接添加到管理服务的 Web 界面或通过管理客户机时手动输入的。
注:Oracle GoldenGate 连接不支持 PgBouncer。
注:Oracle GoldenGate 不支持连接到使用 Pgpool 的 PostgreSQL。
执行下面给定的步骤以创建 DSN 条目或计划使用直接连接后,请转到添加数据库连接主题以了解如何创建数据库连接。
在 Linux 中配置 DSN 连接
要为 Oracle GoldenGate 进程创建 DSN 连接,首先需要为 Oracle GoldenGate 添加环境变量以进行 PostgreSQL 部署,然后创建 odbc.ini 文件以存储连接属性。
-
登录到 Service Manager Web 界面。
-
从左侧导航窗格中,单击部署,然后选择 Oracle GoldenGate PostgreSQL 部署。这将扩展部署的各种设置。
-
单击 Configuration(配置),然后单击 Environment Variables(环境变量)旁边的加号 ( + )。
-
在两个可用字段中提供以下信息。对于环境变量值字段,请确保它是
odbc.ini文件的绝对路径:环境变量名称 =
ODBCINI环境变量值 =
/ogg/deployment/pgsql/odbc.ini
-
单击提交以创建新变量,然后从部署窗格重新启动部署,以使更改生效。
-
在 Oracle GoldenGate 安装的
deployment文件夹中,手动创建odbc.ini文件并在此文件中添加数据源。
创建 DSN 文件时,请使用以下最低设置:
-
Data Source Name-Oracle GoldenGate 进程(例如 Extract 或 Replicat)将引用的源或目标数据库连接的用户定义名称。DSN 名称的长度最多允许为 32 个字母数字字符,并且只能包含来自特殊字符的下划线 (_) 和短划线 (-)。 -
IANAAppCodePage=4- 是缺省设置,但当数据库字符集不是 Unicode 时,可以根据 https://docs.progress.com/bundle/datadirect-connect-odbc-71/page/IANAAppCodePage_9.html#IANAAppCodePage_9 页面上指定的指导进行修改。 -
InstallDir-Oracle GoldenGate PostgreSQL 线协议驱动程序路径的名称,可以使用相对路径,例如:InstallDir =./datadirect -
Driver:是 Oracle GoldenGate PostgreSQL Wire Protocol 驱动程序文件的名称,可以使用相对路径,例如:Driver=./datadirect/lib/ggpsql25.so。 -
Database:这是源或目标数据库的名称。 -
Hostname:这是数据库主机 IP 地址或主机名。 -
PortNumber:这是数据库的监听端口。 -
Oracle GoldenGate for PostgreSQL 支持用于 PostgreSQL 连接的多个主机和端口。此功能在 Oracle GoldenGate 高可用性 (High Availability,HA) 设置中非常有用。在 PostgreSQL HA 设置中,有一个主服务器和多台备用服务器。可以设置连接字符串格式以指定多个主机:
连接字符串 说明 db-user@host1,host2,host3/db-name将使用所有主机( host1、host2、host3)的默认 PostgreSQL 数据库端口 5432 尝试连接。db-user@host1:1234,host2:2345,host3:3456/db-name将使用与连接字符串中指定的每个主机关联的端口尝试连接。 db-user@host1,host2,host3:1234/db-name所有主机( host1、host2、host3)上使用相同端口号 (1234) 的所有主机。将使用端口 1234 为所有主机(host1、host2、host3)尝试连接。db-user@host1,host2,host3:1234/db-name所有主机( host1、host2、host3)上使用相同端口号 (1234) 的所有主机。将使用端口 1234 为所有主机尝试连接。db-user@host1:3456,host2,host3:1234/db-name如果以其他格式指定连接字符串(其中为某些主机指定了端口号,而其他主机指定了不带任何端口),则最后或最右侧的端口规范将用作未在连接字符串中指定端口号的所有主机的端口号。如连接字符串中所示:
db-user@host1:3456,host2,host3:1234/db-namehost2的端口号将为 1234,这是连接字符串中指定的最右边的端口号。 -
您还可以为 Extract 或 Replicat 用户提供
LogonID和Password,但这些内容将以明文形式存储。建议将这些字段从 DSN 中保留,并将其作为身份证明别名存储在 Oracle GoldenGate wallet 中,并在提取和复制中使用USERIDALIAS参数引用它们。
下面是具有两个 DSN 条目的 odbc.ini 文件示例。以下示例中使用的数据源名称为 PG_src 和 PG_tgt。
|
|
| — |
|
-
保存并关闭
odbc.ini文件。 -
要为 PostgreSQL 部署设置 Oracle GoldenGate 中的数据库连接,请参阅添加数据库连接。
使用版本 14 或更低版本连接到启用了 FIPS 的 PostgreSQL 系统
从安装了 PostgreSQL 数据库低于版本 14 的启用了联邦信息处理标准 (Federal Information Processing Standards,FIPS) 的系统运行 Oracle GoldenGate 提取时,将生成以下错误:
ERROR OGG-25359 Could not connect to server with database 'postgres', host 'localhost', port '5432' and user name 'postgres'. Error Message: connection to server at "localhost" (::1), port 5432 failed: could not encrypt password: disabled for FIPSfe_sendauth: error sending password authentication.
加密算法 md5 是低于 14 的 PostgreSQL 数据库版本的默认加密算法,并导致提取异常终止并出现错误。
要在运行低于 14 的 PostgreSQL 数据库版本的启用了 FIPS 的系统上运行提取,请执行以下步骤:
-
修改
postgresql.conf文件以将password_encryption选项设置为scram-sha-256。 -
修改
pg_hba.conf文件以将Method选项设置为scram-sha-256,因为启用 FIPS 的系统不支持md5。但是,这是可选步骤。在
password_encryption选项设置为scram-sha-256之后,如果已创建数据库用户,则必须重新生成或修改 Oracle GoldenGate 提取所使用的数据库用户的密码。您可以使用相同的密码进行重新生成。例如,如果名为
admin的数据库用户将口令用作password123,则可以使用scram-sha-256加密重新生成相同的口令。
为 PostgreSQL 配置 SSL 支持
可以通过在 PostgreSQL 配置文件 ($PGDATA/postgresql.conf ) 中将配置参数 SSL 设置为 on 来启用 SSL。如果启用了 SSL,则相应的 hostssl 条目必须存在或添加到 pg_hba.conf 文件中。
启用 SSL 时,Oracle GoldenGate 将使用来自默认位置的根证书、根证书撤销列表 (root Certification Revocation List,CRL)、服务器客户机证书和密钥,如以下代码片段中所示:
~/.postgresql/root.crt
~/.postgresql/root.crl
~/.postgresql/postgresql.crt
~/.postgresql/postgresql.key
您需要从此列表中创建所需的实体,并将其存储在适当的位置。
如果使用非默认位置设置 SSL 配置,则应根据环境设置以下环境变量。
PGSSLROOTCERT
PGSSLCRL
PGSSLCERT
PGSSLKEY
odbc.ini 文件中需要更改
可以通过在 $ODBCINI 文件中将 EncryptionMethod DSN 属性设置为 1 或 6 来启用 SSL 支持。
如果设置为 0(无加密),则不加密数据。
如果设置为 1 (SSL),则使用加密协议版本连接选项中指定的 SSL 协议加密数据。如果数据库服务器不支持指定的加密方法,则连接将失败,驱动程序将返回错误。
如果设置为 6 (RequestSSL),则登录请求和数据使用 SSL 进行加密(如果服务器配置为 SSL)。如果没有为服务器配置 SSL,则会建立未加密的连接。使用的 SSL 协议由加密协议版本连接选项的设置确定。
如果还需要验证数据库服务器/客户端证书,则需要创建相应的 KeyStore 文件,并且应在 odbc.ini 文件中相应地设置以下 ODBC DSN 属性。
KeyStore=path to .p12 keystore file KeyStorePassword=keystore-passwd TrustStore=path to root certificate ValidateServerCertificate=1
但是,如果已提供 SSLCert 和 SSLKey,则 KeyStore 文件不是验证客户机证书(由服务器)所必需的。注:Azure Database for PostgreSQL 默认用于强制实施 SSL 连接。要遵守此要求,请执行此处列出的要求,或者(可选)可以使用 Microsoft Azure Portal 禁用从数据库实例的连接安全设置强制实施 SSL 连接。