问题遇到的现象和发生背景
我停掉mysql服务,把ibd文件复制出来,放到安全的地方,开启数据库服务,删除当前库中的表的部分数据,比方说数据由100行,变成30行。然后停服务。
再把放在安全地方的ibd文件放回他原本的位置,这样数据行又变成100行,并且是可读写状态。
这是不是mysql的一个小bug?还是我开了容错模式?
用代码块功能插入代码,请勿粘贴截图
我想要达到的结果
我希望即便是覆盖了之前的ibd文件,但是通过日志,也应该回到删除部分数据的情况,或者是否是我没开启日志管理?
我停掉mysql服务,把ibd文件复制出来,放到安全的地方,开启数据库服务,删除当前库中的表的部分数据,比方说数据由100行,变成30行。然后停服务。
再把放在安全地方的ibd文件放回他原本的位置,这样数据行又变成100行,并且是可读写状态。
这是不是mysql的一个小bug?还是我开了容错模式?
我希望即便是覆盖了之前的ibd文件,但是通过日志,也应该回到删除部分数据的情况,或者是否是我没开启日志管理?
你这是在个人测试环境中,在生产环境操作,会损害数据页。
InnoDB的ibd文件里面存放的是数据文件,ibd文件是支持拷贝和导入到其他环境的。
可以参考官方文档。
MySQL :: MySQL 8.0 Reference Manual :: 15.6.1.3 Importing InnoDB Tables
https://dev.mysql.com/doc/refman/8.0/en/innodb-table-import.html
InnoDB本身的日志是redo日志,会记录未提交事务的物理数据页。
MySQL的server层还有binlog日志。