`
yuzhi2217
  • 浏览: 36441 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在线备份与恢复

阅读更多

postgresql同样支持在线备份,该备份方式与oracle中用户热备的方式相同,手动拷贝数据文库文件与归档日志。可以根据测试过程将备份直接写成script,通过定制,完成数据库的自动备份。

  postgresql的恢复支持基于时间戳与事务ID,可以通过时间戳或事务ID的方式,完成数据库的不完全恢复或者因错误操作的故障恢复。

  该测试目的:postgresql的在线备份;通过在线备份完成恢复。

  1,开启归档

[postgre@daduxiong ~]$ more /usr/local/pgsql/data/postgresql.conf |grep archive_
archive_mode = on               # allows archiving to be done
archive_command = 'cp -i %p /archive/%f >/dev/null'

  2,重新启动数据库

[root@daduxiong ~]# service postgresql 
stopStopping PostgreSQL: server stopped
ok
[root@daduxiong ~]# service postgresql 
startStarting PostgreSQL: ok

  3,启动备份

[postgre@daduxiong archive]$ psql postgres -c "select pg_start_backup('hot_backup');"  
pg_start_backup 
----------------- 
0/7000020
(1 row)

  4,使用tar命令备份数据库文件,不包含pg_xlog目录

[postgre@daduxiong archive]$ tar --exclude $PGDATA/pg_xlog -cvjpf /archive/pgbackup.tar.bz2 $PGDATA

  5,完成备份

[postgre@daduxiong archive]$ psql postgres -c "select pg_stop_backup();" 
pg_stop_backup 
---------------- 
0/70133A0
(1 row)

  6,postgres数据库中创建表并插入记录,作为恢复时的判断。

[postgre@daduxiong archive]$ psql postgres
Welcome to psql 8.3.10, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms       
\h for help with SQL commands       
\? for help with psql commands       
\g or terminate with semicolon to execute query       
\q to quit
postgres=# create table abc(id integer);
CREATE TABLE
postgres=# insert into abc values(1);
INSERT 0 1
postgres=# \q

 

  7,此时假设数据库出现问题,停止数据库,拷贝日志

[root@daduxiong pgsql]# service postgresql stop
Stopping PostgreSQL: server stopped
ok
[postgre@daduxiong archive]$ cp $PGDATA/pg_xlog/*00* /archive/

  8,删除"发生错误"data目录

[root@daduxiong pgsql]# rm -rf data

  9,解压之前的备份文件压缩包

[postgre@daduxiong pgsql]$ tar -xvf /archive/pgbackup.tar.bz2
....省略
/usr/local/pgsql/data/global/2843
/usr/local/pgsql/data/postmaster.opts
/usr/local/pgsql/data/pg_twophase/
/usr/local/pgsql/data/postmaster.pid
/usr/local/pgsql/data/backup_label
/usr/local/pgsql/data/PG_VERSION

  10,恢复data目录,重新创建pg_xlog目录及其子目录archive_status

[root@daduxiong pgsql]# mv /archive/usr/local/pgsql/data /usr/local/pgsql
[root@daduxiong data]# mkdir pg_xlog
[root@daduxiong data]# chmod 0700 pg_xlog/
[root@daduxiong data]# chown postgre:postgre pg_xlog/
[root@daduxiong data]# cd pg_xlog/
[root@daduxiong pg_xlog]# mkdir archive_status
[root@daduxiong pg_xlog]# chmod 0700 archive_status/
[root@daduxiong pg_xlog]# chown postgre:postgre archive_status/
[root@daduxiong pg_xlog]# mv /archive/*00* /usr/local/pgsql/data/pg_xlog
[root@daduxiong pg_xlog]# cd ..
[root@daduxiong data]# ls
backup_label  pg_clog        pg_multixact  pg_twophase  postgresql.conf
base          pg_hba.conf    pg_subtrans   PG_VERSION   postmaster.opts
global        pg_ident.conf  pg_tblspc     pg_xlog      postmaster.pid

  11,配置恢复配置文件

[root@daduxiong data]# touch recovery.conf
[root@daduxiong data]# echo "restore_command='cp -i /archive/%f %p'" >>recovery.conf
[root@daduxiong data]# chown postgre:postgre recovery.conf
[root@daduxiong data]# chmod 0750 recovery.conf

  12,启动数据库,观察数据库启动的日志

[root@daduxiong data]# service postgresql 
startStarting PostgreSQL: ok

---省略日志部分内容
LOG:  selected new timeline ID: 3
LOG:  restored log file "00000002.history" from archive
LOG:  archive recovery complete
LOG:  autovacuum launcher started
LOG:  database system is ready to accept connections
cp: overwrite `/archive/000000010000000000000008'? cp: overwrite `/archive/000000010000000000000009'? cp: overwrite `/archive/000000020000000000000009'? cp: overwrite `/archive/00000002000000000000000A'?  

 

  13,验证恢复结果。检查之前创建的表与记录。

