通过rename修改库名会不会丢失数据

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】tidb v6.1.0
【复现路径】做过哪些操作出现的问题
【遇到的问题:通过 rename table test.t1 to test1.t1会不会丢失数据的
【资源配置】
【附件:截图/日志/监控】

线上:4.0.16
场景:由于存在 TiCDC 同步数据变更,且数据来自于其他数据库的同步,在主键变更的一些场景,经常会同步一张新表,停掉 TiCDC,通过 rename 来做新旧表的替换,后再开启 TiCDC,目前未发现数据丢失。

个人理解:TiDB 使用 TiKV 作为存储,实际数据和表名关系不大,实际的记录数据是与表 id 相关联的。表名和表 id 这些信息都是在单独的元信息的 key-value 结构,rename 只是更改了元信息,表 id 不会发生变更,类似下面重命名索引的原理。


可以看一下官方的 TiDB 各个组件的原理,相信会对 TiDB 有更深入的了解。
https://learn.pingcap.com/learner/course/600003

1 个赞

我觉得不会丢失数据,底层逻辑应该是table id去关联的

这个我有过测试,但是数据量比较少,rename 之后数据没有发生变化,不知道是否有参考意义

rename过程会加锁吧,应该不会丢失数据

这个只是一个数据字典的更新,数据库的基础能力,肯定不能丢数据

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。