规划:
Master :172.31.2.24
node1 :172.31.2.25
1.两部更改配置
vim /etc/postgresql/9.6/main/pg_hba.conf
在文件末尾添加或者找到该行,将peer改为trust
local all all trust
2.两个重启数据库
service postgresql restart
3.配置主服务器,切换成postgres用户,进入数据库,创建一个普通的数据库用户用户进行主从同步(只需赋予登录和复制的权限即可)
su postgres
psql
create role jesse login replication encrypted password '123456';
4.在exit退出到原用户,然后,修改postgresql的pg_hba.conf,配置运行刚刚创建的jesse用户可以进行连接
vim /etc/postgresql/9.6/main/pg_hba.conf
在文件尾添加如下两行
host all all 118.190.154.172/24 trust
host replication jesse 118.190.154.172/24 md5 #运行guoxm用户在151上复制本机数据
5.在配置postgresql.conf
vim /etc/postgresql/9.6/main/postgresql.conf
这次需要配置的是主机的角色
listen_addresses = '*' #监听所有ip
archive_mode = on #开启归档模式
archive_command = 'cp %p /var/lib/postgresql/9.6/main/%f' #归档命令
wal_level = hot_standby #热备模式
max_wal_senders = 1 #最多有1个流复制连接
wal_sender_timeout = 60s #流复制超时时间
max_connections = 100 #最大连接时间,必须要小于从库的配置
保存退出后,重启数据库服务
sudo service postgresql restart
6.配置从服务器
首先,先测试一下是否能连接主服务器
psql -h 172.31.2.24 -U postgres
执行记录:
root@localhost:~# psql -h 172.31.2.24 -U postgres
psql (9.6.13)
SSL 连接(协议:TLSv1.2,密码:ECDHE-RSA-AES256-GCM-SHA384,密钥位:256,压缩:关闭)
输入 "help" 来获取帮助信息.
如果可以,说明主机配置正常,否则检查一下主机的pg_hba.conf配置
进入到postgres用户
sudo su - postgres
先清空main目录下的数据(main文件夹就是PostgreSQL数据的存储文件夹)
rm -rf /var/lib/postgresql/9.6/main/*
7.基础数据备份
然后,开始从主服务器上copy数据到本机上,这一步叫做“基础备份”
pg_basebackup -h 118.190.151.117 -U guoxm –D /var/lib/postgresql/9.6/main/ -X stream –P (注:测试没成功)
或者
pg_basebackup -F p --progress -D /var/lib/postgresql/9.6/main/ -h 172.31.2.24 -p 5432 -U jesse --password (注:测试成功)
8.修改recovery.conf用于从库恢复从主库获取的数据
cp /usr/share/postgresql/9.6/recovery.conf.sample /var/lib/postgresql/9.6/main/recovery.conf
然后编辑如下配置
standby_mode = on #表示该节点是从库
primary_conninfo = 'host=172.31.2.24 port=5432 user=jesse password=123456'#从机信息和连接用户
recovery_target_timeline = 'latest' #说明恢复到最新状态
cp /usr/share/postgresql/9.6/recovery.conf.sample /var/lib/postgresql/9.6/main/recovery.conf
9.编辑/etc/postgresql/9.6/main/postgresql.conf
在文件末尾添加如下配置
wal_level = hot_standby #热备模式
max_connections = 300 #最大连接时间,必须要小于从库的配置
hot_standby = on #说明这台机器不仅用于数据归档,还可以用于数据查询
max_standby_streaming_delay = 30s #流备份的最大延迟时间
wal_receiver_status_interval = 10s #向主机汇报本机状态的间隔时间
hot_standby_feedback = on #r出现错误复制,向主机反馈
10.重启从库
执行如下查询
select client_addr,sync_state from pg_stat_replication;
如果看到如下查询结果
说明192.168.100.70是从服务器,在接收流,而且是异步流复制。说明主从配置成功
注:必须切换到postgres用户下进行查询
参考
https://www.cnblogs.com/guoximing/p/9429009.html
https://www.cnblogs.com/zhangeamon/p/5465501.html
https://blog.csdn.net/qq_42189083/article/details/82627372