开发者社区> silencecxq> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

生产系统DRDS建表报sequence已经存在问题

简介:
+关注继续查看

1、 问题描述

客户反馈生产环境系统drds创建表报错sequence已经存在,具体报错如下:

1
但是虽然执行create已经报错,但是表已经有了,并且可以正常的插入数据;

2、 问题排查

排查drds的docker节点tddl log日志发现如下的相关sequence的报错
2
3
报错主要显示还是因为sequence已经存在导致的;
但是经过check table 报错的表状态是ok的,证明表实际上不存在什么问题,可以正常使用;
经过排查后台tddl log日志,由于数据格式的问题插入数据频繁报错,发现端倪,经过咨询客户以及观察sql log日志 ,生产数据录入报错的表数据的频繁插入的;
后台有程序在不断的向amc_match_log 这张表插数据

同客户沟通的结果分析如下:
如果有程序写数据库频率很高 出现这样的报错 就可以解释的通了;
创建表之后,创建序列之前的空档,程序向表中插入数据,drds发现auto_increment字段存在,所以会自动创建序列,此时ddl的创建序列再去创建 就会出错(序列已经存在);
如果是这种场景 在建表的时候指定 if not exist就可以了

然后在测试环境使用如下的命令来模拟频繁插入数据的场景;

for i in {1..1000000};do mysql –h192.168.1.1 –uroot –ppasswd –e”insert into test(name) values(rand());”; done

测试表是test,表结构如下:

create table test(id varchar(100) not null auto_increment,name varchar(100),primary key(id)) engine=InnoDB dbpartition by hash(id) tbpartition by hash(id) tbpartitions 3;

开启两个窗口测试如下:
5
频繁的执行create和drop表的测试操作,来回执行几次就可以复现生产的报错问题;
然后根据研发提供的添加if not exists的create操作进行建表测试,不会复现报错问题;
create TABLE IF NOT EXISTS amc_match_log
6
原因:因为 if not exist会检查sequence是否存在 如果存在 不会再去创建了;

3、问题解决

使用create table if not exists tablename进行建表或者直接忽略报错也可以;

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云DRDS备份策略方案
1. DRDS备份策略初衷 基于很多客户从云下迁移到上云(公共云or专有云)后,DRDS以及后端RDS都已经标准化成产品,默认会存在备份策略保障数据的安全,因此需要进行备份策略的整理,结合当前业务数据的实际情况,在保障数据安全的情况下,尽量节省支出来考虑备份策略; 2.
692 0
阿里云DRDS 的sequence序列深入理解
DRDS的隐式sequence的一些测试,以及在DRDS迁移的过程中踩到的坑--
1318 0
分布式关系型数据库服务 DRDS 支持并行DDL、SHOW STATUS 支持事务统计等多项能力发布
信息摘要: 分布式关系型数据库服务 DRDS 支持并行DDL、SHOW STATUS 支持事务统计等多项能力发布适用客户: 数据库使用者 / 分布式数据库使用者 / 开发者 / 互联网企业 / 金融保险行业 / 新零售行业 版本/规格功能: 新功能 1、支持并行DDL 2、重构的系统变量支持,如:SELECT @session.
1258 0
PostgreSQL sharding : citus 系列4 - DDL 操作规范 (新增DB,TABLE,SCHEMA,UDF,OP,用户等)
标签 PostgreSQL , citus , 新增对象 , 新增数据库 , 新增用户 背景 citus是PG的一个插件,插件主要针对普通SQL(非UTILITY)加HOOK进行了一些ROUTE处理,同时使用UDF对表进行新建分区的操作。
924 0
分布式关系型数据库服务 DRDS 支持跨 Schema 联机查询及 DML 事务写入等多项能力发布
信息摘要: 分布式关系型数据库服务 DRDS 支持跨 Schema 联机查询及 DML 事务写入等多项能力发布适用客户: 数据库使用者 / 分布式数据库使用者 / 开发者 / 互联网企业 / 金融保险行业 / 新零售行业版本/规格功能: 一、新功能 1.
538 0
分布式关系型数据库DRDS支持显示的Prepare和Execute语法及逻辑库锁功能等多项能力
信息摘要: DRDS支持显示的Prepare和Execute语法及逻辑库锁功能等多项能力适用客户: 数据库使用者 / 分布式数据库使用者 / 开发者 / 互联网企业 / 金融保险行业 / 新零售行业版本/规格功能: 新功能 1.
712 0
MaxComputer-Pyodps之mysql ddl 批量生成odps ddl
批量将mysql 的DDL语句转化为odps ddl,潦草之作,可用即可。。。
1927 0
DRDS向ADS数据迁移指南
1 CDP简介 数据同步节点任务是阿里云大数据平台对外提供的稳定高效、弹性伸缩的数据同步云服务。用户利用数据同步节点可以轻松地实现DRDS到ADS的数据同步。使用CDP将DRDS数据同步至ADS前需要在目标端创建相应的表结构,同步数据的具体操作如下: 2 配置数据源 2.1 增加DRDS数据源 1.登录Base管控台,单击顶部菜单栏中的项目管理,并选择相应的项目。
4996 0
DRDS异构索引测试
一、   概述 对于DRDS的数据库的分表查询时SQL中的where条件尽量会带上分库分表键这样DRDS会将这个查询路由到具体的分库中以提高查询效率。如果SQL的where条件中没有分库分表键DRDS会进行一次全表扫描。
6674 0
+关注
silencecxq
一路行走的云上小小牧师
文章
问答
文章排行榜
最热
最新
相关电子书
更多
分布式数据库DRDS全新升级
立即下载
Facebook Online Schema Change原理和大规模表结构变更最佳实践
立即下载
PolarDB PG核心特性介绍
立即下载