vb_restore

背景信息

vb_restore是VexDB提供的针对vb_dump导出数据的导入工具。通过此工具可导入由vb_dump生成的二进制归档格式(c)、目录格式(d)、tar格式(t)的备份文件。

vb_restore的主要功能包含:

  • 导入到数据库
    如果连接参数中指定了数据库,则数据将被导入到指定的数据库中。其中,并行导入必须指定连接的密码。导入时生成列会自动更新,并像普通列一样保存。
  • 导入到脚本文件
    如果未指定导入数据库,则必须指定list选项。将会创建包含重建数据库所必须的SQL语句脚本并写入到文件或者标准输出。等效于直接使用vb_dump导出为纯文本格式。多用于TOC文件选择性恢复

工具运行产生的日志位于 $GAUSSLOG/bin/vb_restore 目录下,每个日志最大 16 MB,最多保留 50 个。如果没有配置环境变量 $GAUSSLOG,则不会产生日志文件。

注意事项

  • vb_restore工具由安装VexDB数据库的操作系统用户执行。
  • 一旦恢复,最好在每个数据库上运行ANALYZE | ANALYSE,优化程序提供有用的统计数据。
  • 如果安装过程中有任何本地数据要添加到template1数据库,请谨慎将vb_restore的输出载入到一个真正的空数据库中;否则可能会因为被添加对象的定义被复制,而出现错误。要创建一个无本地添加的空数据库,需从template0而非template1复制,例如:
    CREATE DATABASE foo WITH TEMPLATE template0;
    
  • vb_restore不能选择性地导入大对象;例如只能导入那些指定表的对象。如果某个归档形式包含大对象,那所有大对象都会被导入或一个都不会被导入。如果此归档对象通过-L、-t或其他选项被排除,那么所有大对象一个都不会被导入。
  • vb_restore默认是以追加的方式进行数据导入。为避免多次导入造成数据异常,在进行导入时,建议使用“-c”参数,在重新创建数据库对象前,清理(删除)已存在于将要还原的数据库中的数据库对象。
  • 日志打印无开关,若需隐藏日志,请将日志重定向到日志文件。若恢复表数据时,数据量很大,会分批恢复,因此会多次出现“表数据已完成导入”的日志。
  • 排除表恢复不支持指定某一子分区,对于分区表可用参数--exclude-table-file或--exclude-table指定分区表。
  • --exclude-table和--exclude-table-file不支持和以下参数同时使用:
    • -t, --table=NAME
    • -I, --index=NAME
    • -s, --schema-only

命令格式

vb_restore [OPTION]... FILE
  • FILE没有短选项或长选项。用来指定归档文件所处的位置。
  • 作为前提条件,需输入dbname或-l选项。不允许用户同时输入dbname和-l选项。

通用参数:

General options:
  -d, --dbname=NAME                       connect to database name
  -f, --file=FILENAME                     output file name
  -F, --format=c|d|t                      backup file format (should be automatic)
  -l, --list                              print summarized TOC of the archive
  -v, --verbose                           verbose mode
  -V, --version                           output version information, then exit
  -?, --help                              show this help, then exit

恢复控制参数:

Options controlling the restore:
  -a, --data-only                       restore only the data, no schema
  -c, --clean                           clean (drop) database objects before recreating
  -C, --create                          create the target database
  -e, --exit-on-error                   exit on error, default is to continue
  -I, --index=NAME                      restore named index(s)
  -j, --jobs=NUM                        use this many parallel jobs to restore
  -L, --use-list=FILENAME               use table of contents from this file for
                                        selecting/ordering output
  -n, --schema=NAME                     restore only objects in this schema(s)
  -O, --no-owner                        skip restoration of object ownership
  -P, --function=NAME(args)             restore named function(s)
  -r, --remap-schema=SCHEMA1:SCHEMA2    change SCHEMA1 to SCHEMA2 while restore
  -s, --schema-only                     restore only the schema, no data
  -S, --sysadmin=NAME                   system admin user name to use for disabling triggers
  -t, --table=NAME                      restore named table(s)
  -T, --trigger=NAME                    restore named trigger(s)
  -x, --no-privileges/--no-acl          skip restoration of access privileges (grant/revoke)
  -1, --single-transaction              restore as a single transaction
  --disable-triggers                    disable triggers during data-only restore
  --no-data-for-failed-tables           do not restore data of tables 
                                        that could not be created
  --sess-replic-role=replica            Set the guc parameter session                                                                      
                                        _replication_role
  --no-publications                     do not restore publications
  --no-security-labels                  do not restore security labels
  --no-subscriptions                    do not restore subscriptions
  --no-tablespaces                      do not restore tablespace assignments
  --section=SECTION                     restore named section (pre-data, data, or post-data)
  --use-set-session-authorization       use SET SESSION AUTHORIZATION commands instead of
                                        ALTER OWNER commands to set ownership
  --pipeline                            use pipeline to pass the password,
                                        forbidden to use in terminal
  --with-decryption=AES128/SM4          restore data is decrypted using AES128 or SM4 in hardware encryption mode
  --with-key=KEY                        hardware encryption device internal key index
  --with-salt=RANDVALUES                random values for decrypt
  --exclude-table                       exclude single table, input format: SCHEMA.Object
  --exclude-table-file=FileName         exclude one or more tables, input file format: SCHEMA.Object in each line.

