- PostgreSQL版本:11.5
- 2台机器,搭建PG主备流复制
- 主库:192.168.56.101
- 备库:192.168.56.102
一、环境准确(主备库都要执行)
创建pg用户
useradd pg
创建PG数据目录
mkdir -p /data/pg/
chown -R pg:pg /data/pg
切换到pg用户
su – pg
二、创建PG主库(主库执行)
初始化主库:
initdb -D /data/pg
修改主库配置文件:
vim /data/pg/postgresql.conf
listen_addresses = \'*\'
port = 5432
max_wal_senders = 10
wal_level = replica
修改主库配置文件,添加配置项:
vim /data/pg/pg_hba.conf
host replication all 0.0.0.0/0 md5
启动主库:
pg_ctl -D /data/pg start
创建复制账号:
CREATE USER repl replication LOGIN CONNECTION LIMIT 5 ENCRYPTED PASSWORD \’123456\’;
三、创建主库的基础备份(备库执行)
创建基础备份到本地:
pg_basebackup -h 192.168.56.101 -U repl -W -p 5432 -D /data/pg -l backup_label
-W参数在终端提示符下输入密码。
设置备库配置文件:
vim /data/pg/postgresql.conf
port = 5432
hot_standby = on
vim /data/pg/recovery.conf
standby_mode = \'on\'
primary_conninfo = \'user=repl host=192.168.56.101 password=123456 port=5432 sslmode=disable sslcompression=0 target_session_attrs=any\'
启动备库:
pg_ctl -D /data/pg start
四、测试流复制
连接到主库(192.168.56.101),创建表,写入数据:
psql postgres
postgres=# create database db;
postgres=# \\l
postgres=# \\c db
db=# create table tb(id int);
db=# insert into tb select 1;
db=# exit
连接到备库(192.168.56.102),查询数据:
psql postgres
postgres=# \\l
postgres=# \\c db
db=# select * from tb;