Postgresql 14.5主从配置

目录

主库配置

从库配置

附加:脚本执行pgsql命令

如果不会安装pgsql,移步我的pgsql专栏查看安装

主库配置

1.创建专门负责从库同步的用户(可选),不想创建专门用户可以使用你主库的登录用户

CREATE ROLE testuser LOGIN PASSWORD '123456';

2. 在数据目录下的pg_hba.conf文件最后一行新增entity,我这里是让所有用户所有ip都可以复制主库,如果你想限定则自行修改

host    replication     all             0.0.0.0/0           trust

3. 在数据目录下的postgresql.conf文件新增配置

扫描二维码关注公众号,回复: 15368470 查看本文章

wal_level = replica
listen_addresses = '*'
max_wal_senders = 10

 科普

PgSQL 的 WAL(Write-Ahead Logging)机制用于保证数据库的数据一致性和持久性。wal_level 用于指定 WAL 日志的详细程度和记录内容。 

  • minimal:最小日志记录级别,只记录 WAL 日志中必需的信息,例如事务开始和结束等。这种设置适合对 WAL 日志大小有较高要求但是对数据恢复速度要求不高的场景。
  • replica:复制级别,除了记录 minimal 级别的日志信息外,还会记录所有对数据进行更改的操作,包括 DDL 和 DML 语句。这种设置适合在主备复制场景中使用,能够保证备库能够与主库保持一致。
  • logical:逻辑复制级别,除了记录 replica 级别的日志信息外,还会记录逻辑复制相关的信息,例如逻辑复制流所需的元数据。这种设置适合在逻辑备份、数据同步等场景中使用。

4.重启主Postgresql服务 

从库配置

1.新建数据目录,如果已经初始化过数据目录,则删除此目录,需先关停pgsql后再删除

2.备份主数据库

pg_basebackup -D 数据目录 -h ${ip} -p ${port} -U ${username} -X stream -P

 3.修改数据目录及目录下所有文件权限

chown -R username 数据目录/*

 4.新增从库postgresql.conf配置

max_connections = 1000 #必须大于主库的最大连接数
recovery_target_timeline = 'latest'
primary_conninfo = 'host=${ip} port=${port} user=${username} password=${pass}'
hot_standby = on
max_standby_streaming_delay = 30s
wal_receiver_status_interval = 10s
hot_standby_feedback = on

 5.在数据存放目录下新建standby.signal

standby_mode = on

6.切换用户启动从库

7.测试,在主库中操作,看从库是否变化

附加:脚本执行pgsql命令

#!/bin/bash

# 配置数据库用户
PGUSER="username"

# 命令
command="psql语句"

# 设置 .pgpass 文件内容
echo "ip:port:数据库:username:password" > ~/.pgpass
chmod 0600 ~/.pgpass

# 执行创建数据库命令,不需要手动输入密码
/usr/local/pgsql/bin/psql -U $PGUSER -h ip -p port -c "$command" 数据库
 

猜你喜欢

转载自blog.csdn.net/wai_58934/article/details/130882410