Postgresql 备份与恢复工具 pg_rman

简介:

--下载软件
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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
存储 关系型数据库 MySQL
mysql数据库备份与恢复
MySQL数据库的备份与恢复是确保数据安全性和业务连续性的关键操作。
653 4
|
6月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
503 10
|
11月前
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
|
8月前
|
存储 关系型数据库 MySQL
【赵渝强老师】使用select...into outfile语句备份MySQL
本文介绍了MySQL中使用`SELECT...INTO OUTFILE`语句将表数据导出为文本文件的方法。通过示例演示了如何备份员工表(emp)的数据,包括创建存储目录、设置权限、配置参数`secure_file_priv`以及解决相关错误的过程。字段分隔符和行终止符可自定义,确保数据格式符合需求。最后展示了备份文件的内容,验证操作成功。
560 36
|
8月前
|
存储 SQL 关系型数据库
【赵渝强老师】使用mysqldump备份MySQL
本文介绍了 MySQL 自带的逻辑备份工具 mysqldump 的使用方法。通过 mysqldump,可以将数据库中的数据转换为对应的 SQL 插入语句,便于备份和还原。文章详细说明了如何备份所有数据库、指定数据库及特定表,排除某些表不备份的操作,以及删除数据库后如何通过备份文件恢复数据。同时提供了视频讲解和具体命令示例,帮助用户更好地理解和应用该工具。
707 5
|
10月前
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
475 28
|
8月前
|
存储 SQL 关系型数据库
【赵渝强老师】使用mydumper备份MySQL
本文介绍了使用mydumper工具进行MySQL数据库备份与恢复的操作方法。相比单线程工作的mysqldump,mydumper支持多线程,速度提升可达10倍。其功能包括事务性表快照、快速压缩、导出binlog等,并提供详细的参数说明和操作步骤。文章通过实例演示了安装mydumper、创建存储目录、全库备份、指定数据库及表备份、删除数据库以及使用myloader恢复数据的完整流程,并附带视频讲解,帮助用户更好地理解和应用该工具。
550 0
|
10月前
|
存储 关系型数据库 MySQL
利用Cron表达式实现MySQL数据库的定时备份
以上就是如何使用Cron表达式和mysqldump命令实现MySQL数据库的定时备份。这种方法的优点是简单易用,而且可以根据需要定制备份的时间和频率。但是,它也有一些限制,例如,它不能备份MySQL服务器的配置文件和用户账户信息,也不能实现增量备份。如果需要更复杂的备份策略,可能需要使用专门的备份工具或服务。
248 15
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
809 3
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
399 3

热门文章

最新文章

推荐镜像

更多