磐维数据库panweidb逻辑备份恢复
1.gs_dump
gs_dump是PanWeiDB用于导出数据库相关信息的工具,用户可以自定义导出一个数据库或其中的对象(模式、表、视图等),回收站对象除外。支持导出的数据库可以是默认数据库postgres,也可以是自定义数据库。
gs_dump工具由操作系统用户omm执行。
gs_dump工具在进行数据导出时,其他用户可以访问PanWeiDB数据库(读或写)。
gs_dump工具支持导出完整一致的数据。例如,T1时刻启动gs_dump导出A数据库,那么导出数据结果将会是T1时刻A数据库的数据状态,T1时刻之后对A数据库的修改不会被导出。
gs_dump时生成列不会被转储。
gs_dump支持导出兼容v1版本数据库的文本格式文件。
gs_dump支持将数据库信息导出至纯文本格式的SQL脚本文件或其他归档文件中。
纯文本格式的SQL脚本文件:包含将数据库恢复为其保存时的状态所需的SQL语句。通过gsql运行该SQL脚本文件,可以恢复数据库。即使在其他主机和其他数据库产品上,只要对SQL脚本文件稍作修改,也可以用来重建数据库。
归档格式文件:包含将数据库恢复为其保存时的状态所需的数据,可以是tar格式、目录归档格式或自定义归档格式,详见表6-3。该导出结果必须与gs_restore配合使用来恢复数据库,gs_restore工具在导入时,系统允许用户选择需要导入的内容,甚至可以在导入之前对等待导入的内容进行排序
导出文件格式
格式名称 | -F的参数值 | 说明 | 建议 | 对应导入工具 |
纯文本格式 | p | 纯文本脚本文件包含SQL语句和命令。命令可以由gsql命令行终端程序执行,用于重新创建数据库对象并加载表数据。 | 小型数据库,一般推荐纯文本格式。 | 使用gsql工具恢复数据库对象前,可根据需要使用文本编辑器编辑纯文本导出文件。 |
自定义归档格式 | c | 一种二进制文件。支持从导出文件中恢复所有或所选数据库对象。 | 中型或大型数据库,推荐自定义归档格式。 | 使用gs_restore可以选择要从自定义归档导出文件中导入相应的数据库对象。 |
目录归档格式 | d | 该格式会创建一个目录,该目录包含两类文件,一类是目录文件,另一类是每个表和blob对象对应的数据文件。 | - | |
tar归档格式 | t | tar归档文件支持从导出文件中恢复所有或所选数据库对象。tar归档格式不支持压缩且对于单独表大小应小于8GB。 | - |
备份示例:
gs_dump -f escspdb_backup.sql escspdb -F p
[omm@work2 ~]$ gs_dump -f escspdb_backup.sql escspdb -F p
gs_dump[port='5432'][escspdb][2023-05-25 09:35:48]: The total objects number is 410.
gs_dump[port='5432'][escspdb][2023-05-25 09:35:48]: [100.00%] 410 objects have been dumped.
gs_dump[port='5432'][escspdb][2023-05-25 09:35:48]: dump database escspdb successfully
gs_dump[port='5432'][escspdb][2023-05-25 09:35:48]: total time: 6487 ms
[omm@work2 ~]$
2.gs_dumpall
gs_dumpall是PanWeiDB用于导出所有数据库相关信息工具,它可以导出PanWeiDB数据库的所有数据,包括默认数据库postgres的数据、自定义数据库的数据以及PanWeiDB所有数据库公共的全局对象。
gs_dumpall工具由操作系统用户omm执行。
gs_dumpall工具在进行数据导出时,其他用户可以访问PanWeiDB数据库(读或写)。
gs_dumpall工具支持导出完整一致的数据。例如,T1时刻启动gs_dumpall导出PanWeiDB数据库,那么导出数据结果将会是T1时刻该PanWeiDB数据库的数据状态,T1时刻之后对PanWeiDB的修改不会被导出。
gs_dumpall时生成列不会被转储。
gs_dumpall在导出PanWeiDB所有数据库时分为两部分:
- gs_dumpall自身对所有数据库公共的全局对象进行导出,包括有关数据库用户和组、表空间以及属性(例如,适用于数据库整体的访问权限)信息。
- gs_dumpall通过调用gs_dump来完成PanWeiDB中各数据库的SQL脚本文件导出,该脚本文件包含将数据库恢复为其保存时的状态所需要的全部SQL语句。
- 以上两部分导出的结果为纯文本格式的SQL脚本文件,使用gsql运行该脚本文件可以恢复PanWeiDB数据库。
示例:
gs_dumpall仅支持纯文本格式导出。所以只能使用gsql恢复gs_dumpall导出的转储内容。
[omm@work2 ~]$ gs_dumpall -f all_backup2.sql
gs_dump[port='5432'][dbname='escspdb'][2023-05-25 11:40:27]: The total objects number is 410.
gs_dump[port='5432'][dbname='escspdb'][2023-05-25 11:40:27]: [100.00%] 410 objects have been dumped.
gs_dump[port='5432'][dbname='escspdb'][2023-05-25 11:40:27]: dump database dbname='escspdb' successfully
gs_dump[port='5432'][dbname='escspdb'][2023-05-25 11:40:27]: total time: 6438 ms
gs_dump[port='5432'][dbname='finance'][2023-05-25 11:40:34]: The total objects number is 440.
gs_dump[port='5432'][dbname='finance'][2023-05-25 11:40:34]: [100.00%] 440 objects have been dumped.
gs_dump[port='5432'][dbname='finance'][2023-05-25 11:40:34]: dump database dbname='finance' successfully
gs_dump[port='5432'][dbname='finance'][2023-05-25 11:40:34]: total time: 6784 ms
gs_dump[port='5432'][dbname='postgres'][2023-05-25 11:40:41]: The total objects number is 410.
gs_dump[port='5432'][dbname='postgres'][2023-05-25 11:40:41]: [100.00%] 410 objects have been dumped.
gs_dump[port='5432'][dbname='postgres'][2023-05-25 11:40:41]: dump database dbname='postgres' successfully
gs_dump[port='5432'][dbname='postgres'][2023-05-25 11:40:41]: total time: 6520 ms
gs_dump[port='5432'][dbname='school'][2023-05-25 11:40:47]: The total objects number is 430.
gs_dump[port='5432'][dbname='school'][2023-05-25 11:40:47]: [100.00%] 430 objects have been dumped.
gs_dump[port='5432'][dbname='school'][2023-05-25 11:40:47]: dump database dbname='school' successfully
gs_dump[port='5432'][dbname='school'][2023-05-25 11:40:47]: total time: 6673 ms
gs_dump[port='5432'][dbname='testzaq'][2023-05-25 11:40:54]: The total objects number is 413.
gs_dump[port='5432'][dbname='testzaq'][2023-05-25 11:40:54]: [100.00%] 413 objects have been dumped.
gs_dump[port='5432'][dbname='testzaq'][2023-05-25 11:40:54]: dump database dbname='testzaq' successfully
gs_dump[port='5432'][dbname='testzaq'][2023-05-25 11:40:54]: total time: 6462 ms
gs_dumpall[port='5432'][2023-05-25 11:40:54]: dumpall operation successful
gs_dumpall[port='5432'][2023-05-25 11:40:54]: total time: 33305 ms
[omm@work2 ~]$
3.gs_restore
gs_restore是PanWeiDB提供的针对gs_dump导出数据的导入工具。通过此工具可由gs_dump生成的导出文件进行导入。
gs_restore工具由操作系统用户omm执行。
主要功能包含:
导入到数据库
如果连接参数中指定了数据库,则数据将被导入到指定的数据库中。其中,并行导入必须指定连接的密码。导入时生成列会自动更新,并像普通列一样保存。
导入到脚本文件
如果未指定导入数据库,则创建包含重建数据库所必须的SQL语句脚本并写入到文件或者标准输出。等效于直接使用gs_dump导出为纯文本格式。
特例:执行gsql程序,使用如下选项导入由gs_dump/gs_dumpall生成导出文件夹(纯文本格式)的escspdb_backup.sql文件到postgres数据库。
删除数据库
[omm@work2 ~]$ gsql -d escspdb
gsql ((PanWeiDB(openGauss) 1.0.0 build 9a7e96bc) compiled at 2022-10-15 20:54:36 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
escspdb=# \dp
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
--------+------+-------+-------------------+--------------------------
public | test | table | |
(1 row)
escspdb=# drop table test;
DROP TABLE
escspdb=# \dp
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
--------+------+------+-------------------+--------------------------
(0 rows)
escspdb=#
恢复数据库表
gsql -d escspdb -f escspdb_backup.sql
[omm@work2 ~]$ gsql -d escspdb -f escspdb_backup.sql
SET
SET
SET
SET
SET
SET
SET
SET
SET
CREATE TABLE
ALTER TABLE
REVOKE
REVOKE
GRANT
GRANT
total time: 40 ms
[omm@work2 ~]$
[omm@work2 ~]$ gsql -d escspdb
gsql ((PanWeiDB(openGauss) 1.0.0 build 9a7e96bc) compiled at 2022-10-15 20:54:36 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
escspdb=# \dp
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
--------+------+-------+-------------------+--------------------------
public | test | table | |
(1 row)
escspdb=# select count(*) from test;
count
-------
1000
(1 row)
escspdb=#
gs_restore用来导入由gs_dump生成的导出文件。
示例1:执行gs_restore,将导出的MPPDB_backup.dmp文件(自定义归档格式)导入到postgres数据库。
gs_restore -W 密码 backup/MPPDB_backup.dmp -p 15400 -d postgres
gs_restore: restore operation successful
gs_restore: total time: 13053 ms