我有一个专用的 MySQL 5.1 数据库服务器,配备 2 个 Intel Xeon 2GHz 四核处理器和 10 Gb Ram。
我使用 MySQL 管理工具对我的数据库执行完整备份,大小为 12 Gb,但该过程需要将近 4 个小时才能完成。
在分析备份期间的处理器使用情况时,MySQL Admin 仅使用了一个核心,考虑到我还有另外 7 个核心处于闲置状态,这完全是浪费。
有没有办法使用 MySQL 管理工具来加快备份过程,或者您是否推荐其他程序来执行更快的备份?
编辑:服务器运行 Windows 2008 x64 企业版
答案1
除非您的整个数据集都适合内存,否则执行转储的最大瓶颈是将数据从磁盘中取出并重新存入转储文件中的磁盘。使用更多核心可能不会使这个过程更快。
我想说,12GB 的数据需要 4 个小时,这太慢了。我们只用了几个小时就完成了好几倍。如果您使用的是 unix,我建议您使用以下命令进行转储:
# mysqldump --opt database | gzip > /tmp/database.sql.gz
首先,“mysqldump --opt”为您提供了一个 SQL 脚本,这是将数据导入回 MySQL 的最快方法。其次,压缩 SQL 脚本将减少保存转储所需的 IO,从而留出更多时间用于执行转储所需的读取。第三,希望压缩将在第二个核心上运行,从而使用更多的 CPU。
答案2
可能不会。备份通常会滥用磁盘 I/O 总线,因此并行运行更多操作不太可能提高总产量时间。
您可以按照 Ian Selby 的建议尝试一些并行 mysqldumps 并比较吞吐量。
答案3
谁在使用一个核心 - mysql 还是 mysqladmin 进程?它是一个单一的数据库吗?我有一个脚本,它可以在单独的文件中备份每个数据库,因此它可以用于并行运行更多备份