完善show create table\G查询的建表语句

问题反馈
清晰准确地描述您发现的问题,提供任何可能复现问题的步骤有助于研发同学及时处理问题

  1. 有tiflash副本的表,show create table\G 时,不显示tiflash副本信息
  2. 如果怕兼容mysql有问题,可以以 /* tiflash replica 2 */ 的方式记录

【期望看到的行为】
有tiflash副本的表,show create table\G 时,希望能显示tiflash相关信息。
比如:

CREATE TABLE `xxxx` (
  `id` bigint(20) NOT NULL /*T![auto_rand] AUTO_RANDOM(5) */,
  `xxx` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin 
tiflash replica 2

【其他背景信息或者截图】
产生这个需求的原因
开发误删除一张表,由于没人知道有tiflash副本,导致没有创建相应的副本,之后应用报错。

1 个赞

没有 tiflash 为什么会报错,强制 engine 使用 tiflash 了?

对的…

这种情况目前确实没办法避免, 现在还没办法和 Placement Rule 一样对某个库设置 TiFlash 副本后,新增表也能自动加一个 TiFlash 副本。

不知道啥时候能排上期

线上开发能删除数据🐮

生产环境,开发理论不能登录,不过也希望这个功能可以排上期

好奇一点,如果在 show create table 中能显示 tiflash replica 的个数,在有用户误删除表的场景下,能怎么利用这个信息呢?

  1. 在有逻辑备份的表里,可以直接恢复
  2. 如果在删的测试环境或者开发环境,可以从生产环境中备份出来去恢复,这样就不会出现我碰到的状况,丢掉创建tiflash副本的情况。

我觉得既然这个表创建了tiflash副本,还是通过 alter table 的方式创建的,那么在建表语句中能体现这部分应该也是正常的。 再不济,可以以注释的方式单独的生成一条语句体现出来,而不是我看建表语句,就不知道他有tiflash副本。

给这个功能建了个 issue,后面可以关注这个 issue 的进展:Support create a table with a given tiflash replica number · Issue #55849 · pingcap/tidb · GitHub

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