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

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介:

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进行建表或者直接忽略报错也可以;

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
目录
相关文章
|
存储 SQL 索引
PolarDB-X 1.0-SQL 手册-Sequence-显式用法
本文主要介绍了Sequence的显式用法。
217 0
|
SQL 索引
PolarDB-X 1.0-SQL 手册-Sequence-隐式用法
本文介绍了Sequence的隐式用法。
147 0
|
缓存 算法 关系型数据库
阿里云DRDS 的sequence序列深入理解
DRDS的隐式sequence的一些测试,以及在DRDS迁移的过程中踩到的坑--
5168 0
|
6月前
|
关系型数据库 分布式数据库 数据库
【PolarDB开源】PolarDB-X源码解读:分布式事务处理机制揭秘
【5月更文挑战第20天】PolarDB-X,PolarDB家族的一员,专注于大规模分布式事务处理,采用2PC协议保证ACID特性。源码解析揭示其通过预提交、一致性快照隔离和乐观锁优化事务性能,以及利用事务日志进行故障恢复。深入理解其事务处理机制对开发者掌握分布式数据库核心技术至关重要。随着开源社区的发展,更多优化方案将涌现,助力构建更强大的分布式数据库系统。
221 6
|
4月前
|
关系型数据库 分布式数据库 PolarDB
PolarDB产品使用问题之如何基于Docker进行PolarDB-X单机模拟部署
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
PolarDB产品使用问题之如何基于Docker进行PolarDB-X单机模拟部署
|
4月前
|
Oracle 关系型数据库 分布式数据库
PolarDB产品使用问题之使用pxd安装PolarDB-X出现报错,该怎么办
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
Kubernetes 关系型数据库 分布式数据库
PolarDB产品使用问题之PolarDB-X的架构形态有什么区别
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
关系型数据库 分布式数据库 PolarDB
PolarDB产品使用问题之原PolarDB-X集群无法连接且Docker容器已经被删除,如何恢复数据
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
运维 关系型数据库 MySQL
PolarDB产品使用问题之PolarDB MySQL版和PolarDB-X的区别是什么
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用问题之将RDS切换到PolarDB-X 2.0时,代码层的SQL该如何改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。