我们希望在(一个)mysql 数据库上运行 BI 分析。
目前我们每天都会获得一个完整的 mysql 转储文件,但将这个文件导入我们的“BI”服务器需要长达 16 小时。转储文件本身大约有 9GB 大,从而产生 360 个表,总共 20GB(在磁盘上);最大的表文件 (.ibd) 大约 6GB。
我不是 mysql 专家,但我认为导入需要很多时间,因为转储文件只导入数据,并且数据库需要从头开始重新索引所有内容......(作为一个附带问题:可能有任何想法关于如何改进导入?)我们一直在考虑为数据文件配备一个单独的 SSD,为服务器添加更多 RAM/CPU,但这并没有真正提高导入速度...
有没有办法获得源数据库的某种“快照”,以便可以按原样复制而不是导入? 我想到了一个包含所有 .ibd 文件(和其他必要文件)的 .zip 文件
答案 0 :(得分:1)
是的,众所周知,导入大型 mysqldump 非常慢。转储文件包含索引的定义,但不包含索引存储本身。所以每次导入转储文件时都必须重建索引。
在我公司,我们使用 Percona XtraBackup。
这是一个物理备份工具,这意味着结果不是必须导入的 SQL 转储文件。它只是制作 .ibd 文件和 iblog 文件的副本来协调交易。 .ibd 文件包含数据行和索引。
我们使用这种备份和恢复解决方案来克隆比您的数据库大 100 倍的数据库。
Percona XtraBackup 是免费和开源的。
有一些注意事项:
值得一提的是,如果您没有使用合适的备份工具,您不应该尝试制作正在运行的 MySQL 服务器的 MySQL 数据目录的 zip 存档。您几乎肯定会得到数据文件的不一致副本,这意味着它们会损坏且无法恢复。