首页 > 编程知识 正文

mysql数据库恢复命令,物理文件恢复mysql数据库

时间:2023-05-04 13:01:57 阅读:143021 作者:94

前言:

数据库的误操作是每个人都不希望发生这样的事情,所以要先小心再小心,减少这样的事情的发生。

恢复基础知识:

mysql支持5.0到log-强力信封。 log_强力信封是对操作的sql语句、时间等所有操作的记录。 这是恢复数据所必需的。

如果在MySQL服务器上启用了二进制记录,则可以使用功能强大的MySQL信封log工具恢复从指定时间点到当前时间点或另一指定时间点的数据。

要验证mysql是否打开了log_强力信封,请登录到mysql并输入以下命令

mysql show variables like '%log% ';

需要看到这样的行,这表明打开了强大的信封log

log_强力信封| ON

如果还没开门的话,趁早启动吧。 因为总有一天我会感谢这个明智的决定。

按以下方式添加到/etc/my.cnf,然后重新启动mysql,将打开log_强力信封

log-强力信封=my_强力信封glog #开放日志

log_强力信封=/var/log/mysql/mysql-强力信封. log

expire_logs_days=10

max_强力信封log_size=100M

恢复之前要做的事情:

但是,如果真的发生了,这个时候,不管有多严重,我强烈建议你暂停一下,做几次深呼吸。 这样,你就可以冷静下来,而不会继续执行昏厥错误的救生措施。

深呼吸后,用最快的速度评估受影响的范围,如果自己不能评估,请找一个可以评估的人。

如果受影响的范围很广,请第一时间通知上级领导,让他知道这次事故,不要试图用速度掩盖问题。

恢复过程:

1 .将数据库恢复为现有的旧版本。

2 .在日志中导出旧版本和更高版本的所有sql。

3 .运行旧版本或更高版本的所有sql恢复数据库。

开始恢复数据:

1 .找到数据库备份的历史版本并进行备份。

找到存储在mysql中的日志文件。 也就是说,打开在大信封_log中设置的路径,以导出旧版本和更高版本的所有sql。

mysql强力信封log /var/log/mysql/mysql-强力信封. 000029 -d zantest allsql.sql

以上命令未按时间段导出,而是导出了所有sql。 mysql强大的信封log命令与start-date和stop-date相对应。 最后写一些参考。

3 .到处走后,对照找到旧数据库备份版本的时间和导出的sql,删除导出的sql前面的所有内容,只留下旧版本后面的sql,然后你就错了我们暂时称为sql_after.sql

3 .使用旧数据库备份将数据库恢复到旧时间点。

将sql_after.sql导入数据库时,将执行所有自旧时间点以来的数据操作,同时还会恢复数据库。

其实我建议你这样做(恢复单表) :

就像上面提到的恢复数据库的方法来说,gddwl在执行了错误操作之后,其实你的肾上腺激素水平会持续一段时间。 而且,你看了上述操作后,大多数情况下,你看了之后,都不敢那么贸然去做。

因为上面写着“将数据库恢复为旧的历史版本”。 这是高风险的操作。 刚才的错误操作可能只是一个表,但将数据库还原为旧版本意味着整个数据库中的所有表都是旧版本。 万一恢复不了,你真的扛不住吧。

请告诉我低风险的方法:

1 .将数据库中受影响的表恢复为旧版本。

因为很少有人进行单表备份,所以可以在本地恢复旧版本的数据库,然后导出该表以恢复订单表

2 .导出在此表之后运行的sql。

刚才有sql_after.sql。 需要从这里提取此表的操作。 不需要其他表格的操作。

grep your _ table _ namesql _ after.SQL your _ table _ name.SQL

grep是linux命令,请勿在mysql控制台上运行或在windows上运行。

处理your_table_name.sql。 您会发现每个sql之后都会有分号减少,因此您需要在每行中添加分号。

4 .将处理过的your_table_name.sql导入到您的数据库中,完成单表的恢复。

其他内容:

1 .导出在指定开始位置和结束位置之间执行的sql

mysql强力信封log /var/log/mysql/mysql-强力信封. 000029-- start-position=301639029-- stop-position=301639247---dzzql

2 .导出在指定开始时间和结束时间之间执行的sql

mysql强力信封log /var/log/mysql/mysql-强力信封. 000029-- start-date=" 2013-01-241233605:00 "-- stop-date=

3 .将指定位置的sql直接导入数据库。 不要担心没有指定要导入的数据库。 导出的强力信封log包含use ***

mysql强力信封log /var/log/mysql/mysql-强力信封. 000029-- start-date=" 2013-01-241233605:00 "-- stop-date=

4

1

踩上去

共享至:

2013-01-26 10:38

浏览2563

分类:数据库

评论

一楼

忙碌的松鼠

2013-01-26

嗯,如果数据量很少,可以使用计划任务编写备份脚本进行计划备份。

如果数据量较大,请务必使用增量备份。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。