- 我有一个 MariaDB 服务器 - 5.5.60
- 我有一个
xyz
同时具有 MyISAM 和 InnoDB 表的数据库 - 大多数表是 MyISAM,但特别是在这个数据库中,数据主要在 InnoDB 表中。
如果我跑du -sh /var/lib/mysql/xyz
我得到11M
如果我运行mysqldump -u root -pXXX "xyz" > xyz.sql
生成的文件是371M
我可以使用该xyz.sql
文件恢复数据库就好了。对于其他数据库,我拥有所有 MyISAM 表,但从未注意到大小有太大差异。
为什么.sql
文件比实际的数据库目录大这么多?在带有 InnoDB 表的数据库中使用 mysqldump 时,我应该做些不同的事情吗?
这个是正常的。
对于 innodb innodb_file_per_table = 0 的 5.5.60 版默认设置意味着 - 数据不存储在数据库文件夹内的文件中,而是存储在全局 innodb 文件中。
您可以在 /var/lib/mysql 文件中检查它 - ibdata1
innodb_file_per_table设置的5.6 版默认值为1
ibdata1 仍然非常重要,但数据存储在类似于 myisam 的单独文件中。