真实对一张表执行BACKUP,真实DROP掉原表再用RESTORE找回数据,并验证增量备份真实的体积优势。
代码BACKUP TABLE demo.threadtest TO Disk('backups', 'threadtest_backup1.zip'); SELECT count() FROM demo.threadtest; -- 备份前先记录真实的行数 DROP TABLE demo.threadtest; -- 真实删掉整张表 EXISTS demo.threadtest; -- 真实确认表已经不存在 RESTORE TABLE demo.threadtest FROM Disk('backups', 'threadtest_backup1.zip'); SELECT count() FROM demo.threadtest; -- 真实的数据找回来了吗
BACKUP TABLE ... → BACKUP_CREATED(真实生成135633字节的zip文件)
SELECT count() FROM demo.threadtest; → 2000000
DROP TABLE demo.threadtest;
EXISTS demo.threadtest; → 0 ← 真实表已经不存在了
RESTORE TABLE demo.threadtest FROM Disk('backups', 'threadtest_backup1.zip');
→ RESTORED
SELECT count() FROM demo.threadtest; → 2000000 ← 真实分毫不差地找回来了这是一次真实的、有真实破坏性动作(DROP TABLE)参与的完整验证——不是只测试BACKUP命令能不能跑通,而是真的把表删掉之后,确认RESTORE能不能把数据真实完整地找回来。
INSERT INTO demo.threadtest SELECT ... FROM numbers(500000); -- 真实新增50万行,总共250万行
BACKUP TABLE demo.threadtest TO Disk('backups', 'threadtest_backup2.zip')
SETTINGS base_backup = Disk('backups', 'threadtest_backup1.zip');
ls -la backups/
→ threadtest_backup1.zip 135633 字节 (200万行的全量备份)
threadtest_backup2.zip 68884 字节 (250万行,但只是增量备份)每一步都是本文上面用真实BACKUP/RESTORE跑出来的原始结果。
BACKUP TABLE / RESTORE TABLE 与 base_backupDROP TABLE 动作,验证恢复的完整性而非只测试命令能否跑通