云服务器内容精选

  • 参数说明 通用参数: -f, --file=FILENAME 将输出发送至指定文件或目录。如果省略该参数,则使用标准输出。如果输出格式为(-F c/-F d/-F t)时,必须指定-f参数。如果-f的参数值含有目录,要求目录对当前用户具有读写权限。 -F, --format=c|d|t|p 选择输出格式。格式如下: p|plain:输出一个文本SQL脚本文件(默认)。 c|custom:输出一个自定义格式的归档,并且以目录形式输出,作为gs_restore输入信息。该格式是最灵活的输出格式,因为能手动选择,而且能在恢复过程中将归档项重新排序。该格式默认状态下会被压缩。 d|directory:该格式会创建一个目录,该目录包含两类文件,一类是目录文件,另一类是每个表和blob对象对应的数据文件。 t|tar:输出一个tar格式的归档形式,作为gs_restore输入信息。tar格式与目录格式兼容;tar格式归档形式在提取过程中会生成一个有效的目录格式归档形式。但是,tar格式不支持压缩且对于单独表有8GB的大小限制。此外,表数据项的相应排序在恢复过程中不能更改。 -v, --verbose 指定verbose模式。该选项将导致gs_dump向转储文件输出详细的对象注解和启动/停止次数,向标准错误流输出处理信息。 -V, --version 打印gs_dump版本,然后退出。 -Z, --compress=0-9 指定使用的压缩比级别。 取值范围:0~9 0表示无压缩。 1表示压缩比最小,处理速度最快。 9表示压缩比最大,处理速度最慢。 针对自定义归档格式,该选项指定单个表数据片段的压缩,默认方式是以中等级别进行压缩。tar归档格式和纯文本格式目前不支持压缩。 --lock-wait-timeout=TIMEOUT 请勿在转储刚开始时一直等待以获取共享表锁。如果无法在指定时间内锁定某个表,就选择失败。可以以任何符合SET statement_timeout的格式指定超时时间。 -?, --help 显示gs_dump命令行参数帮助,然后退出。 转储参数:
  • 注意事项 禁止修改-F c/d/t 格式导出的文件和内容,否则可能无法恢复成功。对于-F p 格式导出的文件,如有需要,可谨慎编辑导出的文件。 为了保证数据一致性和完整性,gs_dump会对需要转储的表设置共享锁。如果表在别的事务中设置了共享锁,gs_dump会等待锁释放后锁定表。如果无法在指定时间内锁定某个表,转储会失败。用户可以通过指定--lock-wait-timeout选项,自定义等待锁超时时间。 不支持加密导出存储过程和函数。 对于物化视图,本工具仅支持物化视图定义的导出,在导入后需手动执行REFRESH命令来进行数据恢复。 对于临时对象,本工具仅支持导出全局临时表。 本工具不支持在备机上使用。 由于DN上系统表中分布信息不完整,所以在DN使用gs_dump时,不会转储表的分布信息。 gs_dump导出分区索引时,部分索引分区的属性无法导出,比如索引分区的unusable状态。可以通过查询系统表PG_PARTITION或者查询视图ADM_IND_PARTITIONS获取索引分区的具体属性,通过ALTER INDEX命令可以手动设置索引分区属性。 对于定时任务,本工具仅支持导出在MYSQL兼容性数据库中,通过CREATE EVENT创建的定时任务或通过高级包创建的非周期性定时任务。 普通用户不支持导出DIRECTORY、SYNONYM,若普通用户进行相关导出,会提示“WARNING: xx not dumped because current user is not a superuser”。
  • 说明 如果某数据库集群有任何本地数据要添加到template1数据库,请谨慎将gs_dump的输出恢复到一个真正的空数据库中,否则可能会因为被添加对象的定义被复制,出现错误。要创建一个无本地添加的空数据库,需从template0而非template1复制,例如: CREATE DATABASE foo WITH TEMPLATE template0; tar归档形式的文件大小不得超过8GB(tar文件格式的固有限制)。tar文档整体大小和任何其他输出格式没有限制,操作系统可能对此有要求。 由gs_dump生成的转储文件不包含优化程序用来做执行计划决定的统计数据。因此,建议从某转储文件恢复之后运行ANALYZE以确保最佳效果。转储文件不包含任何ALTER DATABASE…SET命令,这些设置由gs_dumpall转储,还有数据库用户和其他完成安装设置。
  • 主要功能 gs_dump可以创建四种不同的导出文件格式,通过[-F或者--format=]选项指定,具体如表1所示。 表1 导出文件格式 格式名称 -F的参数值 说明 建议 对应导入工具 纯文本格式 p 纯文本脚本文件包含SQL语句和命令。命令可以由gsql命令行终端程序执行,用于重新创建数据库对象并加载表数据。 小型数据库,一般推荐纯文本格式。 使用gsql工具恢复数据库对象前,可根据需要使用文本编辑器编辑纯文本导出文件。 自定义归档格式 c 一种二进制文件。支持从导出文件中恢复所有或所选数据库对象。 中型或大型数据库,推荐自定义归档格式。 使用gs_restore可以选择要从自定义归档/目录归档/tar归档导出文件中导入相应的数据库对象。 目录归档格式 d 该格式会创建一个目录,该目录包含两类文件,一类是目录文件,另一类是每个表和blob对象对应的数据文件。 - tar归档格式 t tar归档文件支持从导出文件中恢复所有或所选数据库对象。tar归档格式不支持压缩且对于单独表大小应小于8GB。 - 可以使用gs_dump工具将文件压缩为目录归档或自定义归档导出文件,减少导出文件的大小。生成目录归档或自定义归档导出文件时,默认进行中等级别的压缩。gs_dump程序无法压缩已归档导出文件。
  • 语法 gs_dump [OPTION]... [DBNAME] “dbname”前面不需要加短或长选项。“dbname”指定要连接的数据库。 例如: 不需要-d,直接指定“dbname”。 gs_dump -p port_number testdb -f dump1.sql 或者 export PGDATABASE=testdb gs_dump -p port_number -f dump1.sql 环境变量:PGDATABASE
  • 示例 使用gs_dump转储数据库为SQL文本文件或其它格式的操作,如下所示。 示例中“backup/MPPDB_backup.sql”表示导出的文件,其中backup表示相对于当前目录的相对目录;“37300”表示数据库服务器端口;“testdb”表示要访问的数据库名。 导出操作时,请确保该目录存在并且当前的操作系统用户对其具有读写权限。 示例1:执行gs_dump,导出testdb数据库全量信息,导出的MPPDB_backup.sql文件格式为纯文本格式。 gs_dump -U omm -f backup/MPPDB_backup.sql -p 37300 testdb -F p gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 09:49:17]: The total objects number is 356. gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 09:49:17]: [100.00%] 356 objects have been dumped. gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 09:49:17]: dump database testdb successfully gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 09:49:17]: total time: 1274 ms 使用gsql程序从纯文本导出文件中导入数据。 示例2:执行gs_dump,导出testdb数据库全量信息,导出的MPPDB_backup.tar文件格式为tar格式。 gs_dump -U omm -f backup/MPPDB_backup.tar -p 37300 testdb -F t gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:02:24]: The total objects number is 1369. gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:02:53]: [100.00%] 1369 objects have been dumped. gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:02:53]: dump database testdb successfully gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:02:53]: total time: 50086 ms 示例3:执行gs_dump,导出testdb数据库全量信息,导出的MPPDB_backup.dmp文件格式为自定义归档格式。 gs_dump -U omm -f backup/MPPDB_backup.dmp -p 37300 testdb -F c gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:05:40]: The total objects number is 1369. gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:06:03]: [100.00%] 1369 objects have been dumped. gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:06:03]: dump database testdb successfully gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:06:03]: total time: 36620 ms 示例4:执行gs_dump,导出testdb数据库全量信息,导出的MPPDB_backup文件格式为目录格式。 gs_dump -U omm -f backup/MPPDB_backup -p 37300 testdb -F d gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:16:04]: The total objects number is 1369. gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:16:23]: [100.00%] 1369 objects have been dumped. gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:16:23]: dump database testdb successfully gs_dump[user='omm'][localhost][port='37300'][testdb][2018-06-27 10:16:23]: total time: 33977 ms
  • 背景信息 gs_dump是GaussDB用于导出数据库相关信息的工具,用户可以自定义导出一个数据库或其中的对象(模式、表、视图等)。支持导出的数据库可以是默认数据库postgres,也可以是自定义数据库。 gs_dump工具在进行数据导出时,其他用户可以访问集群数据库(读或写)。 gs_dump工具支持导出完整一致的数据。例如,T1时刻启动gs_dump导出A数据库,那么导出数据结果将会是T1时刻A数据库的数据状态,T1时刻之后对A数据库的修改不会被导出。 gs_dump支持将数据库信息导出至纯文本格式的SQL脚本文件或其他归档文件中。 纯文本格式的SQL脚本文件:包含将数据库恢复为其保存时的状态所需的SQL语句。通过gsql运行该SQL脚本文件,可以恢复数据库。即使在其他主机和其他数据库产品上,只要对SQL脚本文件稍作修改,也可以用来重建数据库。 归档格式文件:包含将数据库恢复为其保存时的状态所需的数据,可以是tar格式、目录归档格式或自定义归档格式,详见表1。该导出结果必须与gs_restore配合使用来恢复数据库,gs_restore工具在导入时,系统允许用户选择需要导入的内容,甚至可以在导入之前对等待导入的内容进行排序。 gs_dump支持SSL加密通信,使用方式同gsql方式。 使用gs_dump前请确保gs_dump版本与数据库版本保持一致,高版本gs_dump不保证完全兼容低版本内核数据。
  • 背景信息 gs_dumpall是GaussDB用于导出所有数据库相关信息工具,它可以导出集群数据库的所有数据,包括默认数据库postgres的数据、自定义数据库的数据、以及集群所有数据库公共的全局对象。 gs_dumpall工具在进行数据导出时,其他用户可以访问集群数据库(读或写)。 gs_dumpall工具支持导出完整一致的数据。例如,T1时刻启动gs_dumpall导出整个集群数据库,那么导出数据结果将会是T1时刻该集群数据库的数据状态,T1时刻之后对集群数据库的修改不会被导出。 gs_dumpall在导出整个集群所有数据库时分为两部分: gs_dumpall自身对所有数据库公共的全局对象进行导出,包括有关数据库用户和组,表空间以及属性(例如,适用于数据库整体的访问权限)信息。 gs_dumpall通过调用gs_dump来完成集群中各数据库的SQL脚本文件导出,该脚本文件包含将数据库恢复为其保存时的状态所需要的全部SQL语句。 以上两部分导出的结果为纯文本格式的SQL脚本文件,使用gsql运行该脚本文件可以恢复集群数据库。 gs_dumpall支持SSL加密通信,使用方式同gsql方式。 使用gs_dumpall前请确保gs_dumpall版本与gs_dump版本、数据库版本保持一致,高版本gs_dumpall不保证完全兼容低版本内核数据。
  • 注意事项 禁止修改导出的文件和内容,否则可能无法恢复成功。 为了保证数据一致性和完整性,gs_dumpall会对需要转储的表设置共享锁。如果某张表在别的事务中设置了共享锁,gs_dumpall会等待此表的锁释放后锁定此表。如果无法在指定时间内锁定某张表,转储会失败。用户可以通过指定--lock-wait-timeout选项,自定义等待锁超时时间。 由于gs_dumpall读取所有数据库中的表,因此必须以数据库集群管理员身份进行连接,才能导出完整文件。在使用gsql执行脚本文件导入时,同样需要管理员权限,以便添加用户和组,以及创建数据库。导入备份前,验证其安全性,防止管理员权限被利用。 使用gs_dumpall导出所有数据库对象,并希望在新的实例环境上进行导入时,需要保证导出和导入时使用用户的名称和权限相同,否则会出现名称不一致或权限不足的报错。 对于定时任务,本工具仅支持导出在MYSQL兼容性数据库中,通过CREATE EVENT创建的定时任务或通过高级包创建的非周期性定时任务。
  • 背景信息 gs_restore是GaussDB提供的针对gs_dump导出数据的导入工具。通过此工具可将gs_dump导出生成的文件进行导入。 主要功能包含: 导入到数据库 如果连接参数中指定了数据库,则数据将被导入到指定的数据库中。其中,并行导入必须指定连接的密码。 导入到归档文件 如果参数指定"-l",则生成归档文件,其中包含简略的数据总结。 gs_restore支持SSL加密通信,使用方式同gsql方式。 使用gs_restore前请确保gs_restore版本与gs_dump版本、数据库版本保持一致。
  • 示例 特例:执行gsql程序,使用如下选项导入由gs_dump/gs_dumpall生成导出文件夹(纯文本格式)的MPPDB_backup.sql文件到testdb数据库。 gsql -d testdb -p 8000 -f /home/omm/test/MPPDB_backup.sql SET SET SET SET SET ALTER TABLE ALTER TABLE ALTER TABLE ALTER TABLE ALTER TABLE CREATE INDEX CREATE INDEX CREATE INDEX SET CREATE INDEX REVOKE REVOKE GRANT GRANT total time: 30476 ms 示例中“-f”后的是导出的文件,“8000”表示数据库服务器端口;“testdb”表示要访问的数据库名。 gs_restore用来导入由gs_dump生成的导出文件。 示例1:执行gs_restore,将导出的MPPDB_backup.dmp文件(自定义归档格式)导入到testdb数据库。 gs_restore backup/MPPDB_backup.dmp -p 8000 -d testdb restore operation successful total time: 13053 ms 示例2:执行gs_restore,将导出的MPPDB_backup.tar文件(tar格式)导入到testdb数据库。 gs_restore backup/MPPDB_backup.tar -p 8000 -d testdb restore operation successful total time: 21203 ms 示例3:执行gs_restore,将导出的MPPDB_backup文件(目录格式)导入到testdb数据库。 gs_restore backup/MPPDB_backup -p 8000 -d testdb restore operation successful total time: 21003 ms 示例4:执行gs_restore,使用自定义归档格式的MPPDB_backup.dmp文件来进行如下导入操作。 导入PUBLIC模式下所有对象的定义和数据。在导入时会先删除已经存在的对象,如果原对象存在跨模式的依赖则需手工强制干预。 gs_restore backup/MPPDB_backup.dmp -p 8000 -d testdb -e -c -n PUBLIC Error while PROCESSING TOC: Error from TOC entry 313; 1259 337399 TABLE table1 gaussdba could not execute query: ERROR: cannot drop table table1 because other objects depend on it DETAIL: view t1.v1 depends on table table1 HINT: Use DROP ... CASCADE to drop the dependent objects too. Command was: DROP TABLE IF EXISTS public.table1; 手工删除依赖,导入完成后再重新创建。 gs_restore backup/MPPDB_backup.dmp -p 8000 -d testdb -e -c -n PUBLIC restore operation successful total time: 2203 ms 示例5:执行gs_restore,使用自定义归档格式的MPPDB_backup.dmp文件来进行如下导入操作。只导入PUBLIC模式下表table1的定义。 gs_restore backup/MPPDB_backup.dmp -p 8000 -d testdb -e -c -s -n PUBLIC -t table1 restore operation successful total time: 21000 ms 示例6:执行gs_restore,使用自定义归档格式的MPPDB_backup.dmp文件来进行如下导入操作。只导入PUBLIC模式下表table1的数据。 gs_restore backup/MPPDB_backup.dmp -p 8000 -d testdb -e -a -n PUBLIC -t table1 restore operation successful total time: 20203 ms
  • 命令格式 gs_restore [OPTION]... FILE FILE没有短选项或长选项。用来指定归档文件所处的位置。 作为前提条件,需输入dbname或-l选项。不允许用户同时输入dbname和-l选项。 gs_restore默认是以追加的方式进行数据导入。为避免多次导入造成数据异常,在进行导入时,建议选择使用“-c”和“-e”参数。“-c”表示在重新创建数据库对象前,清理(删除)已存在于将要还原的数据库中的数据库对象;“-e”表示当发送SQL语句到数据库时如果出现错误请退出,默认状态下会继续,且在导入后会显示一系列错误信息。 在进行导入时,如果schema对象的owner拥有OPRADMIN的系统权限,那么在导入时需要使用初始用户。
  • 示例 特例:执行gsql程序,使用如下选项导入由gs_dump/gs_dumpall生成导出文件夹(纯文本格式)的MPPDB_backup.sql文件到testdb数据库。 gsql -d testdb -p 8000 -f /home/omm/test/MPPDB_backup.sql SET SET SET SET SET ALTER TABLE ALTER TABLE ALTER TABLE ALTER TABLE ALTER TABLE CREATE INDEX CREATE INDEX CREATE INDEX SET CREATE INDEX REVOKE REVOKE GRANT GRANT total time: 30476 ms 示例中“-f”后的是导出的文件,“8000”表示数据库服务器端口;“testdb”表示要访问的数据库名。 gs_restore用来导入由gs_dump生成的导出文件。 示例1:执行gs_restore,将导出的MPPDB_backup.dmp文件(自定义归档格式)导入到testdb数据库。 gs_restore backup/MPPDB_backup.dmp -p 8000 -d testdb restore operation successful total time: 13053 ms 示例2:执行gs_restore,将导出的MPPDB_backup.tar文件(tar格式)导入到testdb数据库。 gs_restore backup/MPPDB_backup.tar -p 8000 -d testdb restore operation successful total time: 21203 ms 示例3:执行gs_restore,将导出的MPPDB_backup文件(目录格式)导入到testdb数据库。 gs_restore backup/MPPDB_backup -p 8000 -d testdb restore operation successful total time: 21003 ms 示例4:执行gs_restore,使用自定义归档格式的MPPDB_backup.dmp文件来进行如下导入操作。 导入PUBLIC模式下所有对象的定义和数据。在导入时会先删除已经存在的对象,如果原对象存在跨模式的依赖则需手工强制干预。 gs_restore backup/MPPDB_backup.dmp -p 8000 -d testdb -e -c -n PUBLIC Error while PROCESSING TOC: Error from TOC entry 313; 1259 337399 TABLE table1 gaussdba could not execute query: ERROR: cannot drop table table1 because other objects depend on it DETAIL: view t1.v1 depends on table table1 HINT: Use DROP ... CASCADE to drop the dependent objects too. Command was: DROP TABLE IF EXISTS public.table1; 手工删除依赖,导入完成后再重新创建。 gs_restore backup/MPPDB_backup.dmp -p 8000 -d testdb -e -c -n PUBLIC restore operation successful total time: 2203 ms 示例5:执行gs_restore,使用自定义归档格式的MPPDB_backup.dmp文件来进行如下导入操作。只导入PUBLIC模式下表table1的定义。 gs_restore backup/MPPDB_backup.dmp -p 8000 -d testdb -e -c -s -n PUBLIC -t table1 restore operation successful total time: 21000 ms 示例6:执行gs_restore,使用自定义归档格式的MPPDB_backup.dmp文件来进行如下导入操作。只导入PUBLIC模式下表table1的数据。 gs_restore backup/MPPDB_backup.dmp -p 8000 -d testdb -e -a -n PUBLIC -t table1 restore operation successful total time: 20203 ms
  • 命令格式 gs_restore [OPTION]... FILE FILE没有短选项或长选项。用来指定归档文件所处的位置。 作为前提条件,需输入dbname或-l选项。不允许用户同时输入dbname和-l选项。 gs_restore默认是以追加的方式进行数据导入。为避免多次导入造成数据异常,在进行导入时,建议选择使用“-c”和“-e”参数。“-c”表示在重新创建数据库对象前,清理(删除)已存在于将要还原的数据库中的数据库对象;“-e”表示当发送SQL语句到数据库时如果出现错误请退出,默认状态下会继续,且在导入后会显示一系列错误信息。 在进行导入时,如果schema对象的owner拥有OPRADMIN的系统权限,那么在导入时需要使用初始用户。
  • 背景信息 gs_restore是GaussDB提供的针对gs_dump导出数据的导入工具。通过此工具可将gs_dump导出生成的文件进行导入。 主要功能包含: 导入到数据库 如果连接参数中指定了数据库,则数据将被导入到指定的数据库中。其中,并行导入必须指定连接的密码。导入时生成列会自动更新,并像普通列一样保存。 导入到归档文件 如果参数指定"-l",则生成归档文件,其中包含简略的数据总结。 gs_restore支持SSL加密通信,使用方式同gsql方式。 使用gs_restore前请确保gs_restore版本与gs_dump版本、数据库版本保持一致。