pg_rman 实现对postgresql数据库的备份,恢复与管理

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: --下载软件https://github.com/ossc-db/pg_rman--安装 unzip pg_rman-master.
--下载软件
https://github.com/ossc-db/pg_rman

--安装
 unzip pg_rman-master.zip 
 
--下载安装postgresql93-libs
http://yum.postgresql.org/9.3/redhat/rhel-6.4-x86_64/ 

[root@rudy tools]# rpm -ivh postgresql93-libs-9.3.10-1PGDG.rhel6.x86_64.rpm 
warning: postgresql93-libs-9.3.10-1PGDG.rhel6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY
Preparing...                ########################################### [100%]
   1:postgresql93-libs      ########################################### [100%]

--下载pg_rman,注意与其对应的数据库版本   
 https://github.com/ossc-db/pg_rman/releases  
[root@rudy tools]# rpm -ivh pg_rman-1.3.1-1.pg93.rhel6.x86_64.rpm    
Preparing...                ########################################### [100%]
   1:pg_rman                ########################################### [100%]
   
   
--注意默认pg_rman安装在 /usr/pgsql-9.3 目录下   

--注意pg_rman需要一个备份目录
export BACKUP_PATH=/tmp/pg_rman


--初始化备份目录
mkdir pg_rman
pg_rman init -B /tmp/pg_rman

--查看备份集
 pg_rman show
 
 --删除备份
  pg_rman delete 2015-11-19 15:10:34
  
  
--pg_rman 支持增量备份和压缩备份

 
 --pg_rman必须要有一个全量的备份做增量
 pg_rman backup --backup-mode=full --progress
 
 --基于全库备份的增量备份
  pg_rman backup -b incremental -P -Z 
  
  
  
 --pg_rman 的备份必须都是经过验证过的,否则不能进行恢复和增量备份
 Backups without validation cannot be used for restore and incremental backup  
 --执行完备份要执行一次validate,因为备份后的状态是done,还不能进行恢复
 pg_rman validate
 
 $ pg_rman show detail
==========================================================
 StartTime           Mode  Duration    Size   TLI  Status
==========================================================
2015-07-30 13:36:38  FULL        0m    15MB    15  DONE
The status of the backup we have just taken is DONE. This is because we does not do validate yet. So, do validate command next.

$ pg_rman validate
INFO: validate: "2015-07-30 13:36:38" backup, archive log files and server log files by CRC
INFO: backup "2015-07-30 13:36:38" is valid

$ pg_rman show
==========================================================
 StartTime           Mode  Duration    Size   TLI  Status
==========================================================
2015-07-30 13:36:38  FULL        0m    15MB    15  OK



--hard-copy,注意这个参数,其默认对归档文件创建的是软连接
The archive WAL are copied to archive WAL storage area. If not specified, pg_rman makes symbolic link to archive WAL where are in the backup catalog directory.

 --删除指定时间点之前的数据
 pg_rman delete '2015-12-28 14:40:00'
 --注意pg_rman至少要保存一个完整的备份及其增量
 WARNING: cannot delete backup with start time "2015-12-28 14:29:22"
 DETAIL: This is the incremental backup necessary for successful recovery.
 WARNING: cannot delete backup with start time "2015-12-28 14:26:42"
 DETAIL: This is the latest full backup necessary for successful recovery.
  --如果实在想删除可以指定 -f 参数
  pg_rman delete -f '2015-12-28 14:39:51'
  
  
  
  

-- pg_rman 的delete只是删除其文件,但对于purge操作是删除备份目录中的备份信息
Though delete command removes actual data from file system, there remains some catalog information of deleted backups. In order to remove this, execute purge command

-- pg_rman 可用于初始化一个standby 数据库
pg_rman backup --pgdata=/home/postgres/pgdata_sby --backup-mode=full --host=master --standby-host=localhost --standby-port=5432

--pg_rman 的增量备份是基于文件系统的update time时间线
When taking an incremental backup, pg_rman check the timeline ID of the target database whether it is the same with the one of the full backup in backup list. 
But, pg_rman does not check whether the data itself is same with the full backup in backup list. 
So, you can take an incremental backup over the full backup against the database which has the same timeline ID but has different data