[postgre@daduxiong archive]$ psql postgres
Welcome to psql 8.3.10, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms       
\h for help with SQL commands       
\? for help with psql commands       
\g or terminate with semicolon to execute query       
\q to quit

postgres=# select * from abc; 
id
----  
1
(1 row)
postgres=# \q

[root@daduxiong data]# ls -l
total 80
-rw------- 1 postgre postgre   147 Aug 31 10:26 backup_label.old
drwx------ 6 postgre postgre  4096 Aug 27 11:33 base
drwx------ 2 postgre postgre  4096 Aug 31 10:41 global
drwx------ 2 postgre postgre  4096 Aug 10 11:06 pg_clog
-rwx------ 1 postgre postgre  3429 Aug 10 11:10 pg_hba.conf
-rwx------ 1 postgre postgre  1460 Aug 10 11:06 pg_ident.conf
drwx------ 4 postgre postgre  4096 Aug 10 11:06 pg_multixact
drwx------ 2 postgre postgre  4096 Aug 10 11:06 pg_subtrans
drwx------ 2 postgre postgre  4096 Aug 10 11:06 pg_tblspc
drwx------ 2 postgre postgre  4096 Aug 10 11:06 pg_twophase
-rwx------ 1 postgre postgre     4 Aug 10 11:06 PG_VERSION
drwx------ 3 postgre postgre  4096 Aug 31 10:35 pg_xlog
-rwx------ 1 postgre postgre 16727 Aug 31 09:42 postgresql.conf
-rwx------ 1 postgre postgre    59 Aug 31 10:35 postmaster.opts
-rw------- 1 postgre postgre    47 Aug 31 10:35 postmaster.pid
-rwxr-x--- 1 postgre postgre    39 Aug 31 10:34 recovery.done

  说明:

  该测试中采用的是系统安装默认的数据,如果是生产库需要注意备份所有的表空间,不能仅仅备份软连接.

  数据库完成备份后,recovery.conf文件变成recovery.done,backup_label文件变成了backup_lable.old.

  oracle的备份通常采用RMAN工具备份,该工具功能强大,使用方便,得到大家的认可。

  开源项目组也为postgresql开发了一款类似的工具pg-rman,其功能也很强大,使用方式和特点与ORACLERMAN非常类似。

 

分享到:
评论