连接参数:

Connection options:
  -h, --host=HOSTNAME                   database server host or socket directory
  -p, --port=PORT                       database server port number
  -U, --username=NAME                   connect as specified database user
  -w, --no-password                     never prompt for password
  -W, --password=PASSWORD               the password of specified database user
  --role=ROLENAME                       do SET ROLE before restore
  --rolepassword=ROLEPASSWORD           the password for role

参数说明

通用参数

  • -d, --dbname=NAME
    连接数据库dbname并直接导入到该数据库中。
  • -f, --file=FILENAME
    指定生成脚本的输出文件,或使用-l时列表的输出文件。
    默认是标准输出。
    -d/--dbname和-f/--file 不能同时使用。
  • -F, --format=c|d|t
    指定归档格式。由于vb_restore会自动决定格式,因此不需要指定格式。
    取值范围:
    • c/custom:该归档形式为vb_dump的二进制格式。
    • d/directory:该归档形式是一个目录归档形式。
    • t/tar:该归档形式是一个tar归档形式。
  • -l, --list
    列出归档形式内容。这一操作的输出可用作-L选项的输入。注意如果像-n或-t的过滤选项与-l使用,过滤选项将会限制列举的项目(即归档形式内容)。
  • -v, --verbose
    开启冗长模式,打印详细信息。
  • -V, --version
    打印vb_restore版本,然后退出。
  • -?, --help
    显示vb_restore命令行参数帮助,然后退出。

