以银河麒麟系统为例
首先确保两台服务器都已经配置好postgres数据库
1、master操作
主库创建复制用户
进入终端 使用postgres用户 输入 psql 进入数据库
#登录数据库
create role replica login replication encrypted password '*****';
#查询用户是否创建成功
SELECT usename from pg_user;
#查询对应权限是否存在
SELECT rolname from pg_roles;
配置主库pg_hba.conf
host replication replica 0.0.0.0/0 md5
编辑配置信息 postgresql.conf
listen_addresses='*'
max_wal_size = 1GB
min_wal_size = 80MB
log_timezone = 'Asia/Shanghai'
datestyle = 'iso, mdy'
timezone = 'Asia/Shanghai'
default_text_search_config = 'pg_catalog.english'
wal_level = replica # 这个是设置主为wal的主机
max_wal_senders = 5 # 这个设置了可以最多有几个流复制连接,差不多有几个从,就设置几个
wal_keep_segments = 128 # 设置流复制保留的最多的xlog数目
wal_sender_timeout = 60s # 设置流复制主机发送数据的超时时间
max_connections = 200 # 一般查多于写的应用从库的最大连接数要比较大
hot_standby = on # 说明这台机器不仅仅是用于数据归档,也用于数据查询
max_standby_streaming_delay = 30s # 数据流备份的最大延迟时间
wal_receiver_status_interval = 10s # 多久向主报告一次从的状态,当然从每次数据复制都会向主报告状态,这里只是设置最长的间隔时间
hot_standby_feedback = off # 如果有错误的数据复制,是否向主进行反馈
wal_log_hints = on # also do full page writes of non-critical update
配置完毕后重启postgres数据库
2、slave操作
登录从库服务器 把本机的/opt/postgresql/data 目录修改为data-bak备份
打开终端 切换postgres用户登录
红色的配置是主库中的配置信息
pg_basebackup -h 127.0.0.1 -p 5432 -U replica -W -Fp -Xs -Pv -R -D /opt/postgresql/data
输入之前设置的密码
进入备份下来的data目录下修改postgres.conf
修改文件权限
chmod 700 /opt/postgresql/data
chmod 600 /opt/postgresql/data/postgresql.conf
chmod 600 /opt/postgresql/data/standby.signal
chown -R postgres:postgres /opt/postgresql/data
启动数据库
#切换到普通用户
su - postgres
#初始化
/opt/postgresql/bin/initdb -D /opt/postgresql/data -U postgres
#启动数据库
pg_ctl -D /opt/postgresql/data start
#重新启动数据库
pg_ctl -D /opt/postgresql/data restart
#查看数据库状态
pg_ctl -D /opt/postgresql/data status
#停止数据库服务
pg_ctl -D /opt/postgresql/data stop
至此postgres主从配置完毕!