相关推荐

    MES中Oracle在线备份与恢复.pdf

    Oracle数据库的在线备份与恢复是企业级数据保护的重要策略,特别是在制造执行系统(MES)中,数据的安全性和可用性至关重要。MES系统中的Oracle数据库通常承载着生产过程的关键信息,因此,确保其备份和恢复能力是业务...

    DM7备份与还原

    ##### 2.3 还原与恢复 - **数据还原**:将备份数据恢复到当前数据库的过程。 - **数据恢复**:在数据还原之后,可能还需要通过重做日志和归档日志来进行进一步的恢复,以确保数据的一致性和完整性。 **注意事项**...

    达梦数据库-备份与还原-国产数据库-DM8备份与还原.pdf

    2. **DMRMAN (DM Recover Manager)**:这是一个更加强大的命令行工具,提供了更多的备份和恢复选项,如增量备份、在线备份等。 3. **Manager(管理工具)**:这是一个图形界面工具,通过直观的界面简化了备份与恢复...

    asp.net实现在线对数据库进行备份与还原的操作

    综上所述,ASP.NET实现在线数据库备份与还原的功能涉及后端数据库操作、T-SQL命令、存储过程的使用,以及前端交互设计等多个方面。正确实施这些步骤,能够为Web应用程序提供可靠的数据保护和恢复机制。

    数据库备份与还原

    总结,数据库备份与还原是保障数据安全的关键步骤,合理的备份策略结合适当的备份工具,可以有效地降低数据丢失的风险,并在出现问题时迅速恢复。理解并掌握这些知识点,对于任何数据库管理员来说都是至关重要的。

    数据库的备份与还原

    ### 数据库的备份与还原详解 #### 一、数据库备份的重要性 数据库备份是数据库管理中的一个重要环节,旨在保护数据安全,防止数据丢失。通过定期备份,可以在遇到意外情况(如硬件故障、软件错误或人为误操作等)时...

    实验4 数据库备份与恢复实验 (2).docx

    实验4 数据库备份与恢复实验 数据库备份与恢复是数据库管理系统中非常重要的一部分。实验4 数据库备份与恢复实验旨在让学生掌握数据库备份与恢复的操作方法。 知识点1: 数据库备份 数据库备份是指将数据库中的...

    MySQL数据库备份和恢复

    ### MySQL数据库备份与恢复:深度解析与实践指南 在当今数据驱动的世界中,数据库的稳定性和数据的安全性显得尤为重要。MySQL作为全球最流行的开源关系型数据库管理系统之一,其备份和恢复策略是确保数据安全和系统...

    Oracle 11g R2 Rman备份与恢复_刘耀龙的博客-CSDN博客_rman备份.pdf

    Oracle 11g R2 的 RMAN (Recovery Manager) 是 Oracle 数据库管理系统中的一个关键工具,主要用于数据库的备份和恢复。RMAN 提供了一种高效且灵活的方式来管理和保护数据库,确保在数据丢失或系统故障时能够快速恢复...

    windows oracle11g 备份与还原

    Oracle11g 数据库备份与还原是数据库管理中非常重要的一部分,掌握备份与还原技术可以帮助数据库管理员快速恢复数据库,减少数据丢失的风险。本文将详细介绍 Oracle11g 数据库备份与还原的方法和技术。 一、RMAN ...

    DM8备份与还原.pdf

    - 还原与恢复:分为数据还原和数据恢复两个阶段,数据还原是指将备份数据写回磁盘的过程,数据恢复是指利用备份数据和归档日志,将数据库恢复到故障前的状态。 DM8数据库的备份与还原操作可通过以下工具完成: - ...

    一键快速备份与恢复系统

    在IT领域,系统备份与恢复是一项至关重要的任务,它能够保护我们的数据免受意外丢失,如硬件故障、病毒感染或人为错误。"一键快速备份与恢复系统"是一个专为普通用户设计的工具,它简化了复杂的操作流程,使备份和...

    基于Oracle的ArcSDE数据备份与恢复

    2. **在线备份与恢复**:在线备份允许在数据库处于打开状态时进行备份操作,这种方式适用于需要保持业务连续性的场景。在线备份通常包括逻辑备份和物理备份两种方式。 3. **增量备份**:增量备份仅备份自上次完整...

    oracle备份与还原数据库

    ### Oracle备份与还原数据库知识点详解 #### 一、Oracle数据库备份方法概述 Oracle数据库提供了三种标准的备份方式:导出/导入(EXP/IMP)、热备份(Hot Backup)和冷备份(Cold Backup)。这些方法根据不同的场景...

    mysql(完整、增量)备份与还原

    MySQL数据库在日常运维中扮演着至关重要的角色,因此掌握如何进行完整备份、增量备份与还原是每个IT专业人员必备的技能。在这个主题中,我们将深入探讨如何使用Java来实现这些功能。 首先,让我们理解什么是数据库...

    SqlServer数据库的备份与还原

    SqlServer数据库的备份与还原是数据库管理中的核心操作,它们确保了数据库的稳定性和数据的安全性。在SqlServer2017中,可以采用手动备份和自动备份两种方式进行数据库的备份,同时在必要时进行还原操作。 首先,...

    KUKA机器人备份与还原的具体方法演示.docx

    以下是对KUKA机器人备份与还原具体方法的详细解释。 1. 数据备份: 在KUKA机器人控制系统中,备份主要涉及到四个关键类型的数据: - 应用:这是指实际的机器人程序,包括用户编写的所有任务代码和工作流程。这些...

    备份、还原备份、还原

    备份与还原对于任何组织来说都是至关重要的,因为它们可以确保在数据丢失、硬件故障、病毒攻击等情况下能够快速恢复业务。常见的应用场景包括: - **灾难恢复**:当发生自然灾害、人为错误等事件时,可以通过备份...

    最好用的GHO备份与还原 源码

    标题中的“最好用的GHO备份与还原 源码”指的是一个基于Ghost技术的程序,用于进行系统备份和恢复操作的源代码。Ghost是一款知名的系统克隆和备份工具,通常用于个人计算机或服务器上,以便在系统出现问题时能够快速...

Global site tag (gtag.js) - Google Analytics