暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

openGauss每日一练第20天|openGauss数据库的逻辑备份与恢复

原创 shezhang784938 2022-12-13
422

逻辑备份与恢复-【gs_dump】:

gs_dump是用于导出数据库相关信息的工具,用户可以自定义导出一个数据库或其中的对象(模式、表、视图等)。支持导出的数据库可以是默认数据库postgres,也可以是自定义数据库。

gs_dump工具由操作系统用户omm执行。

gs_dump工具在进行数据导出时,其他用户可以访问数据库(读或写)。

gs_dump工具支持导出完整一致的数据。例如,T1时刻启动gs_dump导出A数据库,那么导出数据结果将会是T1时刻A数据库的数据状态,T1时刻之后对A数据库的修改不会被导出。


登陆openGauss数据库

[root@enmoedu ~]# su - omm
Last login: Sun Dec 11 14:31:39 CST 2022 on pts/1
[omm@enmoedu ~]$ gs_om -t status --detail
[   Cluster State   ]

cluster_state   : Normal
redistributing  : No
current_az      : AZ_ALL

[  Datanode State   ]

    node   node_ip         port      instance                            state
----------------------------------------------------------------------------------------------
1  enmoedu 192.168.94.135  15400      6001 /opt/huawei/install/data/dn   P Primary Normal
[omm@enmoedu ~]$ 



1、为逻辑备份准备环境

[omm@enmoedu ~]$ gsql -d postgres -p 15400 -r
gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:34 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

openGauss=# 


1.1)创建逻辑备份的存储目录

[root@enmoedu ~]# su - omm
Last login: Sun Dec 11 16:00:30 CST 2022 on pts/0
[omm@enmoedu ~]$ pwd
/home/omm
[omm@enmoedu ~]$ ll
total 0
[omm@enmoedu ~]$ cd ..
[omm@enmoedu home]$ ll
total 0
drwx------. 2 demo demo  62 Nov 28 01:49 demo
drwx------  2 omm  dbgrp 95 Nov 28 03:53 omm
[omm@enmoedu home]$ cd omm
[omm@enmoedu ~]$ mkdir -p opengauss/backup
[omm@enmoedu ~]$ pwd
/home/omm
[omm@enmoedu ~]$ cd opengauss/backup/
[omm@enmoedu backup]$ ls
[omm@enmoedu backup]$ pwd
/home/omm/opengauss/backup
[omm@enmoedu backup]$ 


1.2)创建备份恢复用户,需要具有super或者sysadmin权限
create user test identified by 'enmoedu@1234' sysadmin ;



1.3)创建恢复测试数据库testdb

create tablespace test_tbs relative location 'tablespace/test_tbs1';
create database testdb with tablespace = test_tbs;



1.4)在omm数据库上,创建测试表test1、test2

create table test1(col int);
create table test2(col int);



1.5)查看数据

[omm@enmoedu ~]$ gsql -d postgres -p 15400 -c "\dt"
                         List of relations
 Schema | Name  | Type  | Owner |             Storage              
--------+-------+-------+-------+----------------------------------
 public | test1 | table | omm   | {orientation=row,compression=no}
 public | test2 | table | omm   | {orientation=row,compression=no}
(2 rows)

[omm@enmoedu ~]$ 



开始逻辑备份

2、逻辑备份和恢复案例1【sql格式】

逻辑备份,使用gs_dump备份数据库,生成sql文件。

2.1)使用test用户,备份数据库omm

提示报错:   


创建数据库omm:


[omm@enmoedu ~]$ gs_dump omm -p 15400 -U test -W enmoedu@1234 -F p -f /home/omm/opengauss/backup/backup.sql
gs_dump[port='15400'][omm][2022-12-11 19:27:17]: The total objects number is 408.
gs_dump[port='15400'][omm][2022-12-11 19:27:17]: [100.00%] 408 objects have been dumped.
gs_dump[port='15400'][omm][2022-12-11 19:27:17]: dump database omm successfully
gs_dump[port='15400'][omm][2022-12-11 19:27:17]: total time: 6372  ms
[omm@enmoedu ~]$

  • 语法:gs_dump -p port_number -f dump1.sql
例如:gs_dump omm -p 15400 -U test -W enmoedu@1234 -F p -f /home/omm/opengauss/backup/backup.sql
导出文件格式

通用参数说明:

gs_dump的命令行格式如下截图:
gs_dump omm -p 【端口号】 -U 【用户名】 -W 【密码】 【输出格式】【SQL文本格式】 【将文件输出至指定文件及指定的目录】


以上操作时备份


逻辑恢复

2.2)使用用户test,执行用gs_dump生成的sql脚本,将数据恢复到testdb数据库中

gsql -d testdb -p 15400 -U test  -W enmoedu@1234 -f /home/omm/opengauss/backup/backup.sql



恢复验证:

验证数据库omm的备份已经被恢复到数据库testdb

2.3)源库omm(备份的数据库)

 gsql -d omm -W enmoedu@1234 -U test -p 15400 -c "\dt"



2.4)新库testdb(恢复的数据库)

gsql -d testdb -U test -W enmoedu@1234 -p 15400 -c "\dt"


openGauss数据库逻辑备份和恢复案例2(dump格式)。

逻辑备份:使用gs_dump备份数据库,生成归档格式的备份文件。


2.5)创建测试数据

create table test3(col int);
create table test4(col int);



2.6)使用test用户,备份omm数据库,生成归档格式的备份文件

gs_dump omm -U test -W enmoedu@1234 -p 15400 -F p -f /home/omm/opengauss/backup/backup.dump


具体的目录下的.dump文件:



逻辑恢复:

2.7)使用gs_dump生成的归档文件恢复数据库

gsql -d testdb -U test -W enmoedu@1234 -f /home/omm/opengauss/backup/backup.dump


gsql -d testdb -U test -W enmoedu@1234 -f /home/omm/opengauss/backup/backup.dump ,该语句执行完报错,原因:1)不在docker容器,所以不是默认的5432端口号,而是15400端口号;2)需要使用端口号15400。


恢复验证:

2.8)源库(备份的数据库)

gsql -d omm -U test -W enmoedu@1234 -p 15400 -c "\dt"


2.9)新库(恢复的数据库)

gsql -d testdb -U test -W enmoedu@1234 -p 15400 -r


最后修改时间:2022-12-19 23:01:18
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论