VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

高速导入导出transportable

功能描述

transportable table功能旨在提供一种通用的快速在线迁移方法,其可以最小支持到表级别的细粒度在线快速物理迁移。

注意事项

  • 进行该迁移操作需确保源库及目标库软件版本一致。
  • 确保源库及目标库的编码一致。
  • 确保待迁移的表上没有外键约束;对于有外键约束的表,需要将关联表同时导出;存在外键约束的情况下,如果不将父表一起进行迁移,则在导入子表时将报错,子表无法导入到目标库中。迁移工具在导出时不会检测外键约束,需要操作者先自行检查。
  • 禁用状态的索引的不导出;如果要迁移禁用的索引,需要操作者先取消其禁用状态。
  • 待迁移的表不能出现过删除列的操作。
  • 该迁移工具仅支持astore存储引擎下无压缩的行存表,不支持全局分区索引,不支持interval分区,不支持物化视图。
  • 该迁移工具不迁移表空间,使用目标数据库的默认表空间。

语法格式

  • 导出

    vb_ttdump [OPTION]...
    
    General options:
    -d, --database=DBNAME                       database name to dump
    -D, --data-directory=DIR                    directory for output data file
    -f, --metadata-file=FILENAME                metadata file name
    -F, --format=p|t                            output file format (original, tar)
    -n, --schema=SCHEMA                         schema name to dump
    -t, --export-tables=TABLE                   table name(s) to dump
    -v, --verbose                               verbose mode
    -V, --version                               output version information, then exit
    -?, --help                                  show this help, then exit
    
    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
    
  • 导入

    vb_ttrestore [OPTION]...
    
    General options:
    -d, --database=DBNAME                       database name to restore
    -D, --data-directory=DIR                    directory for input data file
    -f, --metadata-file=FILENAME                metadata file name
    -n, --schema=SCHEMA                         schema name to restore
    -t, --import-tables=TABLE                   table name(s) to restore
    -v, --verbose                               verbose mode
    -V, --version                               output version information, then exit
    --remap-schema=OLDSCHEMA:NEWSCHEMA          remap old schema to new one
    --table-exists-action=skip|replace          action when table exists (skip, replace)
    -?, --help                                  show this help, then exit
    
    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
    

参数说明

  • vb_ttdump导出
    • -D:指定数据文件的输出路径,需要指定具有读写权限的操作系统全路径,并确保存储空间充足。
    • -F:指定输出格式,-p(原样输出),-t(tar格式输出)。
    • -f:指定元数据导出文件。
    • -t:指定要导出的表。可以通过schema_name.table_name来指定模式名,多张表可以通过多个-t来指定。
    • -n:指定要导出的schema。当指定-n参数时,忽略-t参数,此时导出指定schema下的所有表。
    • -d:指定要导出的database。该参数不与-n,-t冲突,如果没有指定-n,-t参数,则导出整个database;否则按照更细粒度的制定进行导出。
    • -v:在导出时显示详细信息。
    • -V:查看该工具软件版本号。
    • -p:指定登录数据库的端口号。
    • -U:指定导出所使用的用户,该用户要求为具有管理员权限的用户。
    • -W:指定-U参数所指定的用户的密码。
    • -?,--help:显示帮助信息。
  • vb_ttrestore导入
    • -D:指定数据文件的输入路径,确保操作用户对该路径具有读写权限。
    • -f:指定元数据备份文件路径。
    • -t:指定要导入的表。可以将备份集中的部分指定表进行恢复,多张表可以通过多个-t来指定。
    • -n:指定要导入的schema。当指定-n参数时,忽略-t参数,此时导入指定schema下的所有表。指定的schema如果在目标库中存在,则恢复到该schema下;如果目标库中不存在该指定schema,则创建schema后进行导入。
    • -d:指定要导入的database。
    • --remap-schema:通过old_schema_name:new_schema_name的格式为转储对象重新指定schema。
    • --table-exists-action:指定导入对象已存在时的处理方式。可选项:skip,replace。默认值为skip,表示跳过该对象不进行导入;replace表示删除之前的对象后导入新对象。
    • -v:在导入时显示详细信息。
    • -V:查看该工具软件版本号。
    • -p:指定登录数据库的端口号。
    • -U:指定导入所使用的用户,该用户要求为具有管理员权限的用户。
    • -?,--help:显示帮助信息。

示例

1、在数据库vastbase中创建测试表test_1021,并插入数据。

create table test_1021(id int,name varchar);
insert into test_1021 values(1, 'aaa'), (2, 'bbb');

2、创建一个导入的目标数据库transtest。

create database transtest;

3、创建备份文件路径。

mkdir -p /tmp/bak/

4、使用系统管理员导出表。

vb_ttdump -U vbadmin -W 'Vbase@admin' -D /tmp/bak -F p -f /tmp/bak/1021.dmp -t test_1021 -d vastbase -p $PGPORT;

5、修改导出文件的权限。

chmod -R 777 /tmp/bak

6、使用系统管理员将表test_1021导入至目标数据库transtest下。

vb_ttrestore -U vbadmin -W 'Vbase@admin' -D /tmp/bak/ -f /tmp/bak/1021.dmp -t test_1021 -d transtest -p $PGPORT;

7、切换至数据库transtest下,查看导入结果。

\c transtest
select * from test_1021;

返回结果为:

id |  name 
----+--------
  1 |  aaa
  2 |  bbb
(2 rows)