INSERT 上的 MySQL Percona 集群 WSREP

问题描述

我有一个我不明白的 WSREP 错误问题。如果有人解释发生了什么以及如何解决,我会很高兴。

我的应用有一个用于创建帐户的端点。在端点中,有几个请求 DB 检查帐户是否已经存在,并在必要时创建一个新帐户。新的“帐户”有两部分 - 用户和身份。用户和相应身份的创建不在事务中发生,但两个数据库请求都应用于集群的同一个节点(但其他用户和身份的创建可能发生在其他节点上)。

出于某种原因,有时我会在创建身份(插入)时遇到 WSREP(检测到死锁/冲突)错误。我确信没有任何具有相同数据的冲突插入请求,因为之后我在数据库中没有身份。为什么会发生?会不会是一些索引/外键问题?

在这里完全不知所措。任何帮助表示赞赏!

配置: MysqLd Ver 5.7.23-23-57 for Linux on x86_64 (Percona XTradB Cluster (GPL),Release rel23,Revision f5578f0,WSREP version 31.31,wsrep_31.31)

表格(有点简化):

create table users
(
    id                         bigint auto_increment
        primary key,profile                    json                                 null,is_active                  tinyint(1) default 1                 null,is_email_confirmed         tinyint(1) default 0                 null,is_phone_confirmed         tinyint(1) default 0                 null,created_at                 datetime   default CURRENT_TIMESTAMP null,modified_at                datetime                             null,email                      varchar(200)                         null,);
create index ix_users_email
    on users (email);
create index ix_users_phone_number
    on users (phone_number);

create table identities
(
    id               bigint auto_increment
        primary key,user_id          bigint                                   null,provider_id      bigint                                   null,email            varchar(200)                             null,password         varchar(200)                             null,first_name       varchar(200)                             null,last_name        varchar(200)                             null,last_login       datetime(6)                              null,created_at       datetime(6) default CURRENT_TIMESTAMP(6) null,modified_at      datetime(6) default CURRENT_TIMESTAMP(6) null,is_deleted       tinyint(1)  default 0                    null,constraint identities_ibfk_1
        foreign key (user_id) references users (id),);
create index provider_id
    on identities (provider_id);
create index user_id
    on identities (user_id);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)