3.3. 准备远程 PostgreSQL 数据库
在远程数据库环境中,您必须在运行 engine-setup
前手动创建管理器数据库。
engine-setup
和 engine-backup --mode=restore
命令只支持 en_US.UTF8
区域中的系统错误消息,即使系统区域设置不同。
postgresql.conf
文件中的区域设置必须设置为 en_US.UTF8
。
数据库名称必须包含数字、下划线和小写字母。
启用 Red Hat Virtualization Manager 存储库
您需要登录并使用 Red Hat Subscription Manager 注册数据库机器,附加 Red Hat Virtualization Manager
订阅并启用 Manager 软件仓库。
流程
使用 Content Delivery Network 注册您的系统,在提示时输入您的客户门户网站用户名和密码:
# subscription-manager register
注意如果您使用 IPv6 网络,请使用 IPv6 转换机制来访问 Content Delivery Network 和 subscription Manager。
查找
Red Hat Virtualization Manager
订阅池并记录池 ID:# subscription-manager list --available
使用池 ID 将订阅附加到系统:
# subscription-manager attach --pool=pool_id
注意查看当前附加的订阅:
# subscription-manager list --consumed
列出所有启用的软件仓库:
# dnf repolist
配置存储库:
# subscription-manager repos \ --disable='*' \ --enable=rhel-8-for-x86_64-baseos-eus-rpms \ --enable=rhel-8-for-x86_64-appstream-eus-rpms \ --enable=rhv-4.4-manager-for-rhel-8-x86_64-rpms \ --enable=fast-datapath-for-rhel-8-x86_64-rpms \ --enable=jb-eap-7.4-for-rhel-8-x86_64-rpms \ --enable=openstack-16.2-cinderlib-for-rhel-8-x86_64-rpms \ --enable=rhceph-4-tools-for-rhel-8-x86_64-rpms \ --enable=rhel-8-for-x86_64-appstream-tus-rpms \ --enable=rhel-8-for-x86_64-baseos-tus-rpms
将 RHEL 版本设置为 8.6:
# subscription-manager release --set=8.6
启用
postgresql
模块的版本 12。# dnf module -y enable postgresql:12
启用
nodejs
模块的版本 14:# dnf module -y enable nodejs:14
同步安装的软件包,将它们更新至最新可用版本。
# dnf distro-sync --nobest
其它资源
有关模块和模块流的详情,请参考安装、管理和删除用户空间组件中的以下部分。
初始化 PostgreSQL 数据库
安装 PostgreSQL 服务器软件包:
# dnf install postgresql-server postgresql-contrib
初始化 PostgreSQL 数据库实例:
# postgresql-setup --initdb
启用
postgresql
服务,并将其配置为在机器引导时启动:# systemctl enable postgresql # systemctl start postgresql
以
postgres
用户身份连接到psql
命令行界面:# su - postgres -c psql
创建默认用户。Manager 的默认用户是
engine
:postgres=# create role user_name with login encrypted password 'password';
创建数据库。Manager 的默认数据库名称是
engine
:postgres=# create database database_name owner user_name template template0 encoding 'UTF8' lc_collate 'en_US.UTF-8' lc_ctype 'en_US.UTF-8';
连接到新数据库:
postgres=# \c database_name
添加
uuid-ossp
扩展:database_name=# CREATE EXTENSION "uuid-ossp";
如果
plpgsql
语言不存在,请添加 plpgsql 语言:database_name=# CREATE LANGUAGE plpgsql;
退出
psql
接口:database_name=# \q
编辑
/var/lib/pgsql/data/pg_hba.conf
文件以启用 md5 客户端身份验证,以便引擎可以远程访问数据库。紧接在文件底部的以local
开头的行下方。将X.X.X.X
替换为 Manager 或数据仓库机器的 IP 地址,并将0-32
或0-128
替换为 CIDR 掩码长度:host database_name user_name X.X.X.X/0-32 md5 host database_name user_name X.X.X.X::/0-128 md5
例如:
# IPv4, 32-bit address: host engine engine 192.168.12.10/32 md5 # IPv6, 128-bit address: host engine engine fe80::7a31:c1ff:0000:0000/96 md5
允许到数据库的 TCP/IP 连接。编辑
/var/lib/pgsql/data/postgresql.conf
文件并添加以下行:listen_addresses='*'
这个示例将
postgresql
服务配置为侦听所有接口上的连接。您可以通过提供 IP 地址来指定接口。更新 PostgreSQL 服务器配置。在
/var/lib/pgsql/data/postgresql.conf
文件中,在文件的底部添加以下行:autovacuum_vacuum_scale_factor=0.01 autovacuum_analyze_scale_factor=0.075 autovacuum_max_workers=6 maintenance_work_mem=65536 max_connections=150 work_mem=8192
打开用于 PostgreSQL 数据库连接的默认端口,并保存更新的防火墙规则:
# firewall-cmd --zone=public --add-service=postgresql # firewall-cmd --permanent --zone=public --add-service=postgresql
重启
postgresql
服务:# systemctl restart postgresql
- (可选)将 SSL 设置为安全数据库连接。