本节讨论执行备份的过程,使您能够在几种类型的崩溃后恢复数据:
- 操作系统崩溃
- 电源(检测)失败
- 文件系统崩溃
- 硬件问题(硬盘、主板等)
示例命令不包括诸如 --user和 --password用于 mysqldump和mysql客户端程序的选项。您应该包括必要的选项,以使客户端程序能够连接到 MySQL 服务器。
假设数据存储在InnoDB 存储引擎中,该引擎支持事务和自动崩溃恢复。还假设 MySQL 服务器在崩溃时负载不足。如果不是,则永远不需要恢复。
对于操作系统崩溃或断电的情况,我们可以假设重启后MySQL的磁盘数据可用。该 InnoDB数据文件可能不包含由于崩溃一致的数据,但InnoDB在他们读它的日志,发现没有被刷新到数据文件挂起提交和未提交的事务清单。InnoDB自动回滚那些未提交的事务,并将那些已提交的事务刷新到其数据文件中。有关此恢复过程的信息通过 MySQL 错误日志传达给用户。以下是示例日志摘录:
InnoDB: Database was not shut down normally.
InnoDB: Starting recovery from log files...
InnoDB: Starting log scan based on checkpoint at
InnoDB: log sequence number 0 13674004
InnoDB: Doing recovery: scanned up to log sequence number 0 13739520
InnoDB: Doing recovery: scanned up to log sequence number 0 13805056
InnoDB: Doing recovery: scanned up to log sequence number 0 13870592
InnoDB: Doing recovery: scanned up to log sequence number 0 13936128
...
InnoDB: Doing recovery: scanned up to log sequence number 0 20555264
InnoDB: Doing recovery: scanned up to log sequence number 0 20620800
InnoDB: Doing recovery: scanned up to log sequence number 0 20664692
InnoDB: 1 uncommitted transaction(s) which must be rolled back
InnoDB: Starting rollback of uncommitted transactions
InnoDB: Rolling back trx no 16745
InnoDB: Rolling back of trx no 16745 completed
InnoDB: Rollback of uncommitted transactions completed
InnoDB: Starting an apply batch of log records to the database...
InnoDB: Apply batch completed
InnoDB: Started
mysqld: ready for connections
对于文件系统崩溃或硬件问题的情况,我们可以假设 重启后MySQL磁盘数据不可用。这意味着 MySQL 无法成功启动,因为某些磁盘数据块不再可读。在这种情况下,必须重新格式化磁盘、安装新磁盘或以其他方式纠正根本问题。然后有必要从备份中恢复我们的 MySQL 数据,这意味着必须已经进行了备份。为确保是这种情况,请设计并实施备份策略。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




