我使用 rsync 将 mysql(myisam)数据库移动到另一台服务器,执行此操作后我意识到我忘记在移动文件之前运行“flush tables”,所以我猜不是所有的更改都写入磁盘。
我花了几个小时才完成这项工作,但我想知道移动后数据实际上会有多一致?mysql 是否将数据保存在缓存中以及磁盘上,还是移动之前缓存中的所有内容都丢失了?
如果这没有意义的话请告诉我!
谢谢
答案1
为了可靠地复制数据库表,必须停止数据库(而不仅仅是刷新)。如果不停止,则无法保证一致的副本,但无法确定是否会丢失数据以及丢失哪些数据。
也就是说,如果数据库未处于活动状态,并且在您开始复制之前自上次写入操作以来已经过了一段时间,则缓存很可能已提交到磁盘,并且如果 MySQL 在启动期间没有抱怨文件损坏,那么您可能很幸运。