前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[译]Windows下的流复制:快速指南

[译]Windows下的流复制:快速指南

作者头像
yzsDBA
发布2022-12-27 13:49:35
5460
发布2022-12-27 13:49:35
举报

Windows下的流复制:快速指南

大家可能对Linux环境下搭建流复制很熟悉,对于windows环境下配置流复制可能会有些默认,从PostgreSQL weekly博客中看到有篇对Windows环境下搭建流复制的介绍,本文将其整理过来,以供参考。

PG weekly:https://postgresweekly.com/

DB weekly:https://www.dbweekly.com/

Postgres文档非常全面地包含了流复制方面内容,但您可能还需要一些更易于理解的内容以供参考。本文,讨论如何在Windows中设置流复制。

简要说,PG复制就是将数据从一个数据库服务(primary)拷贝到另一个(standby)。本文主要关注流复制。构建步骤和linux环境下基本相同,为方便起见,本文中的命令和代码示例都是针对windows环境的。假设已准备好2台按照了PG的服务器。我们的测试环境是windows server 2012,PG是11.9。

需要注意,primary指已运行的PG节点,可读写,备机仅可读。现在开始搭建:

1)更新postgres.conf和pg_hba.conf文件,在主上需要在postgres.conf附加以下配置:

wal_level = hot_standby
full_page_writes = on
wal_log_hints = on
max_wal_senders = 6
max_replication_slots = 6
hot_standby = on
hot_standby_feedback = on

2)在pg_hba.conf中添加2台服务器的外部IP地址,下面是个例子:

host replication repl_user IP_of_primary/32 scram-sha-256
host replication repl_user IP_of_standby/32 scram-sha-256

该文件会复制到备机。当该节点提升主时,已配置允许旧的主节点连接。

3)创建一个名为repl_user的复制用户

这是我们要创建的具有所需复制权限的用户。在主上,执行:

psql -d postgres   -U postgres   -c "CREATE ROLE repl_user LOGIN REPLICATION ENCRYPTED PASSWORD 'secretpasswordhere';"

4)正如上面的配置max_replication_slots=6,我们在设置中使用复制槽,复制槽避免了备机关闭,并稍后恢复时无法找到预写日志段的问题。关于复制槽需要记住:当备机关闭时,复制槽没有更新,主将继续累积WAL,这将导致WAL目录被填满,知道备机接收WAL或者知道复制槽被删除。PG13引入了一个参数辅助复制槽和磁盘使用:max_slot_wal_keep_size,允许指定保留WAL复制槽的数量。这会阻止PG因等待丢失的备而不断累积WAL,但这也意味着WAL将被丢弃,并且由于必要的WAL不存在,备机将需要重新构建。

5)主上通过运行下面命令为备机重建复制槽:

psql -d postgres -U postgres -c "SELECT * FROM pg_create_physical_replication_slot('standby1', true);"

6)执行一个基础备份,完成后,需要擦除现有的备机。需要先停机;

pg_ctl -D "your\data\directory" stop -mi

停机后需要删除data目录,然后执行pg_basebackup做基础备份:

pg_basebackup -D \your\data\directory -Fp -R -Xs -c fast -l 'initial clone' -P -v -h IP_of_master -U repl_user

当然,如需要输入密码,还需要输入repl_user的密码。

7)更新备机的设置。PG11及之前版本,基础备份完成后,需要编辑备机的recovery.conf,添加复制槽名。PG12及之后版本,不再有recovery.conf文件,所有的配置以到了postgres.conf中:

primary_slot_name = 'standby1'

8)使用pg_ctl -D [datadir] start,或者创建了服务的话可以使用net start命令启动。

9)可以从Logs中:看到检查流复制

Started streaming from primary at [wal] on timeline [number]

也可以运行下面命令:

Primary:

Select * from pg_stat_replication;

Slave:

Select * from pg_stat_wal_receiver;

原文

https://www.crunchydata.com/blog/postgres-streaming-replication-on-windows-a-quick-guide

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 yanzongshuaiDBA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原文
相关产品与服务
数据库专家服务
数据库专家服务(Database Expert Service,DBexpert)为您提供专业化的数据库服务。仅需提交您的具体问题和需求,即可获得腾讯云数据库专家的专业支持,助您解决各类专业化问题。腾讯云数据库专家服务团队均有10年以上的 DBA 经验,拥有亿级用户产品的数据库管理经验,以及丰富的服务经验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档