GBase 8a
其他
文章
精选

备份整个VC或特定数据库时,为什么必须提供table.list文件?这个文件的内容格式是什么?

发表于2026-03-25 10:37:5117次浏览8个评论

需要首先澄清一个关键点:备份整个VC(虚拟集群)或特定数据库时,通常不需要提供 table.list 文件。table.list 文件是专门用于“批量表级备份”场景的。

下面我将详细解释 table.list 文件的用途、格式,并澄清不同备份级别的命令差异。

一、何时需要 table.list 文件?

table.list 文件仅在执行 backup tables 命令进行批量表级备份时是必需的。对于其他级别的备份,命令格式不同,无需此文件。

备份级别

命令格式(gcrcman工具内)

 

是否需要 table.list文档依据

集群级备份

 

backup level <0|1>不需要

支持集群级、库级、表级的全量备份和增量备份

 

数据库级备份backup database [vcname.]<dbname> level <0|1>不需要同上
单表备份backup table [vcname.]<dbname.tabname> level <0|1>不需要同上
批量表备份backup tables <file_path> level <0|1>必须提供

创建/opt/gbase/table.list文件...1全量备份: backup tables /opt/gbase/table.list level 0

 

结论:如果您要备份整个VC,应使用集群级备份命令;要备份某个数据库的所有表,应使用数据库级备份命令。只有当您需要选择性地备份一批来自不同数据库甚至不同VC的表时,才需要使用 backup tables 命令并准备 table.list 文件。

二、为什么批量表备份必须提供 table.list 文件?

这是由 gcrcman 备份工具的设计和批量操作的特性决定的:

  1. 明确备份范围:与备份整个库或集群不同,批量表备份没有天然的边界(如数据库名)。table.list 文件明确指定了本次备份任务包含的所有表,避免了歧义和误操作。
  2. 支持跨库、跨VC操作table.list 中的表名可以来自不同的数据库和不同的虚拟集群(VC)。这是 backup database 命令无法实现的灵活功能。
  3. 便于脚本化与自动化:将需要备份的表列表维护在一个文件中,便于版本管理、修改和重复执行,适合运维自动化。
  4. 保证原子性与一致性:一次 backup tables 命令会作为一个完整的备份任务执行,table.list 定义了该任务的完整数据集,有助于保障备份数据的时间点一致性。

三、table.list 文件的内容格式

格式非常严格,必须遵循以下规范:

  • 每行一个表:文件中的每一行指定一个需要备份的完整表名。
  • 完整表名格式[vcname.]dbname.tabname
    • vcname:表所属的虚拟集群名。如果表在默认VC或当前操作的VC中,此项可以省略。
    • dbname:表所属的数据库名
    • tabname:具体的表名
    • 各部分之间用英文句点 . 分隔。
  • 示例内容

     

    # 这是 table.list 文件的内容示例
    vc000001.test.t1
    vc000001.test.t2
    vc000001.test.t3
    sales.customer_order  # 假设在默认VC中,省略了vcname
    hr.employee_salary
    

     

四、完整操作示例

假设您需要备份 vc1test 库的 t1, t2, t3 这三张表,操作步骤如下:

  1. 创建 table.list 文件

     

    [gbase@manager-node ~]$ vi /opt/gbase/backup/table.list
    # 输入以下内容
    vc1.test.t1
    vc1.test.t2
    vc1.test.t3
    
  2. 进入备份工具并执行批量备份

     

    [gbase@manager-node ~]$ gcrcman.py -d /opt/gbase/backup -P gbase -p your_password
    gcrcman> backup tables /opt/gbase/backup/table.list level 0
    
    • -d:指定各节点统一的备份目录。
    • backup tables ... level 0:执行全量备份。

五、重要注意事项

  1. 文件路径table.list 文件需要存放在运行 gcrcman 命令的管理节点上,且该路径对执行用户(如 gbase)可读。

     

  2. 表名验证:如果列表中的表不存在或表名格式错误,备份任务会报错。
  3. 与恢复对应:使用此文件备份后,恢复时也需要使用对应的备份集,不能直接用此文件进行恢复。恢复命令是 recover tables ...
  4. 生成列表:您可以通过查询系统表 information_schema.tables 来生成这个列表,例如:

     

    -- 将查询结果导出到文件
    SELECT CONCAT(table_vc, '.', table_schema, '.', table_name)
    FROM information_schema.tables
    WHERE table_schema IN ('test', 'sales')
    INTO OUTFILE '/tmp/table.list'
    FIELDS TERMINATED BY '' LINES TERMINATED BY '\n';
    

总结table.list 文件是GBase 8a中执行灵活、跨库的批量表备份输入清单。它的核心价值在于提供了备份对象的精确控制。对于常规的整库或整集群备份,请使用更简单的 backup databasebackup level 命令。理解这一点,能帮助您根据实际场景选择最高效的备份策略。

评论

登录后才可以发表评论
用户头像
山佳发表于 1个月前
1111
用户头像
柒柒天晴发表于 1个月前
秀啊
用户头像
GBase用户28017发表于 1个月前
2
用户头像
GBase用户28017发表于 1个月前
3
用户头像
GBase用户28017发表于 1个月前
4
用户头像
GBase用户28017发表于 1个月前
5
GBase用户21143发表于 1个月前
好像重复发了。
流泪猫猫头发表于 21小时前
学习了。