
如果没有开启 binlog,也没有预先生成回滚 SQL,那可能真的无法快速回滚了。
对存放重要业务数据的 MySQL,强烈建议开启 binlog。
第二步:进入 binlog 文件目录,找出日志文件找出日志文件第三步:切换到 mysqlbinlog 目录(当线上数据出现错误的时候首先可以询问具体 *** 作人记录时间点,这个时候可以借助 mysql 自带的 binlog 解析工具 mysqlbinlog,具体位置在 mysql 安装目录 **/mysql/bin/ 下)mysqlbinlog目录第四步:通过mysqlbinlog工具命令查看数据库增删改查记录(必须切换到mysqlbinlog目录才有效)mysqlbinlog --no-defaults --database=youxi --start-datetime="2018-11-12 09:00:00" --stop-datetime="2018-11-13 20:00:00" /data/mysql/mysql-bin.000015 > template_coupon_tb_product_category.txt例子1:查询2018-11-12 09:00:00到2018-11-13 20:00:00 数据库为 youxi 的 *** 作日志,输入如下命令将数据写入到一个备用的txt文件中例子2:查询2018-11-12 09:00:00到2018-11-13 20:00:00 数据库为 youxi 的 *** 作日志,并输出到屏幕上mysqlbinlog --no-defaults --database=youxi --start-datetime="2018-11-12 09:00:00" --stop-datetime="2018-11-13 20:00:00" /data/mysql/mysql-bin.000015 |more例子3:查询2018-11-12 09:00:00到2018-11-13 20:00:00 数据库为 youxi 的 *** 作日志,并且过滤出 只包括template_coupon_tb_product_category 表数据的 *** 作记录 ,输入如下命令将数据写入到一个备用的txt文件中mysqlbinlog --no-defaults --database=youxi --start-datetime="2018-11-12 09:00:00" --stop-datetime="2018-11-13 20:00:00" /data/mysql/mysql-bin.000015 | grep template_coupon_tb_product_category > template_coupon_tb_product_category.txtmysqlbinlog 命令的语法格式:mysqlbinlog mysql-bin.0000xx | mysql -u用户名 -p密码 数据库名常用参数选项解释:--start-position=875 起始pos点--stop-position=954 结束pos点--start-datetime="2016-9-25 22:01:08" 起始时间点--stop-datetime="2019-9-25 22:09:46" 结束时间点--database=zyyshop 指定只恢复zyyshop数据库(一台主机上往往有多个数据库,只限本地log日志)不常用选项:-u --user=name 连接到远程主机的用户名-p --password[=name] 连接到远程主机的密码-h --host=name 从远程主机上获取binlog日志--read-from-remote-server 从某个MySQL服务器上读取binlog日志第五步:利用第四步输出的sql语句或者txt文本进行语句过滤,重新插入数据或更新数据
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)