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)
|