postgresql 主从配置_Postgresql 10.10 主从配置

本步骤基于Ubuntu 18.04和 Postgresql 10.10 假设主数据库为 192.168.1.109 从数据库为192.168.1.111

主数据库配置

创建一个新目录

1mkdir /var/lib/postgresql/10/main/pgarchive

创建流复制帐号

首先需要创建一个数据库用户进行主从同步。创建用户replica,并赋予登录和复制的权限

1postgres# CREATE ROLE replica login replication encrypted password 'replica';

修改pg_hba.conf,允许replica用户同步

在pg_hba.conf里增加两行:

1

2host all all 192.168.1.111/32 trust #允许从服务器连接到主服务器

host replication replica 192.168.1.111/32 md5 #允许从服务器使用replica用户来复制

修改postgresql.conf1

2

3

4

5

6

7

8

9

10

11max_connections = 100 # 这个设置要注意下,从库的max_connections必须要大于主库的

max_wal_senders = 1 # 这个设置了可以最多有几个流复制连接,差不多有几个从,就设置几个 但是,还需要注意,pg_basebackup也会用到一个。

wal_level = replica

archive_mode = on # 设置自动归档

hot_standby = on

archive_command = ‘test ! -f /var/lib/postgresql/10/main/pgarchive/%f && /usr/bin/rsync -a %p /var/lib/postgresql/10/main/pgarchive/%f’ # 设置归档命令

wal_keep_segments = 128 # 设置流复制保留的最多的wal文件

full_page_writes = on # 开启全页写入 pg_rewind 前提条件 如果不将整个page写入WAL中,在介质恢复的时候WAL中记录的数据不足以实现完整的恢复

wal_log_hints = on # pg_rewind 前提条件

min_wal_size = 512MB #最小的wal 空间

max_wal_size = 2GB # max_wal_size = (3 * checkpoint_segments) * 16MB CheckPointSegments得到的值范围是 max_wal_size 的 1/3 ~ 1/2,最小为1

修改完 ,重启主数据库

在测试服务器上测试是否能够正常连接:

1psql -h 192.168.1.109 -U postgres

从服务器

从主服务器拷贝基础数据

首先需要删除从数据库下所有数据:

1pg_basebackup -h 192.168.1.109 -U replica -F p -X stream -P -R -D /var/lib/postgresql/10/main/

pg_basebackup参数说明如下:

-h: 指定连接的数据库的主机名或IP地址

-U: 指定连接的用户名

-F: 指定了输出的格式,支持p(原样输出)或者t(tar格式输出)

-X: 表示备份开始后,启动另一个流复制连接从主库接收WAL日志

-P: 表示允许在备份过程中实时的打印备份的进度

-R: 表示会在备份结束后自动生成recovery.conf文件

-D: 指定备份写入的数据目录,需要与数据库配置的数据库目录一致,初次备份之前从库的数据目录需要手动清空

-l: 表示指定一个备份的标识

配置从库recovery.conf

修改recovery.conf 如下内容:

1

2

3

4

5

6standby_mode = 'on'

primary_conninfo = 'user=replica password=123456 host=db1 port=5432 sslmode=disable sslcompression=1 target_session_attrs=any'

restore_command = '/usr/bin/rsync -a %f /var/lib/postgresql/10/main/pgarchive%p'

# recovery_target_timeline = 'latest' #测试采用默认即可

archive_cleanup_command = 'pg_archivecleanup /var/lib/postgresql/10/main/pgarchive %r'

recovery_target_timeline = 'latest' # 一定要配置这个,要不然主从切换后不会同步成功

然后重启从服务器

查看同步状态

主库查询1select pid,state,client_addr,sync_priority,sync_state from pg_stat_replication;

查询备库落后多少字节1select client_addr, pg_wal_lsn_diff(sent_lsn,replay_lsn)/1024/1024 as MB from pg_stat_replication;

PostgreSQL主从复制是一种常见的高可用性和数据备份解决方案。它可以确保在主节点故障时,从节点可以接管并继续提供服务。 要配置PostgreSQL主从复制,需要进行以下步骤: 1. 确保主节点和从节点上都已安装了PostgreSQL。 2. 在主节点上修改postgresql.conf文件,启用WAL(Write-Ahead Logging)并配置适当的参数。找到并修改以下参数: ``` wal_level = replica max_wal_senders = 10 wal_keep_segments = 10 ``` 这些参数将确保主节点生成WAL日志,并允许从节点连接并接收这些日志。 3. 在主节点上修改pg_hba.conf文件,允许从节点连接。找到并添加以下行: ``` host replication <从节点用户名> <从节点IP地址>/32 md5 ``` `<从节点用户名>`是从节点连接时使用的用户名,`<从节点IP地址>`是从节点的IP地址。 4. 在主节点上重启PostgreSQL服务以使更改生效。 5. 在从节点上创建一个空的数据目录。 6. 在从节点上创建一个recovery.conf文件,指定主节点的连接信息和复制模式。将以下内容添加到recovery.conf文件中: ``` standby_mode = 'on' primary_conninfo = 'host=<主节点IP地址> port=5432 user=<从节点用户名> password=<从节点密码>' trigger_file = '/path/to/trigger/file' ``` `<主节点IP地址>`是主节点的IP地址,`<从节点用户名>`和`<从节点密码>`是用于连接主节点的凭据。 7. 启动从节点上的PostgreSQL服务。 完成上述步骤后,主节点和从节点之间的复制将开始运行。你可以通过在主节点上执行一些写操作,然后在从节点上查看数据是否同步来验证复制是否成功。 请注意,以上步骤仅适用于基本的主从复制配置。在实际部署中,你可能还需要考虑故障转移、监控、自动故障恢复等方面的配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值