恢复控制参数

  • -a, --data-only
    只导入数据,不导入模式(数据定义)。vb_restore的导入是以追加方式进行的。
    -s/--schema-only 和 -a/--data-only不能同时使用。
  • -c, --clean
    在重新创建数据库对象前,清理(删除)已存在于将要还原的数据库中的数据库对象。
    -c/--clean 和 -a/--data-only不能同时使用。
  • -C, --create
    导入数据库之前会先使用CREATE DATABASE创建导出时连接的数据库。(指定该选项后,-d指定的数据库仅用于数据库连接,所有数据会导入到创建的数据库中。)
    对于VexDB数据库而言,当前此参数暂无任何实际作用,-d参数指定的数据库就是数据恢复或导入的实际目标。
  • -e, --exit-on-error
    当发送SQL语句到数据库时如果出现错误,请退出。默认状态下会继续,且在导入后会显示一系列错误信息。
  • -I, --index=NAME
    只导入已列举的index的定义。允许导入多个index。如果多次输入-I index导入多个index。
    例如:
    vb_restore -h host_name -p port_number -d postgres -I Index1 -I Index2 backup/MPPDB_backup.tar
    

    在上面这个例子中,Index1和Index2会被导入。
  • -j, --jobs=NUM
    运行vb_restore最耗时的部分(如加载数据、创建index或创建约束)使用并发任务。该选项能大幅缩短导入时间,即将一个大型数据库导入到某一多处理器的服务器上。
    使用--single-transaction时,-j/--jobs必须为单任务。
    说明
    • 每个任务可能是一个进程或一个线程,这由操作系统决定。每个任务与服务器进行单独连接。
    • 该选项的最优值取决于服务器的硬件设置、客户端以及网络。还包括这些因素,如CPU核数量、硬盘设置。建议是从增加服务器上的CPU核数量入手,更大的值(服务器上CPU核数量)在很多情况下也能导致数据文件更快的被导入。当然,过高的值会由于超负荷反而导致性能降低。
    • 该选项只支持二进制归档格式(c)和目录格式(d)。输入文件必须是常规文件(不能是像pipe的文件)。如果是通过脚本文件,而非直接连接数据库服务器,该选项可忽略。而且,多任务不能与--single-transaction选项一起使用。
  • -L, --use-list=list-file
    只导入列举在list-file中的那些归档形式元素,导入顺序以它们在文件中的顺序为准。注意如果像-n或-t的过滤选项与-L使用,它们将会进一步限制导入的项目。一般情况下,list-file是通过编辑前面提到的某个-l参数的输出创建的。文件行的位置可更改或直接删除,也可使用分号(;)在行的开始注出。
    当语句中指定了-L,而没有指定dbname时,将list-file中过滤后的恢复命令输出到屏幕,而不实际进行恢复操作。用法参考示例5:-L输出恢复语句但不执行恢复。
    将恢复命令输出到屏幕时,会一并输出vb_restore恢复过程中对数据库参数的修改(比如将client_min_messages修改为最小级别来忽略恢复过程中的问题),这些修改在数据库中执行后可能造成非预期的结果。如果恢复过程不想执行这些参数的改动,可以编辑基于备份文件生成的SQL脚本,删除或注释掉脚本中需要跳过的操作,再使用vsql工具恢复
  • -n, --schema=NAME
    只导入已列举的模式中的对象。该选项可与-t选项一起用以导入某个指定的表。多次输入-n _schemaname_可以导入多个模式。
    例如:
    vb_restore -h host_name -p port_number -d postgres -n sch1 -n sch2 backup/MPPDB_backup.tar
    

    在上面这个例子中,sch1和sch2会被导入。
  • -O, --no-owner
    不输出设置对象的归属这样的命令,以匹配原始数据库。默认情况下,vb_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)'同时导入多个指定模式下的函数。
    例如:
    vb_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)会被一起导入。
  • -r, --remap-schema=SCHEMA1:SCHEMA2
    恢复时将SCHEMA1更改为SCHEMA2进行恢复。不支持与以下参数同时使用:
    • -a, --data-only restore only the data, no schema
    • -c, --clean clean (drop) database objects before recreating
    • -C, --create create the target database
    • -O, --no-owner skip restoration of object ownership
  • -s, --schema-only
    只导入模式(数据定义),不导入数据(表内容)。当前的序列值也不会导入。
    -s/--schema-only 和 -a/--data-only不能同时使用。
    若在使用vb_dump导出时指定了只导出模式(即指定了-s参数),则导入时必须指定本参数。
  • -S, --sysadmin=NAME
    该参数为扩展预留接口,不建议使用。
  • -t, --table=NAME
    只导入已列举的表定义、数据或定义和数据。该选项与-n选项同时使用时,用来指定某个模式下的表对象。-n参数不输入时,默认为PUBLIC模式。多次输入-n -t 可以导入指定模式下的多个表。
    例如:
    导入PUBLIC模式下的table1:
    vb_restore -h host_name -p port_number -d postgres -t table1 backup/MPPDB_backup.tar
    

    导入test1模式下的test1和test2模式下test2:
    vb_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:
    vb_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。
    使用--single-transaction时,-j/--jobs必须为单任务。
  • --disable-triggers
    该参数为扩展预留接口,不建议使用。
  • --no-data-for-failed-tables
    默认状态下,即使创建表的命令失败(如表已经存在),表数据仍会被导入。使用该选项,像这种表的数据会被跳过。如果目标数据库已包含想要的表内容,这种行为会有帮助。该选项只有在直接导入到某数据库中时有效,不针对生成SQL脚本文件输出。
  • --sess-replic-role=replica
    导入时提前设置guc参数session_replication_role为replica,以避免触发器行为、重写规则对恢复过程的影响。
    由于session_replication_role是SUSET类型参数,只允许数据库管理员用户进行修改,使用普通用户导入时该设置不生效,会报错提示权限不足,无法修改参数。
  • --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
    使用管道传输密码,禁止在终端使用。
  • --with-decryption=AES128/SM4
    还原数据时采用AES128或SM4硬件加密方式解密。
    若导出时使用--with-encryption指定了加密方式,则恢复时需要指定此参数并采用同样的方式进行解密。
    该选项必须与--with-key和--with-salt同时使用。
  • --with-key=KEY
    硬件加密设备内部的密钥索引。
  • --with-salt=RANDVALUES
    用于解密的随机盐值。
    • 必须为16个字符的字符串。
    • 恢复时指定的盐值必须与加密导出时指定的盐值相同。
  • --exclude-table
    排除指定表进行恢复,输入格式为SCHEMA.OBJECT。不支持与以下参数同时使用:
    • -t, --table=NAME restore named table(s)
    • -I, --index=NAME restore named index(s)
    • -s, --schema-only restore only the schema, no data
  • --exclude-table-file=FileName
    排除指定文件中包含的单表或多表进行恢复,文件格式为每行指定SCHEMA.OBJECT。不支持与以下参数同时使用:
    • -t, --table=NAME restore named table(s)
    • -I, --index=NAME restore named index(s)
    • -s, --schema-only restore only the schema, no data

    --exclude-table-file仅限于排除表,与其他数据库对象无关。

