【openGauss数据库】--运维指南03--数据导出
- 🔻 一、openGauss导出数据
- 🔰 1.1 概述
- 🔰 1.2 导出单个数据库
- 🔷 1.2.1 导出数据库
- 🔷 1.2.2 导出模式
- 🔷 1.2.3 导出表
- 🔰 1.3 导出所有数据库
- 🔰 1.4 导出全局对象
- 🔻 二、总结—温故知新
👈【上一篇】 |
💖The Begin💖 点点关注,收藏不迷路💖
| 【下一篇】👉 |
🔻 一、openGauss导出数据
🔰 1.1 概述
openGauss提供的gs_dump
和gs_dumpall
工具,能够帮助用户导出需要的数据库对象或其相关信息。通过导入工具将导出的数据信息导入至需要的数据库,可以完成数据库信息的迁移。gs_dump
支持导出单个数据库或其内的对象,而gs_dumpall
支持导出openGauss中所有数据库或各库的公共全局对象。
gs_dump
和gs_dumpall
通过对导出的数据文件加密,导入时对加密的数据文件进行解密,可以防止数据信息泄露,为数据库的安全提供保证。
🧬 说明:
💠1、使用
gs_dump
加密的纯文本格式文件,如果导出的数据库中包含存储过程,因gsql不支持解密导入存储过程和函数,因此如果导出的数据库中包含存储过程/函数,需使用另外三种模式导出数据库,并使用gs_restore
恢复。
💠2、gs_dump和gs_dumpall工具在进行数据导出时,其他用户可以访问数据库(读或写)。
💠3、gs_dump和gs_dumpall工具支持导出完整一致的数据。例如,T1时刻启动gs_dump导出A数据库,或者启动gs_dumpall导出openGauss数据库,那么导出数据结果将会是T1时刻A数据库或者该openGauss数据库的数据状态,T1时刻之后对A数据库或openGauss数据库的修改不会被导出。
🧬 注意事项:
💠1、禁止修改-F c/d/t 格式导出的文件和内容,否则可能无法恢复成功。对于-F p 格式导出的文件,如有需要,可根据需要谨慎编辑导出文件。
💠2、如果数据库中包含的对象数量(数据表、视图、索引)在50万以上,为了提高性能且避免出现内存问题,建议通过gs_guc工具设置数据库节点的如下参数(如果参数值大于如下建议值,则无需设置)。
gs_guc set -N all -I all -c 'max_prepared_transactions = 1000'
gs_guc set -N all -I all -c 'max_locks_per_transaction = 512'
若设置如上参数,则需重启数据库使参数生效。
gs_om -t stop && gs_om -t start
💠3、为了保证数据一致性和完整性,导出工具会对需要转储的表设置共享锁。如果表在别的事务中设置了共享锁,gs_dump和gs_dumpall会等待锁释放后锁定表。如果无法在指定时间内锁定某个表,转储会失败。用户可以通过指定–lock-wait-timeout选项,自定义等待锁超时时间。
💠4、由于gs_dumpall
读取所有数据库中的表,因此必须以openGauss管理员身份进行连接,才能导出完整文件。在使用gsql执行脚本文件导入时,同样需要管理员权限,以便添加用户和组,以及创建数据库。
🔰 1.2 导出单个数据库
🔷 1.2.1 导出数据库
🟢 1、以操作系统用户omm登录数据库主节点。
[root@klgdj ~]$ su - omm
🟢 2、使用gs_dump导出db_test01 数据库全量信息为tar
归档格式。
[omm@klgdj back_up]$ gs_dump -U omm -f /home/omm/back_up/db_test01_backup.tar -p 15400 db_test01 -F t
🧬 示例:
🟢 1、执行gs_dump,导出db_test01 数据库全量信息,导出文件格式为sql文本格式。
[omm@klgdj back_up]$ gs_dump -U omm -f /home/omm/back_up/db_test01_backup.sql -p 15400 db_test01 -F p
🟢 2、执行gs_dump,仅导出db_test01 数据库中的数据,不包含数据库对象定义,导出文件格式为自定义归档格式。
[omm@klgdj back_up]$ gs_dump -U omm -f /home/omm/back_up/db_test01_data_backup.dmp -p 15400 db_test01 -a -F c
🟢 3、执行gs_dump,仅导出db_test01 数据库所有对象的定义,导出文件格式为sql文本格式。
[omm@klgdj back_up]$ gs_dump -f /home/omm/back_up/db_test01_def_backup.sql -p 15400 db_test01 -s -F p
🟢 4、执行gs_dump,仅导出db_test01 数据库的所有对象的定义,导出文件格式为文本格式,并对导出文件进行加密。
[omm@klgdj back_up]$ gs_dump -f /home/omm/back_up/db_test01_def_backup02.sql -p 15400 db_test01 --with-encryption AES128 --with-key 123456#abcdef -s -F p
🧬 gs_dump 参数详解:
🩸
gs_dump -U jack -W abcd@123 -f /home/omm/back_up/userdatabase_backup.tar -p 8000 dbname -F t
🔷 1.2.2 导出模式
🟢 1、以操作系统用户omm登录数据库主节点。
[root@klgdj ~]$ su - omm
🟢 2、使用gs_dump同时导出db_test01
和public
模式。
[omm@klgdj back_up]$ gs_dump -U omm -f /home/omm/back_up/db_test01_schema_backup -p 15400 db_test01 -n db_test01 -n public -F d
🧬 示例:
🟢 1、执行gs_dump,导出db_test01的
db_test01
模式全量信息,导出文件格式为文本格式。
[omm@klgdj back_up]$ gs_dump -f /home/omm/back_up/db_test01_schema_backup.sql -p 15400 db_test01 -n db_test01 -F p
🟢 2、执行gs_dump,仅导出db_test01数据库的db_test01
模式的数据,导出文件格式为tar归档格式。
[omm@klgdj back_up]$ gs_dump -f /home/omm/back_up/db_test01_schema_data_backup.tar -p 15400 db_test01 -n db_test01 -a -F t
🟢 3、执行gs_dump,仅导出db_test01数据库的db_test01
模式的定义,导出文件格式为目录归档格式。
[omm@klgdj back_up]$ gs_dump -f /home/omm/back_up/db_test01_schema_def_backup -p 15400 db_test01 -n db_test01 -s -F d
🟢 4、执行gs_dump,导出db_test01数据库时,排除public
模式,导出文件格式为自定义归档格式。
[omm@klgdj back_up]$ gs_dump -f /home/omm/back_up/db_test01_schema_exclude_public_backup.dmp -p 15400 db_test01 -N public -F c
🟢 5、执行gs_dump,同时导出db_test01数据库的db_test01
和public
模式,且仅导出模式定义,导出文件格式为tar归档格式。
[omm@klgdj back_up]$ gs_dump -f /home/omm/back_up/db_test01_schema_custom_backup.tar -p 15400 db_test01 -n db_test01 -n public -s -F t
🟢 6、执行gs_dump,导出db_test01数据库时,排除db_test01
和public
模式,导出文件格式为自定义归档格式。
[omm@klgdj back_up]$ gs_dump -f /home/omm/back_up/db_test01_schema_exclude_publicANDdb_test01_backup.dmp -p 15400 db_test01 -N db_test01 -N public -F c
🟢 7、执行gs_dump,导出db_test01
模式下所有表(视图、序列和外表)和public
模式中t_dept表,包含数据和表定义,导出文件格式为自定义归档格式。
[omm@klgdj back_up]$ gs_dump -f /home/omm/back_up/db_test01_backup02.dmp -p 15400 db_test01 -t db_test01.* -t public.t_dept-F c
🧬 gs_dump 参数详解:
🩸
gs_dump -U jack -W abcd@123 -f /home/omm/back_up/userdatabase_backup.tar -p 8000 dbname -F t
🔷 1.2.3 导出表
🟢 1、以操作系统用户omm登录数据库主节点。
[root@klgdj ~]$ su - omm
🟢 2、使用gs_dump同时导出指定表db_test01.t_config和db_test01.t_area。
[omm@klgdj back_up]$ gs_dump -U omm -f /home/omm/back_up/db_test01_table_backup -p 15400 db_test01 -t db_test01.t_config -t db_test01.t_area -F d
🧬 示例:
🟢 1、执行gs_dump,导出表
db_test01.t_config的定义和数据
,导出文件格式为文本格式。
[omm@klgdj backup]$ gs_dump -f /home/omm/backup/db_test01_t_config_backup.sql -p 15400 db_test01 -t db_test01.t_config -F p
🟢 2、执行gs_dump,只导出表db_test01.t_config
的数据,导出文件格式为tar归档格式。
[omm@klgdj backup]$ gs_dump -f /home/omm/backup/db_test01_table_data_backup.tar -p 15400 db_test01 -t db_test01.t_config -a -F t
🟢 3、执行gs_dump,导出表db_test01.t_config
的定义,导出文件格式为目录归档格式。
[omm@klgdj backup]$ gs_dump -f /home/omm/backup/db_test01_table_def_backup -p 15400 db_test01 -t db_test01.t_config -s -F d
🟢 4、执行gs_dump,不导出表db_test01.t_config
,导出文件格式为自定义归档格式。
[omm@klgdj backup]$ gs_dump -f /home/omm/backup/db_test01_exclude_t_config_backup.dmp -p 15400 db_test01 -T db_test01.t_config -F c
🟢 5、执行gs_dump,同时导出两个表db_test01.t_config和db_test01.t_area
,导出文件格式为文本格式。
[omm@klgdj backup]$ gs_dump -f /home/omm/backup/db_test01_table_backup02.sql -p 15400 db_test01 -t db_test01.t_config -t db_test01.t_area -F p
🟢 6、执行gs_dump,导出时,排除两个表db_test01.t_config和db_test01.t_area
,导出文件格式为文本格式。
[omm@klgdj backup]$ gs_dump -f /home/omm/backup/db_test01_exclude_t_configANDt_area_backup.sql -p 15400 db_test01 -T db_test01.t_config -T db_test01.t_area -F p
🟢 7、执行gs_dump,导出表db_test01.t_config的定义和数据
,只导出表db_test01.t_area的定义
,导出文件格式为tar归档格式。
[omm@klgdj backup]$ gs_dump -f /home/omm/backup/db_test01_table_backup3.tar -p 15400 db_test01 -t db_test01.t_config -t db_test01.t_area --exclude-table-data db_test01.t_area -F t
🟢8、执行gs_dump,导出表db_test01.t_config
的定义和数据,并对导出文件进行加密,导出文件格式为文本格式。
[omm@klgdj backup]$ gs_dump -f /home/omm/backup/db_test01_t_config_backup4.sql -p 15400 db_test01 -t db_test01.t_config --with-encryption AES128 --with-key abcdefg_?1234567 -F p
🟢9、执行gs_dump,导出db_test01
模式下所有表(包括视图、序列和外表)和public
模式中t_dept
表,包含数据和表定义,导出文件格式为自定义归档格式。
gs_dump -f /home/omm/backup/db_test01_table_backup5.dmp -p 15400 db_test01 -t db_test01.* -t public.t_dept -F c
🟢10、执行gs_dump,仅导出db_test01数据库依赖于public
模式下的t_user
表对象的视图信息,导出文件格式为目录归档格式。
gs_dump -U omm -f /home/omm/backup/public_t_user_view_backup6 -p 15400 db_test01 -t public.t_user --include-depend-objs --exclude-self -F d
🔰 1.3 导出所有数据库
openGauss支持使用gs_dumpall工具导出所有数据库的全量信息,包含openGauss中每个数据库信息和公共的全局对象信息。
🟢 1、以操作系统用户omm登录数据库主节点。
[root@klgdj ~]$ su - omm
🟢 2、使用gs_dumpall
一次导出所有数据库信息。
[omm@klgdj back_up]$ gs_dumpall -U omm -f /home/omm/backup/DBALL_backup.sql -p 15400
🧬 示例:
🟢 1、执行gs_dumpall,
导出所有数据库全量信息
(omm用户为管理员用户),导出文件为文本格式。执行命令后,会有很长的打印信息,最终出现total time即代表执行成功。示例中将不体现中间的打印信息。
[omm@klgdj backup]$ gs_dumpall -U omm -f /home/omm/backup/DBALL_backup02.sql -p 15400
🟢 2、执行gs_dumpall,仅导出所有数据库定义
(omm用户为管理员用户),导出文件为文本格式。执行命令后,会有很长的打印信息,最终出现total time即代表执行成功。示例中将不体现中间的打印信息。
[omm@klgdj backup]$ gs_dumpall -U omm -f /home/omm/backup/DBALL_def_backup.sql -p 15400 -s
🟢 3、执行gs_dumpall,仅导出所有数据库中数据
,并对导出文件进行加密,导出文件为文本格式。执行命令后,会有很长的打印信息,最终出现total time即代表执行成功。示例中将不体现中间的打印信息。
[omm@klgdj backup]$ gs_dumpall -f /home/omm/backup/DBALL_data_backup.sql -p 15400 -a --with-encryption AES128 --with-key abcdefg_?1234567
🔰 1.4 导出全局对象
openGauss支持使用gs_dumpall工具导出所有数据库公共的全局对象,包含数据库用户和组、表空间及属性(例如:适用于数据库整体的访问权限)信息。
🟢 1、以操作系统用户omm登录数据库主节点。
[root@klgdj ~]$ su - omm
🟢 2、使用gs_dumpall导出表空间对象信息
。
[omm@klgdj back_up]$ gs_dumpall -U omm -f /home/omm/backup/DBALL_tablespace.sql -p 15400 -t
🧬 示例:
🟢 1、执行gs_dumpall,
导出所有数据库的公共全局表空间信息和用户信息
(omm用户为管理员用户),导出文件为文本格式。
[omm@klgdj backup]$ gs_dumpall -U omm -f /home/omm/backup/DBALL_globals.sql -p 15400 -g
🟢 2、执行gs_dumpall,导出所有数据库的公共全局表空间信息(omm用户为管理员用户),并对导出文件进行加密,导出文件为文本格式。
[omm@klgdj backup]$ gs_dumpall -U omm -f /home/omm/backup/DBALL_tablespace02.sql -p 15400 -t --with-encryption AES128 --with-key abcdefg_?1234567
🟢 3、执行gs_dumpall,导出所有数据库的公共全局用户信息(omm用户为管理员用户),导出文件为文本格式。
[omm@klgdj backup]$ gs_dumpall -U omm -f /home/omm/backup/DBALL_user.sql -p 15400 -r
🔻 二、总结—温故知新
❓ 该章详细介绍了openGauss数据库使用gs_dump和gs_dumpall命令导出数据(导出单个数据库&导出所有数据库)。
👈【上一篇】 |
💖The End💖 点点关注,收藏不迷路💖
| 【下一篇】👉 |