当我用dumpling导出数据时,虽然能导出成功,但是tidb有报错信息
其中dumpling版本如下:
Release version: v7.0.0
Git commit hash: 7376954cd868dbc44fc3015c9ef89c53749339a7
Git branch: heads/refs/tags/v7.0.0
Build timestamp: 2023-03-29 01:22:42Z
Go version: go version go1.20.2 linux/amd64
报错信息如下:
tidb_192.168.10.148_4000.log (4.5 KB)
SELECT _tidb_rowid from sorting_center
.applet_user
LIMIT 1
能查出数据吗?
这个表是聚簇表吗?
Gin
(Gin)
3
报错中找不到的列 _tidb_rowid 是非索引组织表的隐藏列,用作自动分片使用,也就是KV的key值。
可以核对下sorting_center.applet_user这张表备份出来的数据行数与库中记录数是不是一致,确保备份数据没有丢失。
一般来说备份工具不需要备份隐藏列的值,这里可能是产品bug。
不能查出:
该表定义如下:
CREATE TABLE applet_user
(
id
bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘主键ID’,
openid
varchar(255) DEFAULT NULL COMMENT ‘用户唯一标识’,
user_id
bigint(20) DEFAULT NULL COMMENT ‘用户表ID’,
nick_name
varchar(255) DEFAULT NULL COMMENT ‘昵称’,
gender
tinyint(4) DEFAULT NULL COMMENT ‘性别(0-未知 1-男 2-女)’,
lang
varchar(255) DEFAULT NULL COMMENT ‘语言’,
city
varchar(255) DEFAULT NULL COMMENT ‘城市’,
province
varchar(255) DEFAULT NULL COMMENT ‘省份’,
country
varchar(255) DEFAULT NULL COMMENT ‘国家’,
avatar_url
varchar(255) DEFAULT NULL COMMENT ‘头像地址’,
phone
varchar(255) DEFAULT NULL COMMENT ‘手机号’,
login_type
tinyint(4) DEFAULT NULL COMMENT ‘登录类型(1-竞价小程序)’,
creator
varchar(255) DEFAULT NULL COMMENT ‘创建人’,
create_time
datetime DEFAULT CURRENT_TIMESTAMP,
modify_time
datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted
tinyint(4) NOT NULL DEFAULT ‘0’ COMMENT ‘是否删除(0-正常 1-删除)’,
site_id
bigint(20) DEFAULT NULL COMMENT ‘分拣中心ID’,
PRIMARY KEY (id
) /*T![clustered_index] CLUSTERED */,
KEY idx_create_time
(create_time
),
KEY idx_modify_time
(modify_time
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=90001 COMMENT=‘小程序用户表’
数据导出没问题,备份数据是ok的。
现在是因为tidb有监控,这个报错到导致一直报警,挺烦的,把正常的错误都掩盖了。
从表结构来看,这个表确实是聚簇表,由于内部机制,聚簇表是没有_tidb_rowid这个隐藏字段的,所以查询的时候就会有错误。我记得非聚簇表是用_tidb_rowid字段来分批导出的,可能dumpling并没有针对聚簇表做对应的优化吧
这个表就是聚簇表啊,主键就是它的key,它是不应该自动生成 _tidb_rowid列的,看来真是dumpling工具的问题,dumpling工具也是7.0的版本吗?
感觉主要版本的前几个小版本都不应该上生产,MySQL的时候都是 x.10以后才上生产
hello,有没有官方人员回复下,能否解决下这个问题。github提了issue,也还没人回复
不是的,tidb是6.5.1,dumpling是7.0.0.那我换成版本一致的试试?
我目前用的是7.0.0,github上的最新版本是5.1.5.这。。。
v6.5.1 的dumping 在下载的tools 包里面
可以直接下载安装包:wget https://download.pingcap.org/tidb-community-toolkit-v6.5.1 linux-amd64.tar.gz
目前tidb 与 dumpling版本已经都是6.5.1,但是还是会报错
yilong
(yi888long)
17
请问导出命令是什么?我测试可以正常导出。
CREATE TABLE applet_user (
id bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘主键ID’,
openid varchar(255) DEFAULT NULL COMMENT ‘用户唯一标识’,
user_id bigint(20) DEFAULT NULL COMMENT ‘用户表ID’,
nick_name varchar(255) DEFAULT NULL COMMENT ‘昵称’,
gender tinyint(4) DEFAULT NULL COMMENT ‘性别(0-未知 1-男 2-女)’,
lang varchar(255) DEFAULT NULL COMMENT ‘语言’,
city varchar(255) DEFAULT NULL COMMENT ‘城市’,
province varchar(255) DEFAULT NULL COMMENT ‘省份’,
country varchar(255) DEFAULT NULL COMMENT ‘国家’,
avatar_url varchar(255) DEFAULT NULL COMMENT ‘头像地址’,
phone varchar(255) DEFAULT NULL COMMENT ‘手机号’,
login_type tinyint(4) DEFAULT NULL COMMENT ‘登录类型(1-竞价小程序)’,
creator varchar(255) DEFAULT NULL COMMENT ‘创建人’,
create_time datetime DEFAULT CURRENT_TIMESTAMP,
modify_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted tinyint(4) NOT NULL DEFAULT ‘0’ COMMENT ‘是否删除(0-正常 1-删除)’,
site_id bigint(20) DEFAULT NULL COMMENT ‘分拣中心ID’,
PRIMARY KEY (id) /*T![clustered_index] CLUSTERED */,
KEY idx_create_time (create_time),
KEY idx_modify_time (modify_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=90001 COMMENT=‘小程序用户表’
insert into applet_user values(1,‘a’,123,‘sdf’,0,‘sdfasdfasdf’,‘abc’,‘asd’,‘asdf’,‘dsfasdf’,‘123213’,1,‘dfasdf’,now(),now(),1,3242);
tiup dumpling:v6.5.1 -u root -P 4913 -h 10.x.x.3 --filetype sql -t 8 -o /home/tidb/dumpling/ -r 200000 -F256MiB