【我和 openGauss 的故事】openGauss 逻辑备份恢复
【我和 openGauss 的故事】openGauss 逻辑备份恢复
zhouwhui 2023-07-14 18:50 发表于 openGauss 公众号
逻辑备份恢复
一、小数据集导入导出
1. copy 或 \copy
可以将文本数据作为数据源导入到数据表中,也可以将数据表或查询结果导出到指定的文件中。
2. copy 与 \copy 的区别
(1)copy 属于 SQL 命令,\copy 属于元命令(2)copy 导入导出的文件是数据库服务端的文件,\copy 导入导出的文件是客户端文件(3)copy 需要数据库管理员权限才可以执行,\copy 任意用户都可以执行(4)copy 对较大数据集的整体读写效率比 \copy 更好
3. 语法格式
copy 与 \copy 的语法格式与使用方式是一样的,以下以 copy 为例。
(1)数据导入 copy from
将 TXT 文件数据导入到数据表中
TXT 文件默认列分隔符为 tab ,如果所指定分隔符不是 tab,可以使用 delimiter 指定
除了可以导入 TXT 文件,也可以是一些特定表格文件(如 CSV),因为默认文件类型为 TXT,可以通过 with 指定文件类型
CSV 文件比较特殊,既可以看做表格文件也可以看做文本文件,看做文本文件时,默认列与列之间的分隔符为’,’,所以也可以使用以下 SQL 语句进行数据导入
(2)数据导出 copy to
将数据表导出到指定 TXT 文件中(默认分隔符是 tab)
将数据表导出到指定 TXT 文件中(文件,指定分隔符为’;’)
将数据表导出到指定 CSV 文件中(默认分隔符为’,’)
将查询结果集导出到指定 CSV 文件中(默认分隔符为’,’)
例如:将用户表中年龄大于等于 18 的用户信息进行导出
copy 不支持导出视图数据,如果要导出视图数据可以替换为查询语句,例如:需要导出视图 v_user
二、大数据集导入导出
1. gs_dump、gs_dumpall 数据导出
(1)gs_dump
openGauss 数据库提供的数据导出工具,可将指定数据库的相关数据对象定义及数据进行导出;在导出时可以指定要导出的数据对象或不导出的数据对象,也可以指定导出的模式,以及导出的文件类型。
gs_dump 工具使用提示
由系统用户 omm 用户执行
在 gs_dumnp 执行数据导出过程中,不影响其他用户对数据库的访问(包括读写操作)
gs_dump 参数说明
在以上所有参数中必填参数有 d、-p、-F、-f,其余参数根据实际需求而定
默认不指定-T、-t 的情况下表示导出所有对象
默认不指定-n 的情况下表示导出所有 schema 中的所有对象
默认不指定-s、-a 的情况下表示同时导出数据和定义
如果同时指定了-T 和-t 表示导出在-t 中声明且没有在-T 中声明的对象
要指定多个对象或者多个模式时需要多次配置相关参数,例如:同时导出 t_user 和 t_info 参数配置为
gs_dump 实例
导出 student 数据库中的所有对象信息,导出为纯文本格式
导出 student 数据库中的 stuinfo 表定义,导出为 tar 归档格式
导出 student 数据库中的除 stuinfo 表以外其他对象的数据,导出为自定义归档格式
导出 student 数据库中的 info 和 example 模式中的对象信息,导出为目录归档格式
(2)gs_dumpall
gs_dumpall 也是 openGauss 数据库提供的一种数据导出工具,与 gs_dump 的区别在于 gs_dump 每次导出仅作用于一个指定数据库,gs_dumpall 针对所有数据库;在导出时可以指定导出模式,即导出对象定义+数据、仅定义、仅数据。
gs_dumpall 工具使用提示
由系统用户 omm 用户执行
在 gs_dumnpall 执行数据导出过程中,不影响其他用户对数据库的访问(包括读写操作)
gs_dumpall 参数说明
在以上所有参数中必填参数仅有-p,其余参数根据实际需求而定
gs_dumpall 数据导出文件只有纯文本格式
gs_dumpall 面向的是所有数据库,所以不支持指定数据库
默认不指定-s、-a 的情况下表示同时导出数据和定义
gs_dumpall 实例
导出所有数据库的全量信息
导出所有数据库的对象定义
导出所有数据库的对象数据
2. gs_restore、gsql 数据导入
(1)纯文本格式文件导入(gsql)
使用 gs_dump 或 gs_dumpall 导出的纯文本文件就是 sql 文件,如果想要将该内容导入到数据库中,执行 sql 文件就可以实现;执行 sql 文件使用 gsql 客户端工具。gsql 是用于连接数据库,执行 sql 语句,执行元命令的客户端工具。
gsql 参数说明
执行 sql 文件如下:
(2)归档格式文件导入(gs_retore)
使用 gs_dump 可以导出三种归档格式(-c 自定义归档,-d 目录归档,-t tar 归档),因为归档格式文件是以二进制方式存储信息,无法像纯文本一样,可以人为拆解 sql 语句,所以如果想要将 SQL 文件导入到数据库时需要通过 gs_restore 进行解析后导入。
gs_restore 参数说明
gs_restore 也提供可以指定-T、-t、-n 限制要导入或不导入哪些对象
当指定了-d 要导入的数据库时,会将归档文件信息导入到指定的数据库中,不指定-d 时,可以指定-f 将归档文件转换为 sql 文件,相当于 gs_dump -F p
-d 与-f 不能同时使用,也就是要不就导入数据库,要不就转换为 sql 文件
转换为 sql 文件时除了-f 还需要指定-l,因为 gs_restore 要求需要执行-d 或-l,因为-d 与-f 不能同时使用,所以指定-f 时一定需要再指定-l
gs_restore 实例
将 tar 归档文件导入到 student 数据库中
将目录归档文件导入到 student 数据库中
将自定义归档文件导入到 student 数据库中
将目录归档文件转换为 sql 文件
评论