`
LJ你是唯一LT
  • 浏览: 243380 次
社区版块
存档分类
最新评论

pg 简单备份和恢复

 
阅读更多
pg的备份和恢复
pg_dump 把一个数据库转储为纯文本文件或者是其它格式.
用法:  pg_dump [选项]... [数据库名字]
一般选项:
  -f, --file=FILENAME         output file or directory name
  -F, --format=c|d|t|p        output file format (custom, directory, tar, plain text)
  -v, --verbose            详细模式
  -Z, --compress=0-9       被压缩格式的压缩级别
--lock-wait-timeout=TIMEOUT 在等待表锁超时后操作失败
  --help                       显示此帮助信息, 然后退出
  --versoin                    输出版本信息, 然后退出
控制输出内容选项:
  -a, --data-only          只转储数据,不包括模式
  -b, --blobs              在转储中包括大对象
  -c, --clean              在重新创建之前,先清除(删除)数据库对象
  -C, --create             在转储中包括命令,以便创建数据库
  -E, --encoding=ENCODING     转储以ENCODING形式编码的数据
  -n, --schema=SCHEMA      只转储指定名称的模式
-N, --exclude-schema=SCHEMA     不转储已命名的模式
  -o, --oids               在转储中包括 OID
  -O, --no-owner           在明文格式中, 忽略恢复对象所属者
  -s, --schema-only        只转储模式, 不包括数据
  -S, --superuser=NAME     在转储中, 指定的超级用户名
  -t, --table=TABLE        只转储指定名称的表
  -T, --exclude-table=TABLE       只转储指定名称的表
  -x, --no-privileges      不要转储权限 (grant/revoke)
  --binary-upgrade         只能由升级工具使用
  --column-inserts          以带有列名的INSERT命令形式转储数据
  --disable-dollar-quoting     取消美元 (符号) 引号, 使用 SQL 标准引号
  --disable-triggers         在只恢复数据的过程中禁用触发器
  --inserts                 以INSERT命令,而不是COPY命令的形式转储数据
  --no-security-labels        do not dump security label assignments
  --no-tablespaces           不转储表空间分配信息
  --no-unlogged-table-data    do not dump unlogged table data
  --quote-all-identifiers     quote all identifiers, even if not key words
  --serializable-deferrable   wait until the dump can run without anomalies
--use-set-session-authorization
   使用 SESSION AUTHORIZATION 命令代替ALTER OWNER 命令来设置所有权
联接选项:
  -h, --host=主机名        数据库服务器的主机名或套接字目录
  -p, --port=端口号        数据库服务器的端口号
  -U, --username=名字      以指定的数据库用户联接
  -w, --no-password        永远不提示输入口令
  -W, --password           强制口令提示 (自动)
  --role=ROLENAME          do SET ROLE before dump
如果没有提供数据库名字, 那么使用 PGDATA环境变量的数值.

1、pg_dump
导出整个库
pg_dump -U postgres -Fc  tina >tina.dump
pg_dump --host localhost --port 5432 --username postgres -Fc --encoding=UTF8 --verbos  --file /opt/db_backup/tmp_bk/devops.bk  devops

对多个表导出,每个表都需要加参数-t
pg_dump tina -t test -t test1 >filename

导出表结构:-s -t
pg_dump -s -t tina.tbtest testdb > tbtest.out

导出表结构和内容:-t
pg_dump -h testhost -t tina.tbtest testdb > tbtest.sql

只导出某个表的数据:-a
pg_dump -h testhost -t tina.tbtest -a testdb > tbtest.sql
pg_dump --host localhost --port 5432 --username postgres -Fc --encoding=UTF8 --verbose --data-only --file=/opt/db_backup/tmp_bk/t_sfa_sample_tmp1230.bk -t t_sfa_sample_tmp tm_samples

导数时压缩:                          
pg_dump dbname|gzip >filename.gz

2、pg_dumpall
pg_dump只能备份单个数据库,而且恢复的时候需要创建空数据库
pg_dumpall 可以备份所有数据库,并且备份角色、表空间
pg_dumpall > /pg/data/pg_all.dmp

3、恢复
恢复压缩的备份片
gunzip -c filename.gz |psql dbname

恢复备份片
cat filename*|psql dbname

恢复数据库
psql -f  /pg/data/pg_all.dmp  postgres   ---其实是直接执行dump里面的sql命令
pg_restore -U postgres -d devops  /tmp_bk/devops.bk  ---要先创建好空的同名数据库

恢复某个表的数据
pg_restore -U postgres -d tm_samples /tmp/t_sfa_sample_tmp1230.bk
pg_restore -U postgres -d tm_samples /tmp/t_sfa_sample1230.bk

恢复某个表
pg_restore -U postgres -d test /tmp_bk/t_task_file_info.bk  
pg_restore -U postgres -d rename_check  /tmp_bk/t_analyst_list.bk  2>&1 &


4、冷备份,需要停止数据库--直接拷贝数据目录 $PGDATA,要保证两边安装了同样版本的pg
原主机:
pg_ctl -D /pg/data stop
tar -zcvf /pg/data/data.tar.gz  /pg/data

新主机:
cd /pg
mv data data_old
恢复
tar -zxvf data.tar.gz -C /pg/

启动数据库
pg_ctl -D /pg/data start
验证

5、热备份,需要配置归档模式
vi /pg/data/postgresql.conf
archive_mode = on
archive_command = 'cp %p /pg/data/backup/archived_log/%f'
%p 要被归档的日志文件的路径,%f要归档的日志文件的文件名

pg_ctl -D /pg/data  start

创建备份:
testdb=# select pg_start_backup('baseline');
ERROR:  WAL level not sufficient for making an online backup
HINT:  wal_level must be set to "archive" or "hot_standby" at server start.
STATEMENT:  select pg_start_backup('baseline');

开启了归档,可能需要重启生效
[postgres@localhost data]$ pg_ctl -D /pg/data stop
LOG:  received smart shutdown request
LOG:  autovacuum launcher shutting down
LOG:  shutting down
waiting for server to shut down....LOG:  database system is shut down
done
server stopped
[postgres@localhost data]$ pg_ctl -D /pg/data start
FATAL:  WAL archival (archive_mode=on) requires wal_level "archive" or "hot_standby"
server starting

修改参数
wal_level = archive

testdb=# select pg_start_backup('baseline');
pg_start_backup
-----------------
0/4000020
(1 row)

如果遇到报错
可以将备份停下来
select pg_stop_backup();

备份整个data目录
tar -jcv -f /pg/data/backup/baseline.tar.bz2  /pg/data/backup

停止备份
select pg_stop_backup();

插入新记录,然后切换日志,重复三次
insert into test values(1);
select pg_switch_xlog();
insert into test values(2);
select pg_switch_xlog();
insert into test values(3);
select pg_switch_xlog();

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

恢复
停止数据库
pg_ctl -D  /pg/data stop
删除/data
rm -r /pg/data
恢复备份
tar -jxv -f /pg/data/backup/baseline.tar.bz2 -C /
清空/data/pg_xlog 目录下所有文件
rm -r /pg/data/pg_xlog
创建/pg/xlog 及下面的archive_status目录
mkdir /pg/data/pg_xlog
mkdir /pg/data/pg_xlog/archive_status
在/data目录下创建recovery.conf
vim  /pg/data/recovery.conf
restore_command='cp /pg/data/backup/archived_log/%f"%p"'

启动数据库
pg_ctl -D /pg/data/start

一切正常的话数据库就会自动应用wal日志进行恢复了
分享到:
评论

相关推荐

    PostgreSQL数据库备份脚本

    **六、备份恢复** 备份的目的是为了恢复,因此了解如何使用备份文件进行恢复同样重要。`pg_restore`命令常用于从`pg_dump`生成的备份文件中恢复数据,而`pg_basebackup`的恢复则涉及更复杂的流程,通常需要使用`pg_...

    备份和恢复PostgreSQL数据库

    在PostgreSQL中,系统提供了专门的备份工具pg_dump和pg_dumpall来进行数据备份,同时也提供了相对应的方法进行数据恢复。 首先,讲到数据备份,PostgreSQL自带的备份工具pg_dump可用于备份单个数据库。备份过程中,...

    Postgresql 备份与恢复研究.txt

    - **冷备份恢复** - **说明**: 冷备份的恢复需要将备份文件复制回原位置,然后重启数据库服务。 #### 五、最佳实践 1. **定期全量备份**: 定期执行全量备份,以防止数据丢失。 2. **增量备份策略**: 结合使用全量...

    备份PostgreSQL和MySQL数据库

    不过,它们不仅仅是数据的简单复制,还包括了数据库的结构信息,如表、索引和视图等,这意味着你可以完全重建一个数据库环境,而不仅仅是恢复数据。 除了基本的全量备份,MySQL和PostgreSQL还支持增量备份和差异...

    thinkphp3.2数据库备份下载恢复删除

    在本文中,我们将深入探讨如何在ThinkPHP3.2框架中进行数据库的备份、下载、恢复和删除操作。ThinkPHP3.2是中国流行的PHP开发框架,它提供了丰富的工具和功能来帮助开发者高效地构建Web应用。数据库管理是任何应用...

    PGAdmin系统管理PostgreSQL 中文手册

    pgAdmin支持数据库的备份和恢复操作。可以创建全备、增量备份,甚至直接导出为SQL脚本。在恢复时,可以选择恢复到特定的时间点,或者只恢复部分数据。 **7. 监控与日志** pgAdmin还提供了服务器状态的实时监控,...

    致远 协同管理软件 V7.1SP1 数据备份手册.pdf

    根据提供的文件内容,本手册主要涉及了致远协同管理软件V7.1SP1版本的数据备份相关内容。以下将详细解释手册中提到的...在实际操作中,用户需要根据软件的具体提示和数据库系统的官方文档来完成备份恢复的具体操作。

    pg8169网卡mac地址硬件修改

    在修改过程中,用户需要注意备份原有的MAC地址,以防万一需要恢复。此外,由于涉及到硬件级别的更改,操作过程中必须确保电脑的电源稳定,避免数据丢失或硬件损坏。 总的来说,Realtek RTL8169网卡的MAC地址硬件...

    pgAdmin II.zip

    pgAdmin III 具有备份和恢复数据库的功能。您可以创建数据库的完整备份,也可以仅备份特定的表或对象。恢复操作同样简便,只需选择相应的备份文件即可。 ### 9. 日志和监控 pgAdmin III 提供了查看PostgreSQL...

    pgAdmin3客户端

    2. **功能特性**: pgAdmin3提供了一系列的功能,包括数据库对象的创建、修改和删除,SQL脚本的编写和执行,数据的导入导出,以及数据库备份和恢复等。 **二、PostgreSQL数据库** 1. **概述**: PostgreSQL是一种开源...

    开源数据库Postgresql的备份和恢复

    这些备份可以通过`pg_restore`工具恢复,`pg_restore`支持自定义格式、目录和tar格式的备份文件。 2. **文件系统级别的备份**:这种备份方式涉及到操作系统级别的文件复制,通常在数据库关闭时进行。这种方式简单但...

    pgAdmin III的简单操作

    pgAdmin III 可以备份和恢复数据库。右键选择要备份的数据库,用 pgadmin 可以把 postgres 备份成三种格式,compress、tar 和 plain。 pgAdmin III 是一个功能强大且易于使用的数据库管理工具,能够帮助用户更好地...

    为不同后端(文件、mongoDB、mysql、postgres等)创建恢复简单、增量和加密的备份_Go_Makefile.zip

    在IT行业中,备份和恢复是数据安全性的重要环节。本文将详细介绍如何使用Go语言来创建针对不同后端(如文件系统、MongoDB、MySQL、PostgreSQL等)的备份,包括简单的全量备份、增量备份以及加密功能。我们将主要关注...

    pgadmin3-1.22.2

    4. **备份与恢复**:pgAdmin3提供数据库的备份和恢复功能,可以将数据库导出为SQL文件或进行逻辑备份,同时也支持导入已备份的数据。 5. **用户和权限管理**:用户可以在pgAdmin3中创建、管理角色以及分配权限,...

    postgresql客户端pgadmin3-1.8.4

    5. **备份与恢复**:pgAdmin3支持对数据库进行备份和恢复操作,这在数据安全性和灾难恢复中非常重要。用户可以创建完整或增量备份,并在需要时将数据库恢复到先前的状态。 6. **性能监控**:pgAdmin3提供了一些性能...

    pgadmin3-1.16.0

    1.16.0版本的pgadmin3还引入了一些新特性,例如增强的备份和恢复功能。通过“upgrade.bat”文件,用户可以对已有的pgadmin3进行升级,以获取这些新功能。升级过程中,原有的设置和连接信息会被保留,避免了重新配置...

Global site tag (gtag.js) - Google Analytics