宝塔mysql恢复数据binlog提取sql,拯救int类型存手机号的问题

这天开发H5的时候脑子一抽,用int类型来存手机号,这样字段会小很多才对!想着想着就为自己的机智点赞!
sql1.png
然后眼瞎一直没发现手机号码不对,直到活动结束导出数据才发现手机号不对,一查int最大值是2147483647,只有10位数,手机号是没法存的。
sql2.jpg
然后就是想办法恢复数据了
接口是post存的数据,nginx日志没用,只有从Mysql Binlog恢复了,还好宝塔是默认开启binlog的。

1、找到mysql的二进制日志binlog目录
cd /www/server/data

2、根据你需要的数据日期确定binlog是哪几个文件,然后执行下面的命令转成sql文件
sql3.jpg
#database指定需要的数据库名,然后因为我的有多个文件,就输出日志的名字.sql

/www/server/mysql/bin/mysqlbinlog --database=h5case /www/server/data/mysql-bin.000456  > output000456.sql

我的只需要指定数据库名字就行了,也可以加上开始结束时间指定下日期更精准 --start-datetime="2022-12-09 00:00:00" --stop-datetime="2022-12-14 23:59:59" ,具体可谷歌搜下mysqlbinlog命令

看到有INSERT INTO写入记录就放心了

binlog2.jpg

3、本来是有命令直接输出sql并导入到数据库,但是我怕搞出问题,就把生成的sql文件下载到本地,在本地恢复数据库
生成的sql文件使用Navicat Preminum导入的时候会报错,这里我使用的是本地的phpstudy导入的

binlog1.jpg

遇到报错会返回第几行,然后定位到那里解决就好了。







暧昧贴

发表评论

    微笑 大笑 拽 大哭 奸笑 流汗 喷血 生气 囧 不爽 晕 示爱 卖萌 吃惊 迷离 爱你 吓死了 呵呵