假设,客户端浏览器正在访问我的网站,数据在它和我的后端 MySQL 服务器之间流动。此时,服务器端的超级用户发出了计划外的系统关闭或计划的 cron 作业,导致 LAMP 堆栈(即 Apache、PHP-FQM 和 MySQL 服务器)重新启动。这会损坏 MySQL 数据库吗?
在这种情况下,什么做法最好?
答案1
这不应该引起任何问题,原因有二:
如果发出了关闭/重启命令,则会向数据库服务器发送信号,以使其在关闭之前恢复正常状态。
现代数据库(和文件系统) - 包括现代版本的 MySQL 都有一个日志系统,可以确保在突然断电/关机时保持一致性。
警告 - 此答案假设批准正确 - 即,如果更改需要作为单个块写入,则使用事务,并且/或者数据库具有适当的一致性约束。 (如果所有内容都没有写入,则会回滚)。 编写不当的应用程序和数据库架构可能会编写部分更改,这可能会导致应用程序级别的错误,因为如果数据的关系假设因某些正在写入的数据而无效 - 但这在技术上也不是数据损坏。