gaussdb 逻辑备份恢复【gs_dump 简介、参数说明】【01】

gs_dump 简介

       gs_dump是GaussDB用于备份数据库相关信息的逻辑备份工具。它可以对正在运行的数据库进行完整的一致备份,支持将数据库中的数据定义和数据导出(转储)成物理文件,并使用导入工具进行恢复,同时还支持对数据库的状态信息及syslog进行导出。

三大功能
1.导出格式可以是一个文本(可加密)或目录格式
2.用户可通过gs_dump连接到指定数据库,对数据库进行状态信息查询,并将查询结果显示出来
3.用户可通过导出命令对服务器端的syslog日志进行导出,并将收集到的日志文件保存在目录logpath中,便于服务器运行异常时对其进行故障分析

特点

1.gs_dump运行时对数据库的更新操作不会被导出。
2.gs_dump不会阻塞其他会话对导出数据库的查询或修改,但是会阻塞那些需要独占锁的操作,比如ALTER TABLE。
3.导出文本中包含许多用于重建该数据库的SQL语句,使用gsql工具执行这些SQL语句可以将数据库恢复到导出时的状态。文本格式具有较好的灵活性,可以用于在其他硬件体系的机器或其他SQL数据库产品上重建该数据库。
4.gs_dump支持纯文本格式的AES加密导出。
5.支持并行导出/导入数据,提高大数据导出/导入效率。gs_dump通过创建子进程(Linux)进行并行的导出,而且每个进程/线程会占用一个会话连接数。

命令参考
在这里插入图片描述
说明:OPTION 和 DBNAME可以互换位置

常用参数说明

参数

参数说明

取值

-f, --file=FILENAME输出文件名,并可为其指定已存在的路径。绝对路径或相对路径,且满足操作系统路径命名规则。
-F, --format=d|p导出数据的格式。plain:缩写为p,表示导出数据为文本格式。
directory:缩写为d,表示导出数据为目录格式。
默认值:plain
-P, --logdir=LOGDIR可选参数,指定gs_dump日志的存放位置。
当数据库系统管理员对此目录有写权限时,日志记录到此目录下。
当数据库系统管理员对此目录无写权限时,日志会记录到$GAUSSHOME/bin目录。
必须为绝对路径,且满足操作系统路径命名规则。
-v, --verbose指定冗余模式。这样将令gs_dump输出详细的对象评注以及转储文件的启停时间和进度信息到标准错误上。-
-Z, --compress=0-9指定导出文件的压缩级别。整数,0~9。
--lock-wait-timeout=TIMEOUT指定能获取一个表锁的超时时间。超时则转储会失败,并且会修改本次会话中statement_timeout的值为指定的TIMEOUT的值。非负整数。
--dbstate导出指定数据库的状态信息。-
--syslog导出服务器syslog日志,并将收集到的syslog日志保存在logpath指定的目录下。若未指定logpath 则保存在当前目录下。-
--logpath=LOGDIR可选参数,指定导出的syslog日志的存放位置,与--syslog共同使用。绝对路径或相对路径,且满足操作系统路径命名规则。
-?, --help显示帮助信息然后退出。-

控制输出内容和格式的参数

参数

参数说明

取值范围

