北京oracle培训_oracle培训哪家好_CUUG官方论坛_CUUG培训怎么样_CUUG官网

 找回密码
 立即注册
查看: 138|回复: 0

PolarDB for PostgreSQL 备份并恢复一个 Replica 节点

[复制链接]
发表于 2023-8-28 14:02:10 | 显示全部楼层 |阅读模式
PolarDB for PostgreSQL 备份并恢复一个 Replica 节点
基础备份可用于搭建一个新的 Replica(RO)节点。如前文所述,一个正在运行中的 PolarDB for PostgreSQL 实例的数据文件分布在各计算节点的本地存储和存储节点的共享存储中。下面将说明如何使用 polar_basebackup 将实例的数据文件备份到一个本地磁盘上,并从这个备份上启动一个 Replica 节点。
PFS 文件系统挂载
首先,在将要部署 Replica 节点的机器上启动 PFSD 守护进程,挂载到正在运行中的共享存储的 PFS 文件系统上。后续启动的 Replica 节点将使用这个守护进程来访问共享存储。
sudo /usr/local/polarstore/pfsd/bin/start_pfsd.sh -p nvme1n1 -w 2
备份数据到本地存储
运行如下命令,将实例 Primary 节点的本地数据和共享数据备份到用于部署 Replica 节点的本地存储路径 /home/postgres/replica1 下:
polar_basebackup \
--host=[Primary节点所在IP] \
--port=[Primary节点所在端口号] \
-D /home/postgres/replica1 \
-X stream --progress --write-recovery-conf -v
将看到如下输出:
polar_basebackup: initiating base backup, waiting for checkpoint to complete
polar_basebackup: checkpoint completed
polar_basebackup: write-ahead log start point: 0/16ADD60 on timeline 1
polar_basebackup: starting background WAL receiver
polar_basebackup: created temporary replication slot "pg_basebackup_359"
851371/851371 kB (100%), 2/2 tablespaces
polar_basebackup: write-ahead log end point: 0/16ADE30
polar_basebackup: waiting for background process to finish streaming ...
polar_basebackup: base backup completed
备份完成后,可以以这个备份目录作为本地数据目录,启动一个新的 Replica 节点。由于本地数据目录中不需要共享存储上已有的共享数据文件,所以删除掉本地数据目录中的 polar_shared_data/ 目录:
rm -rf ~/replica1/polar_shared_data
重新配置 Replica 节点
重新编辑 Replica 节点的配置文件 ~/replica1/postgresql.conf:
-polar_hostid=1
+polar_hostid=2
-synchronous_standby_names='replica1'
重新编辑 Replica 节点的复制配置文件 ~/replica1/recovery.conf:
polar_replica='on'
recovery_target_timeline='latest'
primary_slot_name='replica1'
primary_conninfo='host=[Primary节点所在IP] port=5432 user=postgres dbname=postgres application_name=replica1'
Replica 节点启动
启动 Replica 节点:
pg_ctl -D $HOME/replica1 start
Replica 节点验证
在 Primary 节点上执行建表并插入数据,在 Replica 节点上可以查到 Primary 节点插入的数据:
$ psql -q \
-h [Primary节点所在IP] \
-p 5432 \
-d postgres \
-c "CREATE TABLE t (t1 INT PRIMARY KEY, t2 INT); INSERT INTO t VALUES (1, 1),(2, 3),(3, 3);"
$ psql -q \
-h [Replica节点所在IP] \
-p 5432 \
-d postgres \
-c "SELECT * FROM t;"
t1 | t2
----+----
1 | 1
2 | 3
3 | 3
(3 rows)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|CUUG认证培训 ( 京ICP备11008061号 )

GMT+8, 2024-5-20 18:49 , Processed in 0.019145 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表