利用pg_rman进行备份与恢复操作

文章目录

  • pg_rman简介
  • 一、安装配置pg_rman
  • 二、创建表与用户
  • 三、备份与恢复


pg_rman简介

pg_rman 是 PostgreSQL 的在线备份和恢复工具。类似oracle 的 rman
pg_rman 项目的目标是提供一种与 pg_dump 一样简单的在线备份和 PITR 方法。此外,它还为每个数据库集群维护一个备份目录。用户可以使用一个命令维护旧备份,包括存档日志。
pg_rman当前最新版本1.3.16支持最新的PostgreSQL 16到11,支持本机(standby/master)在线备份,不支持远程备份,不支持加密存储,支持PITR恢复。


一、安装配置pg_rman

PostgreSQL16安装步骤:http://t.****img.cn/GSA7S

下载源码文件

wget -O pg_rman-1.3.16.tar.gz https://github.com/ossc-db/pg_rman/archive/refs/tags/V1.3.16.tar.gz

解压编译

tar zxvf pg_rman-1.3.16.tar.gz
cd pg_rman-1.3.16
which pg_config
make USE_PGXS=1 PG_CONFIG=/opt/pgsql/postgresql/bin/pg_config
make USE_PGXS=1 PG_CONFIG=/opt/pgsql/postgresql/bin/pg_config install

在这里插入图片描述

查看pg_rman版本

/opt/pgsql/postgresql/bin/pg_rman --version

在这里插入图片描述

创建归档目录并赋权

mkdir -p /opt/pgsql/archive_logs
sudo chown -R postgres:postgres /opt/pgsql/archive_logs
sudo chmod -R 700 /opt/pgsql/archive_logs

创建备份目录并赋权

mkdir -p /home/postgres/pgrman
sudo chown -R postgres:postgres /home/postgres/pgrman
sudo chmod -R 700 /home/postgres/pgrman

文件赋权

sudo chown -R postgres:postgres /opt/pgsql/postgresql/data
sudo chmod -R 700 /opt/pgsql/postgresql/data

检查postgresql.conf文件的日志及归档参数设置

sudo find / -name "postgresql.conf"
vim /opt/pgsql/postgresql/data/postgresql.conf

请添加图片描述
请添加图片描述
请添加图片描述

pg_rman初始化

pg_rman init --pgdata=/opt/pgsql/postgresql/data --backup-path=/home/postgres/pgrman

二、创建表与用户

目标:创建一个test数据库,建个用户t,在t下建个test 表,并随意插入几条记录。

连接到PostgreSQL数据库

sudo -i -u postgres
psql

创建test数据库

CREATE DATABASE test;

创建用户t

CREATE USER t WITH PASSWORD '123456';

赋予用户t对test数据库的所有权限

GRANT ALL PRIVILEGES ON DATABASE test TO t;

连接到test数据库

\c test

创建test表

CREATE TABLE test (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50),
    age INT
);

向test插入数据

INSERT INTO test (name, age) VALUES ('张三', 30);
INSERT INTO test (name, age) VALUES ('李四', 25);
INSERT INTO test (name, age) VALUES ('王五', 35);

在这里插入图片描述

三、备份与恢复

目标:利用pg_rman 做备份和恢复操作:对库做备份后,可以删掉test表,利用备份做恢复

进行基础全备

pg_rman backup --port=5432 \
--backup-mode=full \
--pgdata=/opt/pgsql/postgresql/data \
--backup-path=/home/postgres/pgrman \
--with-serverlog

pg_rman validate --backup-path=/home/postgres/pgrman

在这里插入图片描述

添加数据

psql -d test
INSERT INTO test (name, age) VALUES ('七七', 88);

在这里插入图片描述

归档备份

pg_rman backup --port=5432 \
--backup-mode=archive \
--pgdata=/opt/pgsql/postgresql/data \
--backup-path=/home/postgres/pgrman \
--keep-arclog-files=1000 \
--keep-arclog-days=30

pg_rman validate --backup-path=/home/postgres/pgrman

在这里插入图片描述

查看备份集

pg_rman show -B /home/postgres/pgrman

在这里插入图片描述

先删除一条数据

psql -d test
DELETE FROM test WHERE id = 4;

停本地数据库服务:

pg_ctl stop -D /opt/pgsql/postgresql/data

恢复

pg_rman restore \
--pgdata=/opt/pgsql/postgresql/data \
--backup-path=/home/postgres/pgrman \
--recovery-target-time="2024-07-05 10:25:36" \
--progress

启动PostgreSQL服务

pg_ctl start -D /opt/pgsql/postgresql/data

归档备份恢复验证

psql -d test
SELECT * FROM test;

在这里插入图片描述
再次添加一条数据

INSERT INTO test (name, age) VALUES ('yiyi', 11);

在这里插入图片描述
进行增量备份

pg_rman backup --port=5432 \
--backup-mode=incremental \
--pgdata=/opt/pgsql/postgresql/data \
--backup-path=/home/postgres/pgrman \
--keep-data-generations=3 \
--keep-data-days=7

pg_rman validate --backup-path=/home/postgres/pgrman

查看备份集

pg_rman show -B /home/postgres/pgrman

在这里插入图片描述
添加一个条数据

INSERT INTO test (name, age) VALUES ('yiyi', 11);

在这里插入图片描述
停本地数据库服务:

pg_ctl stop -D /opt/pgsql/postgresql/data

恢复

pg_rman restore \
--pgdata=/opt/pgsql/postgresql/data \
--backup-path=/home/postgres/pgrman \
--recovery-target-time="2024-07-05 12:50:21" \
--progress

启动PostgreSQL服务

pg_ctl start -D /opt/pgsql/postgresql/data

增量备份恢复验证

psql -d test
SELECT * FROM test;

在这里插入图片描述

上一篇:算力互联网网络架构;SRV6;智享WAN


下一篇:可视化大屏的强势在于预警和感知的科学依据可靠性强