在CentOS上配置PostgreSQL的复制可以通过以下步骤完成。这里我们假设你有一个主服务器(Master)和一个从服务器(Slave)。主服务器将用于写入操作,而从服务器将用于读取操作。
安装PostgreSQL:
sudo yum install postgresql-server 初始化数据库:
sudo postgresql-setup initdb 启动并启用PostgreSQL服务:
sudo systemctl start postgresql sudo systemctl enable postgresql 创建复制用户: 以postgres用户登录到PostgreSQL:
sudo -u postgres psql 在psql shell中,创建一个用于复制的用户并授予权限:
CREATE USER replicator WITH REPLICATION PASSWORD 'your_password' LOGIN; GRANT ALL PRIVILEGES ON DATABASE your_database TO replicator; 配置主服务器: 编辑主服务器的postgresql.conf文件:
sudo vi /var/lib/pgsql/data/postgresql.conf 找到并修改以下参数:
wal_level = replica max_wal_senders = 10 wal_keep_segments = 64 hot_standby = on 然后编辑pg_hba.conf文件:
sudo vi /var/lib/pgsql/data/pg_hba.conf 添加以下行以允许从服务器连接:
host replication replicator 192.168.1.100/32 md5 其中192.168.1.100是从服务器的IP地址。
重启主服务器:
sudo systemctl restart postgresql 安装PostgreSQL:
sudo yum install postgresql-server 初始化数据库:
sudo postgresql-setup initdb 启动并启用PostgreSQL服务:
sudo systemctl start postgresql sudo systemctl enable postgresql 停止从服务器的PostgreSQL服务:
sudo systemctl stop postgresql 配置从服务器: 编辑从服务器的postgresql.conf文件:
sudo vi /var/lib/pgsql/data/postgresql.conf 找到并修改以下参数:
hot_standby = on 然后编辑recovery.conf文件(如果不存在则创建):
sudo vi /var/lib/pgsql/data/recovery.conf 添加以下内容:
standby_mode = 'on' primary_conninfo = 'host=master_ip port=5432 user=replicator password=your_password' restore_command = 'cp /var/lib/pg_repl/wal_archive/%f %p' trigger_file = '/tmp/postgresql.trigger.5432' 启动从服务器:
sudo systemctl start postgresql 在主服务器上创建一个测试数据库:
sudo -u postgres psql CREATE DATABASE test_db; 在从服务器上检查数据库:
sudo -u postgres psql \l 你应该能看到test_db数据库。
通过以上步骤,你已经成功在CentOS上配置了PostgreSQL的主从复制。主服务器将处理写入操作,而从服务器将处理读取操作,从而实现负载均衡和高可用性。