• 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数据库上。

  • 相关阅读:
    Java类型转换.
    搭建jenkins集群node结点
    java Lambda
    @Autowired使用说明
    Disruptor底层实现讲解与RingBuffer数据结构讲解
    Disruptor并发框架简介
    并发编程中的读写锁分离锁的使用
    并发编程过程中的重入锁
    互联网进行限流策略的Semaphore信号量使用
    并发编程中Future和Callable使用
  • 原文地址:https://www.cnblogs.com/hmwh/p/11015439.html
Copyright © 2020-2023  润新知