Postgresql 主从复制

博观而约取,厚积而薄发。这篇文章主要讲述Postgresql 主从复制相关的知识,希望能为你提供帮助。
pgsql主从复制 操作系统:centos 数据库: postgresql 13.3 postgresql 13.3 安装请看 https://blog.51cto.com/suncj/4829793
数据库执行文件目录

/usr/local/pgsql /db/postgres-log

【Postgresql 主从复制】数据库文件目录:
/db/pgsql/data

主:192.168.5.131 pgsql13.3
从:192.168.5.133 pgsql13.3
一、主库配置
1.创建具有流复制权限的用户
CREATE ROLE replica login replication encrypted password 123456;

2.编辑pg_hba.conf
[root@localhost data]# vim pg_hba.conf hostreplicationreplica192.168.5.133/32md5 hostallall192.168.5.133/32trust

3.编辑postgresql.conf
[root@localhost data]# vim postgresql.conf #监听所有ip listen_addresses = * #开启归档 archive_mode = on #归档命令 archive_command = cp %p /db/pgsql/archive/%f #9.6开始没有hot_standby(热备模式) wal_level = replica #最多有10个流复制连接 max_wal_senders = 10 wal_keep_size = 64 #流复制超时时间 wal_sender_timeout = 60s #最大连接数,从机大于或等于 max_connections = 100

重启postgresql
[root@localhost data]# service postgresql restart

二、从库配置
1.验证在从库是否可以访问主节点
[root@localhost data]# psql -h 192.168.5.131 -U postgres psql (13.3) Type "help" for help. postgres=#

2.停止从库postgresql服务
[root@localhost data]# service postgresql stop

3.清空从库数据库存储目录
[root@localhost data]# rm -rf /db/pgsql/data/*

4.从主服务器上copy数据到从服务器(ip是主节点IP地址)
[root@localhost data]# pg_basebackup -h 192.168.5.131 -p 5432 -U replica -Fp -Xs -Pv -R -D /db/pgsql/data/

5.此时data目录下会出现standby.signal
[root@localhost data]# vim standby.signal standby_mode = on

6.修改postgresql.conf文件
[root@localhost data]# vim postgresql.conf #从机信息和连接用户 primary_conninfo = host=192.168.5.131 user=replica password=123456 #说明恢复到最新状态 recovery_target_timeline = latest #大于主节点,正式环境重新考虑此值的大小 max_connections = 120 #说明这台机器不仅可以用户数据归档,还可以用于数据查询 hot_standby = on #流备份的最大延迟时间 max_standby_archive_delay = 30s #向主机汇报本地状态的间隔时间 wal_receiver_status_interval = 10s #出现错误复制,向主机反馈 hot_standby_feedback = on

7.开启从的数据库
[root@localhost data]# service postgresql start

三、验证主从搭建是否成功
1.登录主的数据库
[root@localhost data]# psql -U postgres psql (13.3) Type "help" for help. postgres=# select client_addr,sync_state from pg_stat_replication; client_addr| sync_state ---------------+------------ 192.168.5.133 | async (1 row) postgres=#

2.在主节点上创建ceshi数据库,看看从节点能不能收到
postgres=# create database ceshi; postgres=# \\l List of databases Name|Owner| Encoding |Collate|Ctype|Access privileges -----------+----------+----------+-------------+-------------+----------------------- ceshi| postgres | UTF8| zh_CN.UTF-8 | zh_CN.UTF-8 |

3.从节点查看
postgres=# \\l List of databases Name|Owner| Encoding |Collate|Ctype|Access privileges -----------+----------+----------+-------------+-------------+----------------------- ceshi| postgres | UTF8| zh_CN.UTF-8 | zh_CN.UTF-8 | postgres| postgres | UTF8| zh_CN.UTF-8 | zh_CN.UTF-8 |


    推荐阅读