连接参数

  • -h, --host=HOSTNAME
    指定的主机名称。如果取值是以斜线开头,将用作Unix域套接字的目录。默认值取自PGHOST环境变量;如果没有设置,将启动某个Unix域套接字建立连接。该参数只针对VexDB外,对VexDB内本机只能用127.0.0.1。
    环境变量:PGHOST
  • -p, --port=PORT
    指定服务器所侦听的TCP端口或本地Unix域套接字后缀,以确保连接。默认值设置为PGPORT环境变量。在开启线程池情况下,建议使用 pooler port,即侦听端口+1。
    环境变量:PGPORT
  • -U, --username=NAME
    所连接的用户名。
    环境变量:PGUESR
  • -w, --no-password
    不出现输入密码提示。如果服务器要求密码认证并且密码没有通过其它形式给出,则连接尝试将会失败。 该选项在批量工作和不存在用户输入密码的脚本中很有帮助。
  • -W, --password=PASSWORD
    指定用户连接的密码。如果主机的认证策略是trust,则不会对系统管理员进行密码验证,即无需输入-W参数;如果没有-W参数,并且不是系统管理员,vb_restore会提示用户输入密码。
  • --role=ROLENAME
    指定导入操作使用的角色名。选择该参数,会使vb_restore连接数据库后,发起一个SET ROLE角色名命令。当所授权用户(由-U指定)没有vb_restore要求的权限时,该参数会起到作用,即切换到具备相应权限的角色。某些安装操作规定不允许直接以初始用户身份登录,而使用该参数能够在不违反该规定的情况下完成导入。
  • --rolepassword=ROLEPASSWORD
    指定具体角色用户的角色密码。
    --role 和--rolepassword必须一起使用。

TOC文件选择性恢复

功能描述

使用vb_restore还原除了纯文本格式以外的备份时,可以通过生成并编辑TOC控制文件,将文件内的行注释、删除或重新排列,达到定制还原效果的目的。

注意事项

  • 用户可以在生成控制文件后,以行前加分号“;”的方式注释掉不用还原的内容。
  • 控制文件内,每行开头的数字代表赋给每个项目的内部归档 ID。

语法格式

生成控制文件的语句如下:

vb_restore -l -f test.toc backup.dmp

或者:

vb_restore -l backup.dmp > test.sql

上述语句中:

  • test.toc、test.sql是生成的控制文件的名称(包括路径)。
  • backup.dmp是通过vb_dump导出得到的备份文件名称(包括路径),备份文件也可以是tar格式或者目录格式。

TOC控制文件的使用请参考示例4

示例

说明

示例中待恢复的备份文件均来自vb_dump的示例。

示例1

创建新数据库并恢复

