卸载mysql时中出现回滚怎么办 该怎么解决

卸载mysql时中出现回滚怎么办 该怎么解决,第1张

在MySQL有时执行了错误的update或者delete时导致大量数据错误恢复的办法。执行时没有开启事务,也没有对数据进行。这时就需要使用到sqlbinlog工具。

sqlbinlog需要开启,具体的打开方法就不说了。

使用sqlbinlog会产生bin文件,恢复就需要用到这些文件。文件中记录着数据库的所有 *** 作。(此方法的 *** 作是将数据库之前所执行的语句重新执行一次,以达到恢复效果)

具体步骤:1,先找到bin文件,一般都是在mysql的data文件夹中,结尾以.00000X等形式结束。

2,寻找需要还原的时间点 使用语句 mysqlbinlog 文件名 例(MySQLbinlog xxbin.000001)来查看内容,然后找到对应的具体时间

3,导出sql语句,使用语句 mysqlbinlog 文件名>sql文件路径例(mysqlbinlog xxxbin,00001>>a.sql | mysql -u root -p )

如果需要指定时间导出--start--date -stop='' --date='' 来导出指定时间执行的语句例(sqlbinlog --start-stop='2015-11-22 10:00:00' xxbin.000001>a.sql | mysql -u root -p )这句意思是导出在2015-11-22 10点之前的语句,反之start是导出时间之后的。 start和stop可以同时使用。

如果存在多个bin文件,则按照需要导出。

4,使用mysql将导出的语句执行一次。

我们经常会遇到 *** 作一张大表,发现 *** 作时间过长或影响在线业务了,想要回退大表 *** 作的场景。在我们停止大表 *** 作之后,等待回滚是一个很漫长的过程,尽管你可能对知道一些缩短时间的方法,处于对生产环境数据完整性的敬畏,也会选择不做介入。最终选择不作为的原因大多源于对 *** 作影响的不确定性。实践出真知,下面针对两种主要提升事务回滚速度的方式进行验证,一种是提升 *** 作可用内存空间,一种是通过停实例,禁用 redo 回滚方式进行进行验证。

仔细阅读过官方手册的同学,一定留意到了对于提升大事务回滚效率,官方提供了两种方法:一是增加 innodb_buffer_pool_size 参数大小,二是合理利用 innodb_force_recovery=3 参数,跳过事务回滚过程。第一种方式比较温和,innodb_buffer_pool_size 参数是可以动态调整的,可行性也较高。第二种方式相较之下较暴力,但效果较好。

两种方式各有自己的优点,第一种方式对线上业务系统影响较小,不会中断在线业务。第二种方式效果更显著,会短暂影响业务连续,回滚所有没有提交的事务。

默认情况下,MySQL采用autocommit模式运行。这意味着,当执行更新表的语句之后,MySQL立刻把更新存储到磁盘中。

事务安全型的存储引擎(如InnoDB, BDB或NDB簇),

使用以下语句禁用autocommit模式:

SET AUTOCOMMIT=0

使用START TRANSACTION,autocommit仍然被禁用,直到COMMIT或ROLLBACK结束事务为止。然后autocommit模式恢复到原来的状态。

mysql> select * from test_main //

+----+-------+

| id | value |

+----+-------+

|  1 | ONE   |

|  2 | TWO   |

|  3 | THREE |

+----+-------+

3 rows in set (0.00 sec)

mysql> START TRANSACTION

    -> //

Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO test_main VALUES(4, 'FOUR') //

Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO test_main VALUES(4, 'FOUR') //

ERROR 1062 (23000): Duplicate entry '4' for key 'PRIMARY'

mysql> ROLLBACK//

Query OK, 0 rows affected (0.01 sec)

mysql> select * from test_main //

+----+-------+

| id | value |

+----+-------+

|  1 | ONE   |

|  2 | TWO   |

|  3 | THREE |

+----+-------+

3 rows in set (0.00 sec)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/7554084.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存