使用mysqldump导出大表的注意事项
在使用mysqldump导出数据的场景下,如果加上参数 -q ,则不会把SELECT出来的结果放在buffer中,而是直接dump到标准输出中,顶多只是buffer当前行结果,正常情况下是不会超过 max_allowed_packet 限制的,它默认情况下是开启的。如果关闭该参数,则会把SELECT出来的结果放在本地buffer中,然后再输出给客户端,会消耗更多内存。
对于小规模数据集,禁用-q参数可以加快导出速度。但对于大数据集,如果没办法完全储存在内存缓存中时,就会产生swap。这不仅会消耗主机的内存,也可能会造成数据库主机因无可用内存继而宕机的严重后果。因此,当使用mysqldump来备份大数据集时,建议添加-q参数。