恢复vb_dump示例4中的备份文件backup4_1.dmp,恢复时指定其恢复到一个新的数据库。

  1. 使用vsql工具连接至数据库vexdb。
  2. 创建数据库test5的数据库。
    CREATE  database test5;
    
  3. 退出vsql程序,执行导入操作。
    vb_restore -d test5 $PGDATA/backup4_1.dmp
    
  4. 完成导入操作后,使用vsql工具连接至test5数据库。
    vsql -d test5 -p 5432 -r
    
  5. 使用如下语句查看导入结果。
    select * from table1;
    select * from table2;
    select * from table3;
    

    返回结果如下,表示已成功导入test5库,数据库中的每张表都有且仅有一条数据。
    name  | id
    -------+----
    alice | 1
    (1 row)
    
    name | id
    ------+----
    jack | 2
    (1 row)
    
    name | id
    ------+----
    bob  | 3
    (1 row)
    

示例2

-c清理对象再恢复

在本文示例1的基础上,再次执行恢复语句导入backup4_1.dmp。在执行时指定-c,表示恢复数据前先删除对象,恢复操作不会导致数据重复。

  1. 执行导入语句。
    vb_restore -d test5 $PGDATA/backup4_1.dmp -c
    
  2. 完成导入操作后,使用vsql工具连接至test5数据库。
    vsql -d test5 -p 5432 -r
    
  3. 使用如下语句查看导入结果。
    select * from table1;
    select * from table2;
    select * from table3;
    

    返回结果如下,表示已成功导入test5库,数据库中的每张表都有且仅有一条数据。
    name  | id
    -------+----
    alice | 1
    (1 row)
    
    name | id
    ------+----
    jack | 2
    (1 row)
    
    name | id
    ------+----
    bob  | 3
    (1 row)
    

示例3

-s仅恢复定义

在一个新数据库内恢复vb_dump示例4的备份文件backup4_1.dmp。在恢复时指定-s,代表仅恢复定义。

  1. 使用vsql工具连接至数据库vexdb。
    vsql -d vexdb -p 5432 -r
    
  2. 创建用于恢复的数据库testdb4。
    create database testdb4;
    
  3. 退出vsql程序,执行恢复语句。
    vb_restore -d testdb4 $PGDATA/backup4_1.dmp -s
    
  4. 恢复成功后,使用vsql工具连接至数据库testdb4。
    vsql -d testdb4 -p 5432 -r
    
  5. 使用如下语句查看恢复情况。
    select * from table1;
    select * from table2;
    select * from table3;
    

    返回结果如下,表示已成功将table1、table2、table3导入到数据库testdb4中,只包括定义,不包括数据。
    name | id
    ------+----
    (0 rows)
    
    name | id
    ------+----
    (0 rows)
    
    name | id
    ------+----
    (0 rows)
    

示例4

TOC文件选择性恢复

在一个新数据库内恢复vb_dump示例4的备份文件backup4_1.dmp,并通过TOC控制文件排除表table2。

  1. 使用vsql工具连接至数据库vexdb,创建用于恢复的数据库testdb5。
    create database testdb5;
    
  2. 退出vsql程序,为备份文件backup4_1生成相应的TOC控制文件。
    vb_restore -l -f test.toc $PGDATA/backup4_1.dmp
    
  3. 查看TOC文件的内容。
    vi test.toc
    

    在包含table2信息的第17和22行首加上分号;注释掉内容,修改后的示例如下。修改后保存退出。
    ;
    ; Archive created at Thu Apr 20 16:45:52 2023
    ;     dbname: test4
    ;     TOC Entries: 10
    ;     Compression: -1
    ;     Dump Version: 1.12-0
    ;     Format: CUSTOM
    ;     Integer: 4 bytes
    ;     Offset: 8 bytes
    ;     Dumped from database version: 9.2.4
    ;     Dumped bygs_dump version: 9.2.4
    ;
    ;
    ; Selected TOC Entries:
    ;
    720; 1259 16619 TABLE public table1 vexdb
    ;721; 1259 16625 TABLE public table2 vexdb
    722; 1259 16631 TABLE public table3 vexdb
    447; 1259 13336 VIEW public vb_login_info vexdb
    5527; 0 0 ACL public vb_login_info vexdb
    5519; 0 16619 TABLE DATA public table1 vexdb
    ;5520; 0 16625 TABLE DATA public table2 vexdb
    5521; 0 16631 TABLE DATA public table3 vexdb
    
  4. 使用TOC控制文件完成恢复。
    vb_restore -Fc -C -L test.toc -d testdb5 $PGDATA/backup4_1.dmp
    
  5. 完成恢复后,使用vsql工具连接至数据库testdb5。
    vsql -d testdb5 -p 5432 -r
    
  6. 查看当前数据库的表信息。
    \d
    

    返回结果如下,表示成功导入了table1和table3。
                    List of relations
    Schema |     Name      | Type  |  Owner   |                    Storage
    --------+---------------+-------+----------+------------------------------------------------
    public | table1        | table | vexdb | {orientation=row,compression=no,fillfactor=80}
    public | table3        | table | vexdb | {orientation=row,compression=no,fillfactor=80}
    public | vb_login_info | view  | vexdb |
    (3 rows)
    
  7. 查看table1和table3的数据。
    select * from table1;
    select * from table3;
    

    返回结果如下:
    name | id
    ------+----
    alice | 1
    (1 row)
    
    name | id
    ------+----
    bob  | 3
    (1 row)
    

