postgresql主备流复制搭建

postgresql 12版本主备流复制搭建(主: pg1 , 备:pg2)
12版本与之前版本流复制搭建基本一致,只是将原recovery.conf文件内容写入到了postgresql.conf中, 并在备机生成 standby.signal 标识文件。
1、更改pg1配置文件 postgresql.conf,有些参数默认是注释掉的,要手动打开

listen_addresses = '*'    # 设置监听的ip,* 为允许所有
wal_level = replica    # wal日志写入级别,要使用流复制,必须使用replica或更高级别
full_page_writes = on    # 可以防止意外宕机后部分数据无法写入
wal_log_hints = on    # 没太懂这个参数的具体含义,但可能会影响后续pg_rewind的使用,所以把它打开,官方描述:also do full page writes of non-critical updates
max_wal_senders = 10    # 设置流复制链接最大值
hot_standby = on    # 打开热备
wal_keep_segments = 64    # 设置流复制保留的最log数目
unix_socket_directories = '.'     # 指定服务器用于监听来自客户端应用的连接的 Unix 域套接字目录。
unix_socket_permissions = 0777    # 设置 Unix 域套接字的访问权限。

2、创建流复制用户 replica 密码为 replication123

create role replica login replication encrypted password 'replication123';

3、修改 pg_hba.conf ,文件最后一行添加下面的内容,重启数据库。主库配置完成。

host all all 0.0.0.0/0 md5
host replication replica 0.0.0.0/0 md5

4、pg2 配置 (备库),在备机删除数据库目录,并执行 pg_basebackup 命令从主库拉取备份至从库。

rm -rf pg_dir  # 数据库init后生成的文件夹,即存放postgresql.conf文件的 文件夹。
pg_basebackup -F p -P -R -D $PGDATA -h 10.110.8.97 -p 5432 -U replica
# 输入 replica用户密码 :replication123

此时,我们会看到备库的数据目录里生成了 standby.signal 文件来标识该机为备库,同时postgresql.auto.conf 文件自动添加了主库的连接信息。
启动备库,流复制搭建成功,主库插入数据会同步至备库。

查看主备信息:

select pg_is_in_recovery();

主库为 ‘f’

select pg_is_in_recovery();
 pg_is_in_recovery
-------------------
 f
(1 row)

备库为 ‘t’

select pg_is_in_recovery();
 t

主备切换
在备机执行 pg_ctl promote 命令升主
在主机执行 pg_rewind 命令拉齐时间线作为备机

你可能感兴趣的:(基础学习,postgresql,数据库,服务器)