--dbname=DBNAME指定将要转储的数据库名。字符串。
-a, --data-only只转储数据(包括表数据,大对象,序列值),不转储模式(数据定义)。-
-b, --blobs在转储中包含大对象。除非指定了--schema,--table,--schema-only开关,否则这是默认行为。因此-b开关仅用于在选择性转储的时候添加大对象。-
-c, --clean在创建数据库之前输出清理(删除)该数据库对象的命令。-
-C, --create转储中使用此选项,转储的目的文件中包括创建数据库和连接此数据库的命令。-
-E, --encoding=ENCODING以指定的字符集编码创建转储。缺省时,转储是按照数据库编码创建的。字符串,仅限操作系统支持的字符集编码类型。
-k, --excludeSchTblspec转储不包含schema和tablespace的CREATE和SET语句的数据。-
-n, --schema=SCHEMA只转储匹配schema的模式内容,包括模式本身以及其中包含的对象。如果忽略,所有目标数据库中的非系统模式都会被转储出来。可以使用多个-n选项指定多个模式。同样,schema参数将按照gsql的\dn命令被解释为匹配模式,因此可以使用通配符匹配多个模式。在使用通配符的时候,最好用引号进行界定,以防止shell将通配符进行扩展。
注意:
如果指定了 -n,gs_dump将不会转储那些模式所依赖的其他数据库对象。因此,无法保证转储出来的内容一定能够在另一个干净的数据库中恢复成功。
非模式对象(比如大对象)不会在指定-n的时候被转储出来。使用--blobs明确要求转储大对象。
字符串。
-N, --exclude-schema=SCHEMA不转储任何匹配schema的模式内容。模式匹配规则与-n完全相同。可以指定多个-N以排除多种匹配的模式。
如果同时指定了-n和-N,则将只转储匹配-n但不匹配-N的模式。如果出现-N但是不出现-n,则匹配-N的模式将不会被转储。
字符串。
-o, --oids作为数据的一部分,为每个表都输出对象标识(OID)。如果应用需要OID字段的话(比如在外键约束中用到),使用这个选项。否则,不应该使用这个选项。-
-O, --no-owner不把对象的所有权设置为对应源数据库。gs_dump默认发出ALTER OWNER或SET SESSION AUTHORIZATION语句以设置创建的数据库对象的所有权。如果这些脚本将来没有被系统管理员(或者拥有脚本中全部对象的用户)运行的话将会失败。-O选项就是为了让该脚本可以被任何用户恢复并且将脚本中对象的所有权赋予该选项指定的用户。-
-s, --schema-only只导出对象定义(模式),不导出数据。-
-S, --sysadmin=NAME指定关闭触发器时需要用到的系统管理员的用户名。它只有使用了--disable-triggers的时候才有影响。字符串。
-t, --table=TABLE只转储匹配TABLE的表(序列、外部表或者视图)。可以使用多个-t选项匹配多个表。同样,TABLE参数将按照gsql的\d命令的规则被解释为匹配模式,因此可以使用通配符匹配多个模式。在使用通配符的时候,最好用引号进行界定,以防止shell将通配符进行扩展。
使用了-t之后,-n和-N选项就失效了。因为被-t选中的表将无视-n和-N选项而被转储,同时除了表之外的其他对象不会被转储。
注意:
如果指定了-t,则gs_dump将不会转储选中的表依赖的任何数据库对象。因此,无法保证转储出来的表能在一个干净的数据库中恢复成功。
需要指明表的搜索路径,即如果表属于某个模式,在指明表的时候需指明表所属的模式。
字符串。
-T, --exclude-table=TABLE不要转储任何匹配TABLE的表。模式匹配规则与-t完全相同。可以指定多个-T以排除多种匹配的表。
如果同时指定了-t和-T,则只转储匹配-t但不匹配-T的表。如果出现-T但是不出现-t,则匹配-T的表将不会被转储。
字符串。
-x, --no-privileges禁止转储访问权限。-
--binary-upgrade这个选项仅用来升级应用程序。-
--column-inserts将数据导出为明确指定了列名的INSERT命令(INSERT INTO table (column, ...) VALUES ...)。这会导致恢复过程比较慢,这种方式是非常合适于将导出的数据导入到非GaussDB数据库。由于这种方式导出数据会为每一行数据生成一条INSERT命令,使得在导入过程中一行数据的出错不会影响到其他数据。
说明:
当--column-inserts选项和--inserts选项同时使用时,--inserts选项失效。
-
--disable-dollar-quoting这个选项关闭使用美元符界定的函数体。强制它们用SQL标准的字符串语法的引号包围。-
--disable-triggers这个选项只是和创建仅有数据的转储相关。它说明gs_dump包含在恢复数据时临时关闭目标表上触发器的命令。如果在表上有参照完整性检查或者其他触发器,而恢复数据的时候不想重载它们,就该使用这个选项。
目前,为--disable-triggers发出的命令必须以系统管理员来执行。因此,应该同时用-s声明一个系统管理员,或者最好是用一个系统管理员的身份来启动这个生成的脚本。
-
--exclude-table-data=TABLE不要转储任何匹配TABLE的表。模式匹配规则与-t完全相同。可以指定多个--exclude-table-data以排除多种匹配的表。字符串。
--inserts将数据导出为INSERT命令(不是COPY命令)。这会导致恢复过程比较慢,这种方式是非常合适于将导出的数据导入到非GaussDB数据库。由于这种方式导出数据会为每一行数据生成一条INSERT命令,使得在导入过程中一行数据的出错不会影响到其他数据。
说明:
如果目标数据库的列顺序和源数据库中的列顺序不一致,则这种方式导出的数据在导入时将会失败。而--column-inserts参数可以避免这种问题。
-
--no-security-labels不要转储安全标签。-
--no-tablespaces不要输出命令去选择表空间。-
--no-unlogged-table-data不要转储非日志表中的内容。-
--pg-format设定这个选项时,导出GaussDB语法格式的备份脚本。-
--quote-all-identifiers强制用双引号引用所有的标识符。-
--section=SECTION只转储指定的区域。pre-data:由大部分的对象定义组成。
data:包含实际的表数据和大对象定义。
post-data:由索引、触发器、规则和约束的定义组成。
--serializable-deferrable等待,直到转储可以正常地运行。-
--use-set-authorization输出符合SQL标准的SET SESSION AUTHORIZATION命令而不是ALTER OWNER命令。使用SET SESSION AUTHORIZATION的转储需要数据库系统管理员的权限才能转储成功,而ALTER OWNER需要的权限低得多。-
--with-encryption=AES128使用AES128对导出的数据进行加密。-
--with-key=KEYAES128加密密钥,密钥要求:长度为16个字符且为数字和字母组合。如果不符合要求,会提示错误。
注意:
对于本身就是shell命令中的关键字符如单引号(')或双引号("),Linux shell会检测输入的单引号(')或双引号(")是否匹配。如果不匹配,shell认为用户没有输入完毕,会一直等待用户输入,从而不会进入到gs_dump程序。
字符串
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值