看看报错信息,缺点是“(-1, 'error totally whack')”

这个缺点让我没有任何思路,网上有一些谈论说是访问数据库出错了。

但是我查看运维系统后台的日志,API访问依旧正常,再试了一个备用账号,创造也能够正常上岸,我就疑惑是不是就我们两个上岸不明晰,看看上岸记录的信息,其他人都是正常的。
我就纳闷了,看来这个问题的缘故原由很扑朔迷离啊。

renamephp失败原因运维体系无法上岸的问题排查 HTML

我的第一个思路是想Django的项目里面会自动掩护一个django_session我的印象中这个表有百万条记录了,会不会是由于检讨的时候回调写入这个表的时候有问题导致的。

这个文件有1.6G旁边,算是比较大的了。

-rw-r----- 1 mysql mysql 8664 Feb 22 13:25 django_session.frm

-rw-r----- 1 mysql mysql 1690304512 Mar 19 09:40 django_session.ibd

清理会话信息Django供应了一个方法clearsessions

python manage.py clearsessions

(0.000) SET SQL_AUTO_IS_NULL = 0; args=None

(0.000) SET SQL_AUTO_IS_NULL = 0; args=None

(430.746) DELETE FROM `django_session` WHERE `django_session`.`expire_date` < '2019-03-19 09:46:23.752256'; args=(u'2019-03-19 09:46:23.752256',)

这个过程持续了6分钟,从后真个日志来看前端业务没有任何影响。

当然delete是不彻底的,表还是1.6G旁边,这个时候我们利用一点小技巧来转移一下数据,这个过程持续韶光较短,大概有几秒钟。

整体的思路便是移形换位。

create table devopsdb_arch.django_session like devopsdb.django_session;

insert into devopsdb_arch.django_session select from devopsdb.django_session where ;

alter table devopsdb.django_session rename to devopsdb_arch.django_session_bak;

alter table devopsdb_arch.django_session rename to devopsdb.django_session;

清理完之后,空间立马紧缩到了几十兆,但是登录的时候依然报错,以是这个时候我开始重新核阅这个问题,问题不在django_session表上面。

看后真个日志调用,是在检讨用户名密码之后,会写入django_session数据之后回调写入auth_user表,把last_login字段修正为当前韶光。

但是根据报错在这个阶段失落败了,以是我就考试测验手工修正一下这个部分,结果创造了问题:

update auth_user set last_login='2019-03-19 09:15:38' where username='root';

ERROR 3101 (HY000): Plugin instructed the server to rollback the current transaction.

看到这个问题,我已经基本打消了运用层面的问题,很可能是数据库导致的了。
这个数据库是一套MGR多主的环境,和其余一套环境是跨机房的多活架构。

对付这个问题的修复,排查了sys schema下面和锁干系的数据字典,没有得到任何信息。

带着试试看的态度,由于节点2目前没有业务写入,对节点二的环境重启了Group replication,重启后,考试测验update竟然成功了。

>>update auth_user set last_login='2019-03-19 09:15:38' where id=1;

Query OK, 1 row affected (0.00 sec)

Rows matched: 1 Changed: 1 Warnings: 0

但是我重新登录页面的时候还是报错了。

重新进行验证创造还是同样的问题,我疑惑是django_session写入的事务失落败导致,以是再一次清理了会话表,这一次很快就完成了,但是登录依旧失落败。

以是这个时候耐下心来看看GTID的配置和日志的信息,创造有一个事务的日志没有运用过去。

这个问题的一种补救办法便是关闭流控flowcontrol,然后重启Group replication,我先停滞了节点2的GR,然后停滞节点1的GR,然后启动,接着启动节点2的GR.

再次测试就正常了。

这个问题虽然办理了,但是由于限于环境和规复业务的须要,没有做更多的剖析。
从表现来看和其余一个bug有些类似。

https://bugs.mysql.com/bug.php?id=84901

对付多主环境的问题还须要持续关注,从目前来看还算是比较稳定的。