zoukankan      html  css  js  c++  java
  • postgresql 备份(pg_dump,pg_restore)

    PG提供物理备份和逻辑备份(本篇主要讲逻辑备份)
    物理备份:WAL热备份
    逻辑备份:pg_dump,pg_dumpall,恢复时pg_restore

    查看帮助命令:

    pg_dump --help

    跟MySQL备份以及参数比较像(大小写敏感)

     

    由于我的是用的pgsql操作系统,超级用户本地登录,省略了-h 主机IP 以及-U 用户名

    1、备份test 数据库
    pg_dump test >testdb.sql 跟MySQL一样,生成的是sql文件

    比如我把test数据库恢复成testbak数据库
    create database testbak encoding UTF8;
    [pgsql@node2 ~]$ psql testbak < /home/pgsql/test.sql
    SET
    SET
    SET
    SET
    SET
    set_config
    ------------

    (1 row)

    跟mysql 很类似。


    也可以指定格式的备份成*.dmp文件

    [pgsql@node2 ~]$ pg_dump -Fc -Upgsql test > testpgsql.dmp

    恢复

    create database test encoding UTF8;

    [pgsql@node2 ~]$ pg_restore -d test testpgsql.dmp


    2.想备份psql模式下所有表,但是不包括test2
    test=# d+
    List of relations
    Schema | Name | Type | Owner | Size | Description
    --------+--------------+----------+-------+------------+-------------
    pgsql | blog | table | pgsql | 8192 bytes |
    pgsql | persons | table | pgsql | 8192 bytes |
    pgsql | students | table | pgsql | 8192 bytes |
    pgsql | test_view | view | pgsql | 0 bytes |
    pgsql | testtab01 | table | pgsql | 211 MB |
    public | capitals | table | pgsql | 8192 bytes |
    public | cities | table | pgsql | 8192 bytes |
    public | duty | table | pgsql | 16 kB |
    public | example | table | pgsql | 0 bytes |
    public | non_capitals | table | pgsql | 8192 bytes |
    public | products | table | pgsql | 8192 bytes |
    public | t | table | pgsql | 0 bytes |
    public | t1 | table | pgsql | 16 kB |
    public | t2 | table | pgsql | 16 kB |
    public | t_id_seq | sequence | pgsql | 8192 bytes |
    public | test1 | table | pgsql | 20 MB |
    public | test2 | table | pgsql | 8192 bytes |
    public | weather | table | pgsql | 8192 bytes |
    (18 rows)

    [pgsql@node2 ~]$ pg_dump -t 'pgsql.t*' -T psql.t2 test > pgsqltest.sql

    备份所有数据库test 对象,不包括duty
    [pgsql@node2 ~]$ pg_dump -T 'pgsql.duty' test > noduty.sql

    在192.168.211.152 上备份,恢复到 192.168.211.154:
    test=# create database hl;
    CREATE DATABASE

    [pgsql@node2 ~]$ pg_dump -h 192.168.211.152 -Upgsql test -Fc > remote_test.dmp
    [pgsql@node2 ~]$ ls -lh
    total 445M
    -rw------- 1 pgsql pgsql 854 Apr 13 23:52 logfile
    -rw-rw-r-- 1 pgsql pgsql 80M Jun 12 23:16 noduty.sql
    -rw-rw-r-- 1 pgsql pgsql 75M Jun 12 23:14 pgsqltest.sql
    -rw-rw-r-- 1 pgsql pgsql 106M Jun 12 23:26 remote_test.dmp
    -rw-rw-r-- 1 pgsql pgsql 106M Jun 12 23:06 testpgsql.dmp
    -rw-rw-r-- 1 pgsql pgsql 80M Jun 12 22:54 test.sql

    testbak=# create database test;
    CREATE DATABASE
    [pgsql@node2 ~]$ pg_restore -h 192.168.211.152 -Upgsql -C -d test remote_test.dmp
    -c, --clean clean (drop) database objects before recreating
    -C, --create create the target database

    最后,要讲备份的 remote_test.dmp的数据重新加载到一个不是新建的不同名称的数据库 remote中,可以使用下面命令:

    createdb -T template0 remote;
    pg_restore -d remote remote_test.dmp

     从template0而不是template1 创建数据库,确保干净,没有使用-C,而是直接恢复到remote数据库上。

  • 相关阅读:
    Selenium+Java自动化之如何优雅绕过验证码
    Java替换中使用正则表达式实现中间模糊匹配
    【转】Jmeter中使用CSV Data Set Config参数化不重复数据执行N遍
    【转】安全测试===如何查看浏览器保存的密码
    JMeter 中_time 函数的使用(时间戳、当前时间)
    TCP拆包粘包之分隔符解码器
    TCP粘包/拆包问题
    Netty 入门示例
    JDK AIO编程
    JDK NIO编程
  • 原文地址:https://www.cnblogs.com/hmwh/p/11015439.html
Copyright © 2011-2022 走看看