--对于pg_rman,如果备份的数据库全部丢失,包括 pg_xlog目录内的文件,其只能恢复到备份时的时间点
--模拟数据丢失
mv data data_bak

--使用pg_rman进行恢复,注意如果归档目录不存在,则需要手动创建一个归档目录
pg_rman restore

--恢复完成之后,由于xlog丢失,启动数据库失败,错误如下
2015-12-27 19:08:35.848 PST,,,6422,,5680a7b3.1916,2,,2015-12-27 19:08:35 PST,,0,LOG,00000,"invalid primary checkpoint record",,,,,,,,"ReadCheckpointRecord, xlog.c:6411",""
2015-12-27 19:08:35.848 PST,,,6422,,5680a7b3.1916,3,,2015-12-27 19:08:35 PST,,0,LOG,00000,"invalid secondary checkpoint record",,,,,,,,"ReadCheckpointRecord, xlog.c:6415",""
2015-12-27 19:08:35.848 PST,,,6422,,5680a7b3.1916,4,,2015-12-27 19:08:35 PST,,0,PANIC,XX000,"could not locate a valid checkpoint record",,,,,,,,"StartupXLOG, xlog.c:5121",""

--此时只能重置xlog,并取消恢复模式
pg_resetxlog -f /usr/local/postgresql/9.3.4/data
mv recovery.conf recovery.done


--对于pg_rman,如果备份的数据库全部丢失,但xlog日志存在,此时可以恢复到数据库崩溃的时间点
 rm -rf data/pg_xlog/
 --拷贝原有的xlog到恢复的数据库目录中
 cp -r data_bak/pg_xlog/ data
 --删除archive_status文件目录的文件
 rm -rf data/pg_xlog/archive_status/*
 
 --注释掉recovery.conf的恢复点
 #recovery_target_timeline = '2'
--启动数据库
 pg_ctl start

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
16天前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL的数据库
PostgreSQL的逻辑存储结构涵盖数据库集群、数据库、表、索引、视图等对象,每个对象有唯一的oid标识。数据库集群包含多个数据库,每个数据库又包含多个模式,模式内含表、函数等。通过特定SQL命令可查看和管理这些数据库对象。
|
18天前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL的数据库集群
PostgreSQL的逻辑存储结构涵盖了数据库集群、数据库、表、索引、视图等对象,每个对象都有唯一的oid标识。数据库集群是由单个PostgreSQL实例管理的所有数据库集合,共享同一配置和资源。集群的数据存储在一个称为数据目录的单一目录中,可通过-D选项或PGDATA环境变量指定。
|
1月前
|
关系型数据库 分布式数据库 数据库
PostgreSQL+Citus分布式数据库
PostgreSQL+Citus分布式数据库
61 15
|
1月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
74 3
|
1月前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
37 3
|
1月前
|
SQL 关系型数据库 数据库
PostgreSQL性能飙升的秘密:这几个调优技巧让你的数据库查询速度翻倍!
【10月更文挑战第25天】本文介绍了几种有效提升 PostgreSQL 数据库查询效率的方法,包括索引优化、查询优化、配置优化和硬件优化。通过合理设计索引、编写高效 SQL 查询、调整配置参数和选择合适硬件,可以显著提高数据库性能。
238 1
|
1月前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
145 4
|
2月前
|
存储 定位技术 数据库
介绍一下数据库的备份和恢复策略
【10月更文挑战第21】介绍一下数据库的备份和恢复策略
|
29天前
|
数据库
【赵渝强老师】数据库的备份方式
备份数据库是指将数据库中的数据及相关信息保存起来,以便在系统故障时恢复。备份对象不仅限于数据本身,还包括数据库对象、用户权限等。根据备份策略、类型和模式的不同,可分为整体/部分备份、完全/增量备份、一致/非一致备份。文中还附有相关视频讲解。
|
2月前
|
SQL 关系型数据库 数据库
使用 PostgreSQL 和 Python 实现数据库操作
【10月更文挑战第2天】使用 PostgreSQL 和 Python 实现数据库操作