示例5

-L输出恢复语句但不执行恢复

  1. 在vexdb数据库中创建测试表并插入测试数据,查看测试表数据。
    CREATE TABLE table_test1 (
    col1 NUMBER,
    col2 VARCHAR2(50),
    col3 VARCHAR2(50),
    col4 VARCHAR2(100),
    col5 DATE);
    INSERT INTO table_test1(col1, col2, col3, col4, col5) VALUES(1, 'value1', 'value2', 'some text', TO_DATE('2022-01-01', 'YYYY-MM-DD'));
    SELECT * FROM table_test1;
    

    返回结果如下:
    col1 |  col2  |  col3  |   col4    |    col5
    ------+--------+--------+-----------+------------
        1 | value1 | value2 | some text | 2022-01-01
    (1 row)
    
  2. 退出数据库连接,使用安装VexDB的操作系统用户执行vb_dump命令,备份vexdb数据库的内容。
    vb_dump vexdb -t table_test1 -F c -f /tmp/bak_test.dmp
    
  3. 备份成功后,使用vb_restore的-l选项生成一个归档文件list-file。
    vb_restore -l -f /tmp/testsql.list /tmp/bak_test.dmp
    
  4. 使用vb_restore的-L选项,依据list-file输出过滤后的恢复语句。
    vb_restore -L /tmp/testsql.list /tmp/bak_test.dmp
    

    返回结果如下:
    --
    --vexdb dump
    --
    
    SET statement_timeout = 0;
    SET xmloption = content;
    SET client_encoding = 'UTF8';
    SET standard_conforming_strings = on;
    SET uppercase_attribute_name = false;
    SET check_function_bodies = false;
    SET session_replication_role = replica;
    SET client_min_messages = warning;
    SET enable_dump_trigger_definer = on;
    SET behavior_compat_options = '';
    
    SET search_path = public;
    
    SET default_tablespace = '';
    
    SET default_with_oids = false;
    
    --
    -- Name: table_test1; Type: TABLE; Schema: public; Owner:vexdb; Tablespace:
    --
    
    CREATE TABLE table_test1 (
        col1 numeric,
        col2 varchar(50),
        col3 varchar(50),
        col4 varchar(100),
        col5 date
    )
    WITH (orientation=row, compression=no, fillfactor=80);
    
    
    ALTER TABLE public.table_test1 OWNER TO vexdb;
    
    --
    -- Data for Name: table_test1; Type: TABLE DATA; Schema: public; Owner:vexdb--
    
    COPY table_test1 (col1, col2, col3, col4, col5) FROM stdin;
    1       value1  value2  some text       2022-01-01
    \.
    ;
    
    --
    -- reset some params
    --
    
    RESET session_replication_role;
    --
    --vexdb dump complete
    --
    
  5. 后续可以按需选择使用vb_restore恢复,或者通过编辑基于备份文件生成的SQL脚本来调整恢复流程和效果,再使用vsql工具恢复。后续恢复步骤此处不再演示。
    基于备份文件生成SQL脚本的命令如下:
    vb_restore -L /tmp/testsql.list /tmp/bak_test.dmp > /tmp/test.sql
    

需要帮助?

扫码添加企业微信
获得专业技术支持

企业微信二维码
🎯 快速响应💡 专业解答