Ubuntu服务器运行MySql服务器。
我们的服务器上有5个数据库。 在最近的崩溃,服务器被恢复不正确,现在1数据库(B)有2个不正确的表和第二个数据库(A)是完全不正确的。
我如何正确replace数据库文件?
它是如此简单吗?
cp -a /path/to/backup/databaseA/ /var/lib/mysql/databaseA cp -a /path/to/backup/databaseB/table1.MYD /var/lib/mysql/databaseB cp -a /path/to/backup/databaseB/table1.MYI /var/lib/mysql/databaseB cp -a /path/to/backup/databaseB/table2.ibd /var/lib/mysql/databaseB
而且值得一提的是,MyISAM和InnoDB表格是混合在一起的。
与MyISAM – 没有问题(除元数据),关于InnoDB: https : //dba.stackexchange.com/questions/15531/why-does-innodb-store-all-databases-in-one-file
我认为你的问题是在innodb_file_per_table – 是否这个选项启用之前,在A和B上创build表。
如果以后启用了innodb_file_per_table ,那么您将拥有混合的表空间:一些数据将保存在.ibd中, ibdata1一些保存在ibdata1 ,元数据始终保留在ibdata1 。
此外,请记住,不仅数据库文件提供有关表和权限等信息(元数据) – mysql数据库信息表和ibdata1做。 所以,只有当没有变化或者你不关心这个元数据时,复制才是有用的。
简短的回答 – 不(你也需要ibdata1 )。 这并不是那么容易,但在某些情况下,它可能会工作。
如果这不是你正在寻找的答案 – 无论如何,这些信息可能对你非常有用。
恢复:你也需要ibdata1 ,但它也会影响其他数据库的innodb。