Ant*_*des 3 mysql innodb binlog mysqlbinlog
MySQL binlog 是否类似于 Oracle 的重做日志或 PostgreSQL 的 Write-Ahead Log?
如果是,为什么可以禁用 bin 日志记录?如果在更新数据文件时机器崩溃,RDBMS 如何在没有 binlog 的情况下回滚更改(或以其他方式将数据文件恢复到一致状态)?
该手册说“某些数据恢复操作需要使用二进制日志”,但并不完全清楚是哪一个。如果我没有复制和增量备份,禁用二进制日志是否安全?
我问这些问题的原因是,在 Nextcloud 部署中,我遇到了磁盘性能问题,并且我发现在大量使用期间,MySQL 写入磁盘(写入二进制日志)的速率等于每分钟数据库。因此,我试图了解正在发生的事情以解决问题。
与许多其他 DBMS 不同,MySQL 有两级日志来执行“重做”功能。用于执行崩溃恢复的日志由存储引擎实现(或不实现),例如InnoDB重做和撤消日志。当服务器从异常结束中恢复时,这些日志允许存储引擎重放已提交的事务并撤消未提交的事务。它们还可以用于允许在线备份。
二进制日志由MySQL服务器进程本身维护,它不属于任何特定的存储引擎。正如您所提到的,除其他外,它还允许通过在还原的备份之上重播事务来进行时间点恢复 (PITR)。它不用于崩溃恢复。
换句话说,如果您不需要 PITR 或复制,您可以安全地禁用二进制日志;存储引擎重做/撤消日志将启用崩溃后数据库恢复到一致状态的功能——只需确保您使用实现它们的存储引擎即可。
| 归档时间: |
|
| 查看次数: |
3171 次 |
| 最近记录: |