以下是一个简化的PostgreSQL环境搭建和主备构建的例子。请确保在执行以下命令前已经安装了PostgreSQL。
- 安装PostgreSQL(以Ubuntu为例):
sudo apt update
sudo apt install postgresql postgresql-contrib
- 创建一个新的用户和数据库(以
mydb
为例):
sudo -u postgres createuser --interactive
sudo -u postgres createdb mydb
- 为了使用复制,需要在
postgresql.conf
中设置相关的复制参数,并重启PostgreSQL服务。 - 在主服务器上配置复制(以
primary_user
为例,primary_password
为密码):
-- 登录到PostgreSQL
psql -U postgres
-- 设置主服务器的相关配置
ALTER SYSTEM SET wal_level = 'replica';
ALTER SYSTEM SET max_wal_senders = 3;
ALTER SYSTEM SET max_replication_slots = 3;
-- 重载配置并退出
SELECT pg_reload_conf();
\q
- 创建复制用的密码(以
primary_user
和primary_password
为例):
sudo -u postgres psql
\password primary_user
\q
- 在主服务器的
pg_hba.conf
中添加允许复制的记录:
# TYPE DATABASE USER ADDRESS METHOD
host replication primary_user replica_ip/32 md5
- 在备服务器上配置复制(以
standby_user
和standby_password
为例):
-- 登录到PostgreSQL
psql -U postgres
-- 设置备服务器的相关配置
ALTER SYSTEM SET hot_standby = 'on';
ALTER SYSTEM SET max_connections = 100;
-- 重载配置并退出
SELECT pg_reload_conf();
\q
- 在备服务器的
recovery.conf
中配置复制(如果文件不存在,需要创建):
primary_conninfo = 'host=primary_ip port=5432 user=primary_user password=primary_password'
- 在备服务器的
pg_hba.conf
中添加允许复制的记录:
# TYPE DATABASE USER ADDRESS METHOD
host replication standby_user primary_ip/32 md5
- 重启主服务器和备服务器的PostgreSQL服务。
- 在备服务器上启动复制进程:
pg_basebackup -h primary_ip -U standby_user -D /path/to/data/directory -X stream -P
- 在备服务器上,将PostgreSQL服务启动为备用服务器模式:
sudo service postgresql start
以上步骤提供了一个基本的PostgreSQL主备建立过程。在实际部署中,可能需要考虑更多的配置细节,如网络配置、权限设置、监控和故障转移策略等。