当前位置: 首页 > news >正文

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.sqldatabase_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:指定备份文件和路径
其他参数可以参考官方文档

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
在重新创建数据库对象前,清理(删除)已存在于将要还原的数据库中的数据库对象。

测试过程:

参数:
database_name:postgres
username:dbmon
port:26000
schema_name:test
schema.sql:test.sql
  • 准备工作:

1.创建用户

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

2.用户赋权

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

3.登录openGauss

gsql -d datatest -U dbmon -p 26000

4.创建schema

/**
如果需要切换数据库
\c <database_name>
**/
create schema test;

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
;

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

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进行恢复**/

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

9.检查表结构

/**检查schema**/
openGauss=> \dnList of schemasName       |   Owner
-----------------+-----------test              | dbmon
(1 rows)/**检查表**/
openGauss=> SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'test';table_name
------------ab
(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)

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

http://www.lryc.cn/news/194014.html

相关文章:

  • 干货:如何在前端统计用户访问来源?
  • 李宏毅生成式AI课程笔记(持续更新
  • nodejs+vue+elementui酒店客房服务系统mysql带商家
  • 【网络协议】聊聊网络分层
  • [开源]基于Vue+ElementUI+G2Plot+Echarts的仪表盘设计器
  • html设置前端加载动画
  • 【git的使用方法】——上传文件到gitlab仓库
  • Kafka 开启SASL/SCRAM认证 及 ACL授权(二)ACL
  • Java8 新特性之Stream(三)-- Stream的终结操作
  • 【Vue面试题二十八】、vue要做权限管理该怎么做?如果控制到按钮级别的权限怎么做?
  • 1、验证1101序列(Moore)
  • Java基础面试-BeanFactroy和ApplicationContext
  • js的入口函数
  • [cpp primer随笔] 10. 函数重载与重载决议
  • java_Stream API
  • 红队专题-工具Fscan
  • 【宏实现二进制奇偶位交换】
  • 【Java零基础入门到就业】第一天:java简介和cmd窗口的一些常见命令
  • ubuntu下yolov5 tensorrt模型部署
  • windows Vscode 连接 虚拟机,超详细,含免密免ip配置 以 linux 虚拟机为例
  • 【Unity】VR基础开发2项目准备-VR基本场景构建(OpenXR方向)
  • git checkout 命令
  • 二.镜头知识之镜头总长,法兰距,安装接口
  • Android studio控制台 输出乱码解决方法
  • Hermes - 指尖上的智慧:自定义问答系统的崭新世界
  • 机器学习笔记 - 使用3D卷积神经网络进行视频分类
  • 在Unity中挂载C#脚本的三种方法
  • vue elementui的select组件实现滑到底部分页请求后端接口
  • 【Java 进阶篇】JavaScript电灯开关案例:从原理到实现
  • 并发、并行、同步、异步、阻塞、非阻塞