![在另一台机器上恢复 myisam mysql db](https://linux22.com/image/509974/%E5%9C%A8%E5%8F%A6%E4%B8%80%E5%8F%B0%E6%9C%BA%E5%99%A8%E4%B8%8A%E6%81%A2%E5%A4%8D%20myisam%20mysql%20db.png)
当 mysql 未运行时,我复制了 web db 目录(/var/lib/mysql/data/web/)。我将此目录转移到另一台运行 mysql 的机器上。
web db的东西是基于myisam的。
我正在考虑如何在另一台服务器上恢复此操作。我想到的策略如下。
- 将web db的数据目录复制到新服务器。
- 在新服务器上,“创建数据库网站”,在 /var/lib/mysql/data 中创建一个目录
- 将步骤中的所有文件复制到 2 中创建的新目录。
- 反弹mysql
我的问题:如何处理这个新数据库的information_schema?
答案1
在提出这个问题六年后,我必须将一个 8000 万行 MYISAM 表复制到备份数据库(它使用了整个数据库 80%的磁盘空间)。
我从夜间备份中取出 .MYI、.MYD 和 .FRM 文件,并将它们复制到新运行数据库的文件夹中。information_schema 几乎立即更新,所有表操作都按预期工作(即索引和其他内容都正确)。
我将在将它们送入安静退休状态之前对它们运行 CHECK TABLE 和 OPTIMISE TABLE,但这种备份方法很轻松。
答案2
information_schema 是保存有关所有其他数据库的信息的信息数据库。它是一个内置虚拟数据库,其唯一目的是提供有关数据库系统本身的信息。MySQL 服务器会自动填充 information_schema 中的表。
参考: http://kb.siteground.com/article/What_is_the_information_schema_database.html
因此,如果只有 myisam 表,只要 mysql 版本相同,您就可以复制/移动数据库。
答案3
在源机器上:
mysqldump -q -u username -p database > database.sql
将 database.sql 传输到目标机器并执行以下操作:
mysql -u username -p database < database.sql