PostgreSQL备份还原

备份工具安装方式备份类型备份特点
pg_dump自带逻辑可备份指定库
pg_dumpall自带逻辑只能全库备份
pg_basebackup自带物理全库物理备份,不清理归档
pgbackrest独立安装物理可指定物理备份,可清理归档
1、pg_dump

创建备份存放目录

mkdir -p /app/pgsql/backup/pg_dump

备份单个库

pg_dump -d work_base >/app/pgsql/backup/pg_dump/work_base.sql

还原单个库

psql </app/pgsql/backup/pg_dump/work_base.sql

备份整个库

pg_dump > /app/pgsql/backup/pg_dump/full.sql

恢复整个库

psql </app/pgsql/backup/pg_dump/full.sql
2、pg_dumpall

创建备份存放目录

mkdir -p /app/pgsql/backup/pg_dumpall

备份全库

pg_dumpall > /app/pgsql/backup/pg_dumpall/all_dbdata.sql

恢复全库

psql postgres < /app/pgsql/backup/pg_dumpall/all_dbdata.sql
3、pg_basebackup

创建备份文件目录

mkdir /app/pgsql/backup/pg_basebackup

执行备份

-D 指定备份文件的存储位置
-Ft 备份文件打个包
-Pv 输出备份的详细信息
-U 用户名(要拥有备份的权限)
-h ip地址  -p 端口号
-R 复制写配置文件

pg_basebackup -D /app/pgsql/backup/pg_basebackup -Ft -Pv

查看备份文件

[postgres@msp-app02 pg_basebackup]$ ll
total 55604
-rw------- 1 postgres postgres   226492 Jan 29 16:10 backup_manifest
-rw------- 1 postgres postgres 39925760 Jan 29 16:10 base.tar
-rw------- 1 postgres postgres 16780288 Jan 29 16:10 pg_wal.tar

模拟数据库数据丢失,先停止主节点postgresql服务,然后删除data目录下的所有内容

pg_ctl -D /app/pgsql/data/ -l /app/pgsql/log/start.log stop

将之前备份的两个文件准备好,一个base.tar,一个pg_wal.tar
第一步:将base.tar中的内容,全部解压到data目录下

tar -xvf base.tar -C /app/pgsql/data/

第二步:将pg_wal.tar中的内容,全部解压到pg_wal目录下

tar -xvf pg_wal.tar -C /app/pgsql/data/pg_wal/

第三步:修改postgresql.auto.conf文件,指定归档文件的存储位置,以及恢复的方式

vim /app/pgsql/data/postgresql.auto.conf
#添加以下内容
restore_command = 'cp /app/pgsql/data/pg_wal/%f %p'
recovery_target = 'immediate'

第四步:启动postgresql

pg_ctl -D /app/pgsql/data/ -l /app/pgsql/log/start.log start

第五步:查看数据是否恢复成功

#登录psql
psql -U postgres -d postgres

#切换到work_base库
\c wok_base;

#查看test_table表数据
select * from test_table;

work_base=# select * from test_table;
  id  |  value   
------+----------
    1 | test1
    2 | test2
    3 | test3
    4 | test4
    5 | test5
    6 | test6
    7 | test7
    8 | test8
--More--				#数据恢复成功

第六步:重新将旧的 primary 节点以 standby 的身份加入到集群中
删除postgresql.auto.conf新添加的配置

vim /app/pgsql/data/postgresql.auto.conf
#删除以下内容
restore_command = 'cp /app/pgsql/data/pg_wal/%f %p'
recovery_target = 'immediate'
#重启生效
pg_ctl -D /app/pgsql/data/ -l /app/pgsql/log/start.log restart
#关闭postgresql服务
pg_ctl -D /app/pgsql/data/ -l /app/pgsql/log/start.log stop

#测试是否能重新加入集群
repmgr node rejoin -f /etc/repmgr/conf/repmgr.conf -h msp-app02 -U repmgr -d repmgr --dry-run --force-rewind

#加入集群
repmgr node rejoin -f /etc/repmgr/conf/repmgr.conf -h msp-app02 -U repmgr -d repmgr --force-rewind

查看集群信息

[postgres@msp-app03 ~]$ repmgr -f /etc/repmgr/conf/repmgr.conf cluster show
 ID | Name      | Role    | Status    | Upstream  | Location  | Priority | Timeline | Connection string
 ----+-----------+---------+-----------+-----------+-----------+----------+----------+----------------------
  1  | msp-app01 | standby |   running | msp-app02 | location1 | 100      | 6        | host=msp-app01 user=r
  2  | msp-app02 | primary | * running |           | location1 | 100      | 6        | host=msp-app02 user=r
  3  | msp-app03 | witness | * running | msp-app02 | location1 | 0        | n/a      | host=msp-app03 user=r
  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值