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 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 12
chowjiawei

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

3年前 评论

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

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

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

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

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

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

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

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

没有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
3年前 评论
WindyLater (楼主) 3年前
renxiaotu (作者) 3年前
WindyLater (楼主) 3年前
renxiaotu (作者) 3年前

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