生产系统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的显式用法。
243 0
|
SQL 索引
PolarDB-X 1.0-SQL 手册-Sequence-隐式用法
本文介绍了Sequence的隐式用法。
166 0
|
缓存 算法 关系型数据库
阿里云DRDS 的sequence序列深入理解
DRDS的隐式sequence的一些测试,以及在DRDS迁移的过程中踩到的坑--
5284 0
|
8月前
|
C# UED 定位技术
WPF控件大全:初学者必读,掌握控件使用技巧,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,控件是实现用户界面交互的关键元素。WPF提供了丰富的控件库,包括基础控件(如`Button`、`TextBox`)、布局控件(如`StackPanel`、`Grid`)、数据绑定控件(如`ListBox`、`DataGrid`)等。本文将介绍这些控件的基本分类及使用技巧,并通过示例代码展示如何在项目中应用。合理选择控件并利用布局控件和数据绑定功能,可以提升用户体验和程序性能。
281 0
|
8月前
|
存储 缓存 负载均衡
【PolarDB-X 技术揭秘】Lizard B+tree:揭秘分布式数据库索引优化的终极奥秘!
【8月更文挑战第25天】PolarDB-X是阿里云的一款分布式数据库产品,其核心组件Lizard B+tree针对分布式环境优化,解决了传统B+tree面临的数据分片与跨节点查询等问题。Lizard B+tree通过一致性哈希实现数据分片,确保分布式一致性;智能分区实现了负载均衡;高效的搜索算法与缓存机制降低了查询延迟;副本机制确保了系统的高可用性。此外,PolarDB-X通过自适应分支因子、缓存优化、异步写入、数据压缩和智能分片等策略进一步提升了Lizard B+tree的性能,使其能够在分布式环境下提供高性能的索引服务。这些优化不仅提高了查询速度,还确保了系统的稳定性和可靠性。
168 5
|
8月前
|
存储 SQL 运维
“震撼发布!PolarDB-X:云原生分布式数据库巨擘,超高并发、海量存储、复杂查询,一网打尽!错过等哭!”
【8月更文挑战第7天】PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
172 1
|
9月前
|
存储 关系型数据库 MySQL
深度评测:PolarDB-X 开源分布式数据库的优势与实践
本文对阿里云开源分布式数据库 PolarDB-X 进行了详细评测。PolarDB-X 以其高性能、强可用性和出色的扩展能力在云原生数据库市场中脱颖而出。文章首先介绍了 PolarDB-X 的核心产品优势,包括金融级高可靠性、海量数据处理能力和高效的混合负载处理能力。随后,分析了其分布式架构设计,包括计算节点、存储节点、元数据服务和日志节点的功能分工。评测还涵盖了在 Windows 平台通过 WSL 环境部署 PolarDB-X 的过程,强调了环境准备和工具安装的关键步骤。使用体验方面,PolarDB-X 在处理分布式事务和实时分析时表现稳定,但在网络问题和性能瓶颈上仍需优化。最后,提出了改进建
7234 2
|
9月前
|
缓存 运维 关系型数据库
数据库容灾 | MySQL MGR与阿里云PolarDB-X Paxos的深度对比
经过深入的技术剖析与性能对比,PolarDB-X DN凭借其自研的X-Paxos协议和一系列优化设计,在性能、正确性、可用性及资源开销等方面展现出对MySQL MGR的多项优势,但MGR在MySQL生态体系内也占据重要地位,但需要考虑备库宕机抖动、跨机房容灾性能波动、稳定性等各种情况,因此如果想用好MGR,必须配备专业的技术和运维团队的支持。 在面对大规模、高并发、高可用性需求时,PolarDB-X存储引擎以其独特的技术优势和优异的性能表现,相比于MGR在开箱即用的场景下,PolarDB-X基于DN的集中式(标准版)在功能和性能都做到了很好的平衡,成为了极具竞争力的数据库解决方案。
|
10月前
|
关系型数据库 MySQL 数据库
上手体验 PolarDB-X 数据库
PolarDB-X,一款高性能云原生分布式数据库。
287 2
|
10月前
|
DataWorks API 调度
DataWorks产品使用合集之在调度配置配置了节点的上游节点输出,没办法自动生成这个flow的依赖,该怎么操作
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。