Lakehouse 表克隆与快速备份指南

概述

在数据仓库运维中,经常需要快速创建表的副本用于测试、备份或数据恢复。云器 Lakehouse 提供

CREATE TABLE ... CLONE
CREATE TABLE ... CLONE
语法,支持零拷贝克隆(Zero-Copy Clone),瞬间创建表副本而不复制实际数据。本指南按业务场景分类,帮助你快速掌握高效的表克隆方法。

涉及的 SQL 命令

命令用途适用场景
CREATE TABLE ... CLONE
CREATE TABLE ... CLONE
零拷贝克隆表快速备份、测试环境搭建
CREATE TABLE ... CLONE ... AT
CREATE TABLE ... CLONE ... AT
按时间点克隆恢复到历史状态
CREATE TABLE ... LIKE
CREATE TABLE ... LIKE
仅克隆表结构创建空表用于数据加载

前置准备

以下示例使用模拟的订单表

orders_clone
orders_clone

-- 创建源表 CREATE TABLE IF NOT EXISTS orders_clone ( order_id INT, customer_id INT, amount DOUBLE, order_date DATE ); -- 插入测试数据 INSERT INTO orders_clone VALUES (1, 101, 500, '2024-06-01'), (2, 102, 300, '2024-06-02'), (3, 103, 800, '2024-06-03');


完整表克隆

使用

CREATE TABLE ... CLONE
CREATE TABLE ... CLONE
瞬间创建表的副本。克隆表与源表共享底层数据文件,不占用额外存储空间(直到对克隆表进行写入操作)。

-- 克隆表 CREATE TABLE orders_clone_backup CLONE orders_clone;

结果验证

SELECT * FROM orders_clone_backup ORDER BY order_id;

order_idcustomer_idamountorder_date
11015002024-06-01
21023002024-06-02
31038002024-06-03

时间点克隆

使用

AT
AT
子句克隆表在指定时间点的状态,常用于恢复到某个历史版本。

-- 克隆 1 分钟前的表状态 CREATE TABLE orders_clone_history CLONE orders_clone TIMESTAMP AS OF (CURRENT_TIMESTAMP() - INTERVAL '1' MINUTE);

适用场景

  • 误操作后恢复到之前的状态
  • 审计历史数据
  • 对比数据变化

仅克隆表结构

使用

LIKE
LIKE
语法克隆表结构但不复制数据,适合创建空表用于后续数据加载。

-- 仅克隆表结构 CREATE TABLE orders_clone_empty LIKE orders_clone;

结果验证

SELECT COUNT(*) FROM orders_clone_empty;

COUNT(*)
0

克隆后验证

克隆完成后,建议验证克隆表与源表的一致性。

-- 对比行数 SELECT (SELECT COUNT(*) FROM orders_clone) as source_count, (SELECT COUNT(*) FROM orders_clone_backup) as clone_count;

结果说明

source_countclone_count
33

克隆与独立修改

克隆表创建后是独立的,对克隆表的修改不会影响源表。

-- 向克隆表插入新数据 INSERT INTO orders_clone_backup VALUES (4, 104, 600, '2024-06-04'); -- 对比源表和克隆表 SELECT 'source' as tbl, COUNT(*) as cnt FROM orders_clone UNION ALL SELECT 'clone' as tbl, COUNT(*) as cnt FROM orders_clone_backup;

结果说明

tblcnt
source3
clone4

清理测试数据

完成克隆验证后,建议清理测试表:

-- 删除测试表 DROP TABLE IF EXISTS orders_clone; DROP TABLE IF EXISTS orders_clone_backup; DROP TABLE IF EXISTS orders_clone_history; DROP TABLE IF EXISTS orders_clone_empty;


注意事项

  1. 零拷贝特性:克隆表与源表共享数据文件,不占用额外存储空间(直到写入新数据)。
  2. Time Travel 依赖:时间点克隆依赖 Time Travel 功能,需在保留周期内。
  3. 权限继承:克隆表不会自动继承源表的权限,需要单独配置。
  4. 动态表克隆:Dynamic Table 也可以克隆,但克隆后变为普通表,不再自动刷新。
  5. 物化视图克隆:物化视图克隆后同样变为普通表。

相关文档

联系我们
预约咨询
微信咨询
电话咨询