热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

PostgreSQL备份与恢复方法

一、简介Postgresql的备份分为三种:lSQL转储l文件系统级别备份(冷备份)l在线热备份(归档)以下通过实例来讲解PostgreSQL的三种备份。二、SQL转储(一)pg_dump1,创建数据库createdbpg2,连入数据库pgpsqlpg3,创建测试表,插入数据

   一、 简介

    Postgresql的备份分为三种:

    l SQL转储

    l 文件系统级别备份(冷备份)

    l 在线热备份(归档)

    以下通过实例来讲解PostgreSQL的三种备份。

    二、 SQL转储

    (一)pg_dump

    1,创建数据库

    createdb pg

    2,连入数据库pg

    psql pg

    3,创建测试表,插入数据

    pg=# create table pg_test(a int);

    pg=# insert into pg_test(a) values(1);

    pg=# insert into pg_test(a) values(2);

    4,查看数据

    pg=# select * from tb;

    a

    ---

    1

    2

    (2 rows)

    5,备份

    pg_dump pg > /usr/local/pgsql/backup/pg.dmp

    6,删除数据库pg

    dropdb pg

    7,创建新数据库(恢复之前需创建数据库)

    createdb pg

    8,恢复数据

    psql pb

    9,查看数据是否回复

    pg=# select * from tb;

    a

    ---

    1

    2

    (2 rows)

    至此,数据已成功恢复!

    注:pg_dump可以对针对单表或者多表进行备份

    如:pg_dump databasename Ct tablename1 Ct tablename2 >filename

    (二)pg_dumpall

    pg_dump只能备份单个数据库,而且恢复的时候需要创建空数据库。pg_dumpall可以备份所有数据库,并且备份角色、表空间。

    1,创建数据库

    createdb pg1

    createdb pg2

    2, pg1中创建表并插入数据

    psql pg1

    pg=# create table tb1(a int)

    pg=# insert into tb1(a) values(1);

    3, pg2中创建表并插入数据

    psql pg2

    pg=# create table tb2(a int)

    pg=# insert into tb2(a) values(2);

    4,备份数据库

    pg_dumpall > /usr/local/pgsql/backup/pg_all.dmp

    5,删除数据库

    dropdb pg1

    dropdb pg2

    6,恢复数据库

    psql Cf /usr/local/pgsql/backup/pg_all.dmp postgres

    可以指定任何数据库名,如果恢复到一个空的集群中,通常使用postgres数据库

    7,查看数据库pg1是否恢复

    psql pg1

    pg=# select * from tb1;

    a

    ---

    1

    (1 rows)

    8,查看数据库pg2是否恢复

    psql pg2

    pg=# select * from tb2;

    a

    ---

    2

    (1 rows)

    至此,数据已成功恢复!

    (三)备份压缩与分割

    压缩与分割的原理都是利用Linux的管线(PIPE)命令,不再进行试验。

    1)压缩

    l 备份:

    pg_dump dbname | gzip > filename.gz

    l 恢复

    gunzip -c filename.gz | psql dbname

    2)分割

    l 备份:

    pg_dump dbname | split -b1m- filename

    l 恢复

    cat filename* | psql dbname

    三、 文件系统级别备份(冷备份)

    文件系统级别的备份是冷备份,需要停止数据库。

    1,停止数据库

    pg_ctl CD /usr/local/pgsql/data stop

    2,备份数据库

    tar Cjcv Cf /usr/local/pgsql/backup/filesystem.tar.bz2 /usr/local/pgsql/data/

    3,删除/usr/local/pgsql/data/目录

    rm Cr /usr/local/pgsql/data/

    4,解压备份文件到原目录

    tar Cjxv Cf /usr/local/pgsql/backup/filesystem.tar.bz2 CC /

    5,启动数据库

    pg_ctl CD /usr/local/pgsql/data start

    6,查看数据库pg1是否恢复

    psql pg1

    pg=# select * from tb1;

    a

    ---

    1

    (1 rows)

    7,查看数据库pg2是否恢复

    psql pg2

    pg=# select * from tb2;

    a

    ---

    2

    (1 rows)

    至此,数据已成功恢复!

    四、 在线热备份(归档)

    (一)备份

    1,配置归档模式

    配置归档需要编辑postgresql.conf文件,默认为与/usr/local/pgsql/data/目录下

    vim /usr/local/pgsql/data/postgesql.conf

    archive_mode = on

    archive_command = ‘cp %p /usr/local/pgsql/backup/archived_log/%f’

    注:%p要被归档的日志文件的路径,%f是要被归档的日志文件的文件名

    2,启动数据库

    pg_ctl CD /usr/local/pgsql/data start

    3,创建数据库arch

    createdb arch

    4,创建表并插入记录

    psql arch

    arch=# create table tb(a int);

    arch=# insert into tb(a) values(1);

    5,创建备份

    arch=# select pg_start_backup(‘baseline’);

    6,备份整个data目录

    tar Cjcv Cf /usr/local/pgsql/backup/baseline.tar.bz2 /usr/local/pgsql/data/

    7,停止备份

    psql arch

    arch=# select pg_stop_backup();

    8,插入新记录,然后切换日志,重复3次

    arch=# insert into tb(a) values(2);

    arch=# select pg_switch_xlog();

    arch=# insert into tb(a) values(3);

    arch=# select pg_switch_xlog();

    arch=# insert into tb(a) values(4);

    arch=# select pg_switch_xlog();

    9,把/data/pg_xlog/下的WAL日志文件复制到预设的归档目录下,保证产生的WAL日志都已归档。

    (二)恢复

    1,停止数据库

    pg_ctl CD /usr/local/pgsql/data/ stop

    2,删除/data/

    rm Cr /usr/local/pgsql/data/

    3,恢复备份

    tar Cjxv Cf /usr/local/pgsql/backup/baseline.tar.bz2 CC /

    4,清空/data/pg_xlog/目录下所有文件

    rm Cr /usr/local/pgsql/data/pg_xlog/

    5,创建/pg_xlog/及其下面的archive_status目录

    mkdir /usr/local/pgsql/data/pg_xlog/

    mkdir /usr/local/pgsql/data/pg_xlog/archive_status

    6,在/data/目录下创建recovery.conf

    vim /usr/local/pgsql/data/recovery.conf

    restore_command = ‘cp /usr/local/pgsql/backup/archived_log/%f “%p”’

    7,启动数据库


推荐阅读
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
  • REVERT权限切换的操作步骤和注意事项
    本文介绍了在SQL Server中进行REVERT权限切换的操作步骤和注意事项。首先登录到SQL Server,其中包括一个具有很小权限的普通用户和一个系统管理员角色中的成员。然后通过添加Windows登录到SQL Server,并将其添加到AdventureWorks数据库中的用户列表中。最后通过REVERT命令切换权限。在操作过程中需要注意的是,确保登录名和数据库名的正确性,并遵循安全措施,以防止权限泄露和数据损坏。 ... [详细]
  • 本文详细介绍了使用 SQL Load 和 Excel 的 Concatenate 功能将数据导入 ORACLE 数据库的方法和步骤,同时介绍了使用 PL/SQL tools 将数据导入临时表的方法。此外,还提供了一个转链接,可参考更多相关内容。摘要共计XXX字。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
author-avatar
可爱嘟嘟豬5
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有