postgres13 主从复制
目录
环境
- 主服务器 地址:
172.24.89.190
- 从服务器 地址:
172.24.89.191
两台服务器都已经安装了postgres
,且版本均为13
。安装过程可以参考postgres安装
首先可以在从服务器中使用psql
命令测试能不能与主服务器连接,如果无法连接可能是防火墙端口没有打开,如果是云服务器检查两台服务器是否在同一个安全组策略中。
主服务器配置
修改postgres.conf
listen_addresses = '*' #此处设置为*,具体的访问控制可以在pg_hba.conf 里设置
archive_mode = on # 归档模式开
archive_command= 'cp %p /var/lib/pg13_wal/%f' #归档命令,注意此处的路径必须要事先创建好,且postgres有可写权限
archive_cleanup_command='pg_archivecleanup /var/lib/pg13_wal %r' # 此命令会删除过期的归档文件,如果此命令不开,长时间运行下去会导致磁盘空间被占满!
wal_level = replica
max_wal_senders = 10
wal_sender_timeout = 60s
max_connections = 500
生成posgresql.auto.conf
文件
psql -c "ALTER SYSTEM SET listen_addresses TO '*';"/
此命令会将配置保存在postgresql.auto.conf
中,且与posgressql.conf
并存,会优先使用 .auto.conf
配置
创建复制角色
createuser --replication -P -e backupUser # -P:设置密码,-e:回显
角色授权
在pg_hba.conf
文件中加入
host replication backup_user 172.24.89.191/32 scram-sha-256
重启服务
pg_ctl restart -l pg.log
从服务器配置
将从服务器原有内容备份
pg_ctl stop # 停掉postgres
tar -zcvf ~/pgData.tar.gz /data/pg13Data/ # 备份
rm -rf /data/pg13Data/* # 按回车之前请慎重检查
将主机基础数据备份到从机
pg_basebackup -h 172.24.89.190 -p 54322 -D /data/postgresData/ -U backupUser -P -v -R -X stream -C -S pgstandby_1
-h
指定主服务器地址-p
指定主服务器端口-D
指定数据目录-U
指定连接用户-P
启用进度报告-v
启用详细模式-R
启用恢复配置的创建,创建一个standby.signal
文件,并将连接设置附加到数据目录下的postgresql.auto.conf
-X
用于在备份中包括所需的预写日志文件(WAL文件)。流的值表示在创建备份时流式传输WAL-C
在开始备份之前,允许创建由-S选项命名的复制插槽-S
指定复制插槽名称
备份完成之后,会在
/data/postgresData
目录下创建一个standby.signal
,并将primary_conninfo
写入postgresql.auto.conf
中.
如果postgresql.conf
中的hot_standby = on
,并且数据目录中存在Standby.signal文件,则replication slave将在“热备”模式下运行。
如果出现replication slot "pgstandby_1" already exists
说明已经有同名的从服务器slot了,需要更换新的名称,也可删除存在的slot。
在主服务器中查询pg_replication_slots
表信息,获取slot_name
,然后删除对应的slot。
SELECT slot_name from pg_replication_slots;
SELECT pg_drop_replication_slot('pgstandy_1');
测试
在主服务器中对数据库进行一些操作,到从服务器中查看是否同步过来.
参考
阅读其他文章