mysql数据复原_mysql数据库还原,三步帮你找回误操作数据

标签: msyql

宝塔默认开启了mysql bin log日志,通过mysqlbinlog 命令可以恢复任意时间点的数据。

以下步骤首先需要自己确认开启了binlog日志,或者通过宝塔安装的mysql数据库默认开启,否则无法适用以下方法。

提示 :先备份好所有数据库,再开始恢复操作,避免悲剧再次发生。

一、找end position

先找到误操作的点,通过大概时间查找出误操作的日志, 比如我这里记得大概是昨天11点到12点误操作的

./mysqlbinlog --start-datetime="2021-01-18 11:30:00" --stop-datetime="2021-01-18 12:30:00" /www/server/data/mysql-bin.000002 > end.log

打开end.log

#210118 12:02:21 server id 1 end_log_pos 240949453 CRC32 0xbda09d2a Query thread_id=101814 exec_time=4 error_code=0

use `alo_core`/*!*/;

SET TIMESTAMP=1610942541/*!*/;

SET @@session.time_zone='SYSTEM'/*!*/;

ALTER TABLE `alo_core`.`ks_zalo_user`

MODIFY COLUMN `login_info` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL AFTER `zpw_enk`,

MODIFY COLUMN `cookie` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL AFTER `login_info

找到误操作之前一个的end position 240949453

二、找start position

找到要恢复的数据起始的时间,比如想恢复1-4号以后的

./mysqlbinlog --start-datetime="2021-01-04 10:30:00" --stop-datetime="2021-01-04 11:30:00" /www/server/data/mysql-bin.000002 > start.log

#210104 10:12:01 server id 1 end_log_pos 75396045 CRC32 0x4d04d34c Query thread_id=57365 exec_time=0 error_code=0

找到第一个的end_log_pos即为开始的postion

三、恢复指定数据库从start position - end position所有的数据。-d 指定数据库

(*注意:如果数据有冲突,需要自己先把表清空或者把重复的数据先删除掉,再做恢复。)

./mysqlbinlog --start-position=75396045 --stop-position=240949453 -d alo_core /www/server/data/mysql-bin.000002|mysql -uroot -p密码 alo_core

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值