• openGauss指定schema下全部表结构备份与恢复


    本次测试针对openGauss版本为2.0.5

    gs_dump指定schema下全部表结构信息备份

    gs_dump database_name -U username -p port -F c -s -n schema_name -f schema.sql
    
    database_name:数据库名,要备份的数据库名称
    username:用户名,数据库用户
    port:数据库端口号
    schema_name:schema名称
    schema.sql:生成的备份文件,也可以写为绝对路径/xxx/xxx/xxx.sql,文件后缀无具体要求,也可以用txt等可读取文件
    
    -F c:尝试使用 -F c、-F d 或 -F t 来指定备份文件的归档格式。根据您的需求选择适当的格式,可能是定制格式 (c)、目录格式 (d) 或 TAR 格式 (t)
    -s:只备份表结构
    -n:需要备份的schema
    -f:指定备份文件和路径
    其他参数可以参考官方文档
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    gs_restore恢复指定schema下全部表结构信息

    gs_restore schema.sql -U username -p port -d database_name -C -c -s -n schema_name
    
    -n schema_name:只导入已列举的模式中的对象。该选项可与-t选项一起用以导入某个指定的表。多次输入-n _schemaname_可以导入多个模式。经测试,当按照上述命令进行备份后,备份文件内含有create schema 语句,若不指定schema,此参数可以省略。
    -C:—create
    导入到数据库之前先创建数据库。(选择该选项后,-d指定的数据库将被用作发布首个CREATE DATABASE命令。所有数据将被导入到创建的数据库中。)
    -c:—clean
    在重新创建数据库对象前,清理(删除)已存在于将要还原的数据库中的数据库对象。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    测试过程:

    参数:
    database_name:postgres
    username:dbmon
    port:26000
    schema_name:test
    schema.sql:test.sql
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 准备工作:

    1.创建用户

    CREATE USER username [WITH PASSWORD 'password'];
    创建schemacreate schema dbmon
    
    • 1
    • 2

    2.用户赋权

    GRANT privilege_name [, ...] ON object_name TO username [, ...];
    其中,privilege_name 是要授予的权限名称,如 SELECTINSERTUPDATE 等;object_name 是要授权的对象名称,如表、视图等;username 是要授予权限的用户名。可以使用逗号分隔来指定多个权限、对象和用户
    
    • 1
    • 2

    3.登录openGauss

    gsql -d datatest -U dbmon -p 26000
    
    • 1

    4.创建schema

    /**
    如果需要切换数据库
    \c 
    **/
    create schema test;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    5.准备数据

    openGauss=> set search_path to test;
    SET
    openGauss=>  create table test.a(id int,score int);
    CREATE TABLE
    openGauss=>  create table test.b(id int,num int);
    CREATE TABLE
    openGauss=> insert into test.a values(1,20),(2,40),(3,50);
    INSERT 0 3
    openGauss=> insert into test.b values(1,1),(2,2),(3,3);
    INSERT 0 3
    ;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    6.开始备份

    [omm@cmbcog25 opengauss30]$ gs_dump postgres -U dbmon -p 26000 -F c -s -n test -f test.sql
    Password:
    gs_dump[port='26000'][postgres][2023-10-10 14:11:24]: The total objects number is 402.
    gs_dump[port='26000'][postgres][2023-10-10 14:11:25]: [100.00%] 402 objects have been dumped.
    gs_dump[port='26000'][postgres][2023-10-10 14:11:25]: dump database postgres successfully
    gs_dump[port='26000'][postgres][2023-10-10 14:11:25]: total time: 7166  ms
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    7.删除数据

    openGauss=> drop schema ad cascade;
    NOTICE:  drop cascades to 2 other objects
    DETAIL:  drop cascades to table ad.a
    drop cascades to table ad.b
    DROP SCHEMA
    /**也可以换一台没有数据openGauss进行恢复**/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    8.恢复schema和表结构信息

    [omm@cmbcog25 opengauss30]$ gs_restore test.sql -U dbmon -p 26000  -d postgres -C -c -s
    Password:
    start restore operation ...
    Finish reading 5 SQL statements!
    end restore operation ...
    restore operation successful
    total time: 2508  ms
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    9.检查表结构

    /**检查schema**/
    openGauss=> \dn
           List of schemas
          Name       |   Owner
    -----------------+-----------
     test              | dbmon
    (1 rows)
    
    /**检查表**/
    openGauss=> SELECT table_name
    FROM information_schema.tables
    WHERE table_schema = 'test';
     table_name
    ------------
     a
     b
    (2 rows)
    
    /**检查表结构**/
    
    openGauss=>  select column_name, data_type, character_maximum_length, is_nullable, column_default  from information_schema.columns where table_schema='test' ;
     column_name | data_type | character_maximum_length | is_nullable | column_default
    -------------+-----------+--------------------------+-------------+----------------
     num         | integer   |                          | YES         |
     id          | integer   |                          | YES         |
     score       | integer   |                          | YES         |
     id          | integer   |                          | YES         |
    (4 rows)
    
    openGauss=> select column_name, data_type, character_maximum_length, is_nullable, column_default  from information_schema.columns where table_schema='test' and table_name='a';
     column_name | data_type | character_maximum_length | is_nullable | column_default
    -------------+-----------+--------------------------+-------------+----------------
     score       | integer   |                          | YES         |
     id          | integer   |                          | YES         |
    (2 rows)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    表内无数据,备份恢复成功!

  • 相关阅读:
    一文搞定MySQL的分区技术、NoSQL、NewSQL、基于MySQL的分表分库
    Leetcode 2866. Beautiful Towers II
    威纶通触摸屏的配方功能具体使用方法介绍(宏指令写入PLC)
    Linux的实用指令
    Stable diffusion采样器详解
    【JavaEE---复习】四、事务
    Android Kotlin 打开相册选择图片(多选)
    JVM学习五
    react使用内联css样式的注意点
    设计素材网站,我推荐这6个
  • 原文地址:https://blog.csdn.net/qq_939317133/article/details/133750058