mysql数据丢失的问题

1). 当前使用的 php/php-fpm 版本?

PHP 版本:7.4

2). 当前系统

CentOS7.5

3). 相关软件版本

mysql 5.6

2. 问题描述?

数据库莫名丢失了今天早晨10点-10点30分的数据

mysql数据丢失的问题

主键不连续了,丢失了300条数据,好几张表都是如此

在一次修改用户信息后,查询结果是正确的。
后续再进行查询时发现数据不对,相关业务的表数据全部都丢失了

查看框架日志发现有对应的update sql(第一次修改数据的sql)

查看binlog日志没有找到第一次修改数据的sql,也没有删除数据的sql。

有点迷茫。

如果是事务回滚了,那么不应该在第一次修改后能查出数据

如果没回滚,binlog日志又没有对应的delete语句

请大神指点一下问题可能出在哪里

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 12
chowjiawei

我昨天偷偷删的 :joy: :see_no_evil:

2年前 评论

1.首先要排除被黑的可能:
数据库是否关闭了远程连接。没有的话最好关闭

查看数据库错误日志,看是否有可疑ip登录记录
数据库密码是否太简单

源码下载下来用扫毒软件扫一遍,看是否有木马

因为之前遇到过数据库被黑,原因应该是数据库密码太简单被暴力破解,错误日志里面很多外国ip的登录记录,然后表被删除了,但是具体操作binlog是有记录的,后面通过binlog恢复的数据

2.需要确定是否是事务回滚,如果不是回滚导致的,就像你说的,刚开始数据是有的,那binlog里面应该有insert的语句,如果没有insert语句,说明数据就没有插入

2年前 评论
WindyLater (楼主) 2年前
win27149 (作者) 2年前
WindyLater (楼主) 2年前

你没有rollback,那有没有commit呢, 还是 show 下 code 吧

2年前 评论
WindyLater (楼主) 2年前

没有commit在事务里也是可以查的,而且回滚了主键也会不连续的,测试代码:

       DB::table('tb_test')->insert([
            'name'=>'start_insert'
        ]);

        DB::beginTransaction();

        echo "max_id:",DB::table('tb_test')->orderByDesc('id')->value('id'),"\n";


        DB::table('tb_test')->insert([
            'name'=>'transaction_insert'
        ]);

        echo "transaction_select:",json_encode(DB::table('tb_test')->orderByDesc('id')->first(),JSON_UNESCAPED_UNICODE),"\n";

        DB::rollBack();

        DB::table('tb_test')->insert([
            'name'=>'over_insert'
        ]);

        echo "max_id:",DB::table('tb_test')->orderByDesc('id')->value('id'),"\n";

echo:

max_id:18
transaction_select:{"id":19,"name":"transaction_insert","info":""}
max_id:20
2年前 评论
WindyLater (楼主) 2年前
renxiaotu (作者) 2年前
WindyLater (楼主) 2年前
renxiaotu (作者) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!