有没有更快的方式,负载mysqldumps?[重复]
-
12-09-2019 - |
题
可能的重复:
加快mysql堆放场和进口
mysqldump
是相当快,但是垃圾场的一个中型数据库(20至30兆)需要几分钟来载使用 mysql my_database < my_dump_file.sql
还有一些mysql设置我可以为你加速的负担?是否有更好的方式载入保存的数据?
我已经试验使用的mysqlimport用与CSV基于垃圾场。这些负荷略--但不明显--更快。我想只是复原数据库文件,但这似乎是一个糟糕的想法。
解决方案
其他提示
假设你正在使用的是InnoDB ...
我是有一堆,我想在一个合理的时间内导入现有的mysqldump输出文件的情况。表(每个文件一个)约为500MB和含有约500万行,每行的数据。使用以下参数我能够从32分钟减少插入时间到下3分钟。
的innodb_flush_log_at_trx_commit = 2,点击 innodb_log_file_size = 256M点击 innodb_flush_method = O_DIRECT
您还需要有一个相当大的innodb_buffer_pool_size
设置。
由于我的插入是一个一次性我之后恢复的设置。如果你打算使用它们长期保持,确保你知道自己在做什么。
我发现用在塞德里克不管三七二十一的博客的建议和为每个设置的详细解释可以在 MySQL文档中找到。
确保你使用 --opt
选择快照当倾销。这将使用大容量插入语法、延迟关键的更新,等等。
如果仅使用些表, 你可以安全地复制他们通过停止服务器复制到一个停止服务器,并开始。
如果你不想停下来源服务器,可以按照这样的:
- 获得读锁的所有表上
- 齐所有表格
- 复制的文件
- 解开表
但我敢肯定你的复制服务器需要停止当你把他们在的地方。
您确定数据是否神志清醒,并没有任何的文件系统或系统性能的问题是什么?几分钟20-30兆数据库是一个很长一段时间。我在用的内存,和320GB HD 2GB的一台MacBook和标准的2.1GHz的处理器。我抓起我的数据库之一进行快速基准:
gavinlaking$ du -sm 2009-07-12.glis
74 2009-07-12.glis
gavinlaking$ mysql -pxxx -e "drop database glis"
gavinlaking$ mysql -pxxx -e "create database glis"
gavinlaking$ time mysql -pxxx glis < 2009-07-12.glis
real 0m17.009s
user 0m2.021s
sys 0m0.301s
17秒用于74兆字节的文件。这似乎是非常活泼的我。即使是大4倍(使它略低于300兆字节),它完成在不到70秒。
试试 https://launchpad.net/mydumper - 多线程MySQL的备份/恢复其为3倍比的mysqldump http://vbtechsupport.com/1695/
10倍快倍有使用LVM的快照备份的方法和恢复,可能是你的一个有趣的选择。
而不是做一个mysqldump的,可以考虑使用LVM把你的MySQL数据目录的快照。使用LVM快照让你有近实时备份功能,支持所有的存储引擎,以及令人难以置信的快速恢复。从下面的链接引述
“恢复时间是尽可能快地把数据回和标准的MySQL崩溃恢复,并且它甚至可以进一步降低。”
HTTP: //www.mysqlperformanceblog.com/2006/08/21/using-lvm-for-mysql-backup-and-replication-setup/