暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss 逻辑备份恢复gs_restore导入参数说明

李二果 2022-09-22
1178
导入参数:
  • -a, --data-only

    只导入数据,不导入模式(数据定义)。gs_restore的导入是以追加方式进行的。

  • -c, --clean

    在重新创建数据库对象前,清理(删除)已存在于将要还原的数据库中的数据库对象。

  • -C, --create

    导入数据库之前会先使用CREATE DATABASE创建数据库。(指定该选项后,-d指定的数据库仅用以执行CREATE DATABASE命令,所有数据依然会导入到创建的数据库中。)

  • -e, --exit-on-error

    当发送SQL语句到数据库时如果出现错误,请退出。默认状态下会继续,且在导入后会显示一系列错误信息。

  • -I, --index=NAME

    只导入已列举的index的定义。允许导入多个index。如果多次输入-I index导入多个index。

    例如:

    gs_restore -h host_name -p port_number -d postgres -I Index1 -I Index2 backup/MPPDB_backup.tar
    

    在上面这个例子中,Index1和Index2会被导入。

  • -j, --jobs=NUM

    运行gs_restore最耗时的部分(如加载数据、创建index或创建约束)使用并发任务。该选项能大幅缩短导入时间,即将一个大型数据库导入到某一多处理器的服务器上。

    每个任务可能是一个进程或一个线程,这由操作系统决定;每个任务与服务器进行单独连接。

    该选项的最优值取决于服务器的硬件设置、客户端以及网络。还包括这些因素,如CPU核数量、硬盘设置。建议是从增加服务器上的CPU核数量入手,更大的值(服务器上CPU核数量)在很多情况下也能导致数据文件更快的被导入。当然,过高的值会由于超负荷反而导致性能降低。

    该选项只支持自定义归档格式。输入文件必须是常规文件(不能是像pipe的文件)。如果是通过脚本文件,而非直接连接数据库服务器,该选项可忽略。而且,多任务不能与–single-transaction选项一起使用。

  • -L, --use-list=FILENAME

    只导入列举在list-file中的那些归档形式元素,导入顺序以它们在文件中的顺序为准。注意如果像-n或-t的过滤选项与-L使用,它们将会进一步限制导入的项目。

    一般情况下,list-file是通过编辑前面提到的某个-l参数的输出创建的。文件行的位置可更改或直接删除,也可使用分号(;)在行的开始注出。

  • -n, --schema=NAME

    只导入已列举的模式中的对象。

    该选项可与-t选项一起用以导入某个指定的表。

    多次输入-n _schemaname_可以导入多个模式。

    例如:

    gs_restore -h host_name -p port_number -d postgres -n sch1 -n sch2 backup/MPPDB_backup.tar
    

    在上面这个例子中,sch1和sch2会被导入。

  • -O, --no-owner

    不输出设置对象的归属这样的命令,以匹配原始数据库。默认情况下,gs_restore会发出ALTER OWNER或SET SESSION AUTHORIZATION语句设置所创建的模式元素的所属。除非是由系统管理员(或是拥有脚本中所有对象的同一个用户)进行数据库首次连接的操作,否则语句会失败。使用-O选项,任何用户名都可用于首次连接,且该用户拥有所有已创建的对象。

  • -P, --function=NAME(args)

    只导入已列举的函数。请按照函数所在转储文件中的目录,准确拼写函数名称和参数。

    当-P单独使用时,表示导入文件中所有’function-name(args)'函数;当-P同-n一起使用时,表示导入指定模式下的’function-name(args)'函数;多次输入-P,而仅指定一次-n,表示所有导入的函数默认都是位于-n模式下的。

    可以多次输入-n schema-name -P 'function-name(args)'同时导入多个指定模式下的函数。

    例如:

    gs_restore -h host_name -p port_number -d postgres -n test1 -P 'Func1(integer)' -n test2 -P 'Func2(integer)' backup/MPPDB_backup.tar
    

    在上面这个例子中,test1模式下的函数Func1(i integer)和test2模式下的函数Func2(j integer)会被一起导入。

  • -s, --schema-only

    只导入模式(数据定义),不导入数据(表内容)。当前的序列值也不会导入。

  • -S, --sysadmin=NAME

    该参数为扩展预留接口,不建议使用。

  • -t, --table=NAME

    只导入已列举的表定义、数据或定义和数据。该选项与-n选项同时使用时,用来指定某个模式下的表对象。-n参数不输入时,默认为PUBLIC模式。多次输入-n <schemaname> -t <tablename>可以导入指定模式下的多个表。

    例如:

    导入PUBLIC模式下的table1

    gs_restore -h host_name -p port_number -d postgres -t table1 backup/MPPDB_backup.tar
    

    导入test1模式下的test1和test2模式下test2

    gs_restore -h host_name -p port_number -d postgres -n test1 -t test1 -n test2 -t test2 backup/MPPDB_backup.tar
    

    导入PUBLIC模式下的table1和test1 模式下test1

    gs_restore -h host_name -p port_number -d postgres -n PUBLIC -t table1 -n test1 -t table1 backup/MPPDB_backup.tar
    

    说明:
    -t不支持schema_name.table_name的输入格式。

  • -T, --trigger=NAME

    该参数为扩展预留接口。

  • -x, --no-privileges/–no-acl

    防止导入访问权限(GRANT/REVOKE命令)。

  • -1, --single-transaction

    执行导入作为一个单独事务(即把命令包围在BEGIN/COMMIT中)。

    该选项确保要么所有命令成功完成,要么没有改变应用。该选项意为–exit-on-error。

  • –disable-triggers

    该参数为扩展预留接口,不建议使用。

  • –no-data-for-failed-tables

    默认状态下,即使创建表的命令失败(如表已经存在),表数据仍会被导入。使用该选项,像这种表的数据会被跳过。如果目标数据库已包含想要的表内容,这种行为会有帮助。

    该选项只有在直接导入到某数据库中时有效,不针对生成SQL脚本文件输出。

  • –no-publications

    不导入发布。

  • –no-security-labels

    该参数为扩展预留接口,不建议使用。

  • –no-subscriptions

    不导入订阅。

  • –no-tablespaces

    不输出选择表空间的命令。使用该选项,无论默认表空间是哪个,在导入过程中所有对象都会被创建。

  • –section=SECTION

    导入已列举的区段(如pre-data、data或post-data)。

  • –use-set-session-authorization

    该选项用来进行文本格式的备份。

    输出SET SESSION AUTHORIZATION命令,而非ALTER OWNER命令,用以决定对象归属。该选项使转储更加兼容标准,但通过参考转储中对象的记录,导入过程可能会有问题。使用SET SESSION AUTHORIZATION的转储要求必须是系统管理员,同时在导入前还需参考“SET SESSION AUTHORIZATION”,手工对导出文件的密码进行修改验证,只有这样才能进行正确的导入操作,相比之下,ALTER OWNER对权限要求较低。

  • –pipeline

    使用管道传输密码,禁止在终端使用。

须知:

  • 如果安装过程中有任何本地数据要添加到template1数据库,请谨慎将gs_restore的输出载入到一个真正的空数据库中;否则可能会因为被添加对象的定义被复制,而出现错误。要创建一个无本地添加的空数据库,需从template0而非template1复制,例如:
CREATE DATABASE foo WITH TEMPLATE template0;
  • gs_restore不能选择性地导入大对象;例如只能导入那些指定表的对象。如果某个归档形式包含大对象,那所有大对象都会被导入或一个都不会被导入,如果它们通过-L、-t或其他选项被排除。

说明:

  1. -d/–dbname 和 -f/–file 不能同时使用;

  2. -s/–schema-only 和 -a/–data-only不能同时使用;

  3. -c/–clean 和 -a/–data-only不能同时使用;

  4. 使用–single-transaction时,-j/–jobs必须为单任务;

  5. –role 和 --rolepassword必须一起使用。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论