admin 发表于 2023-8-28 14:02:10

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

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= \--port= \-D /home/postgres/replica1 \-X stream --progress --write-recovery-conf -v将看到如下输出:polar_basebackup: initiating base backup, waiting for checkpoint to completepolar_basebackup: checkpoint completedpolar_basebackup: write-ahead log start point: 0/16ADD60 on timeline 1polar_basebackup: starting background WAL receiverpolar_basebackup: created temporary replication slot "pg_basebackup_359"851371/851371 kB (100%), 2/2 tablespacespolar_basebackup: write-ahead log end point: 0/16ADE30polar_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= port=5432 user=postgres dbname=postgres application_name=replica1'Replica 节点启动启动 Replica 节点:pg_ctl -D $HOME/replica1 startReplica 节点验证在 Primary 节点上执行建表并插入数据,在 Replica 节点上可以查到 Primary 节点插入的数据:$ psql -q \-h \-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 \-p 5432 \-d postgres \-c "SELECT * FROM t;"t1 | t2----+----1 | 12 | 33 | 3(3 rows)
页: [1]
查看完整版本: PolarDB for PostgreSQL 备份并恢复一个 Replica 节点