【 TiDB 使用环境】测试
【 TiDB 版本】
看文档执行flashback cluster之后会有两份空间占用,那么flashback cluster之后是否支持回滚呢
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
flashback cluster 失败
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
【 TiDB 使用环境】测试
【 TiDB 版本】
看文档执行flashback cluster之后会有两份空间占用,那么flashback cluster之后是否支持回滚呢
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
flashback cluster 失败
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
show variables like ‘%gc%’; 看下这个参数呢,是不是数据被gc了
gc十分钟。我是前后执行完所有sql都不超过2分钟。再说超gc也不是这个报错啊,应该是ERROR 8055 (HY000): snapshot is older than GC safe point 2024-09-04 10:18:32.057 +0800 CST
不加create database试试呢
不create database怎么用啊,也不能就使用系统库啊
你回滚到3点58?是不是时间写错了?
select now()出来的呀,utc时间
https://docs.pingcap.com/zh/tidb/stable/mysql-schema#集群状态系统表
tidb_server_version
用于记录 TiDB 在初始化时的版本信息,注意该值为只读,不可修改。
提示里面的 tidb_server_version
应该指的是这个mysql库下的系统表。
推测是没有读取这个表的权限造成的。
从这个方向查查看。
这表里有什么东西么
// Check if there is an upgrade during [flashbackTS, now)
sql := fmt.Sprintf(“select VARIABLE_VALUE from mysql.tidb as of timestamp ‘%s’ where VARIABLE_NAME=‘tidb_server_version’”, flashbackTSString)
rows, err := sess.NewSession(se).Execute(ctx, sql, “check_tidb_server_version”)
if err != nil || len(rows) == 0 {
return errors.Errorf(“Get historytidb_server_version
failed, can’t do flashback”)
}
翻了下,当执行下面这个sql报错,或者没有找到数据就会报这个错。
select VARIABLE_VALUE from mysql.tidb as of timestamp ‘%s’ where VARIABLE_NAME=‘tidb_server_version
把时间带进去查查看。
这属实难以理解了。
既然这样能查出来,思来想去,可能是执行上面这个sql的时候tidb server报错了,而这个错误可能从mysql的错误提示上是看不出来的。
可能要去tidb的日志里面找找看了。不然这块代码确实是这么写的。这是唯一的可能了。
看来就是执行这个sql的时候因为什么原因报错了导致的。
还有就是这个报错的堆栈好像不完整。有可能的话,提供一个完整日志,去github提交一个issue看看吧。
安装好,是有test库的,或者你create database 等一下,闪回到create database之后的时间,是想排除下,是不是create database影响的,这个好像是新功能。
闪回的就是创建db之后啊,图里面有顺序的