逻辑备份与恢复-【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]$
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


以上操作时备份
逻辑恢复
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




