美文网首页Mysql&Mariadb
Mysql 导入导出文件优化、(errno:24)错误

Mysql 导入导出文件优化、(errno:24)错误

作者: 十三流 | 来源:发表于2016-11-15 10:18 被阅读0次

    在使用mysqdump导出的sql时,1G文件大约导入了20分钟,需要频繁测试,这个不能忍,查询后得到以下优化方法,基本在2分钟左右。

    导出文件太慢

    mysqldump -uxxxx -pxxxx -e --max_allowed_packet=1048576 --net_buffer_length=16384 > backup.sql
    

    说明:
    -e 生成insert语句时,使用多行插入的模式,这个对大数据性能影响非常大
    max_allowed_packet和net_buffer_length是说同行缓存区的大小,这个值不能比服务器的大,服务器上这样查看

    mysql> show variables like 'max_allowed_packet'; 
    +--------------------+----------+
    | Variable_name      | Value    |
    +--------------------+----------+
    | max_allowed_packet | 16777216 |
    +--------------------+----------+
    1 row in set (0.06 sec)
    mysql> show variables like 'net_buffer_length'; 
    +-------------------+-------+
    | Variable_name     | Value |
    +-------------------+-------+
    | net_buffer_length | 16384 |
    +-------------------+-------+
    1 row in set (0.00 sec)
    

    导出数据时出现can’t opne file ‘xx.frm’ (errno:24)错误

    一开始以为是被锁了,后来发现lock列表是空的,重启服务后没有其他连接也不行,后来得知是一个叫open_files_limit的设置的问题。
    open_files_limit的系统默认值为max_connections*5 或 max_connections + table_cache*2。
    如果open_files_limit设置过小,造成打开的文件过多,就会出现错误’xxx.frm’无法打开。

    解决方案:命令行修改global open_files_limit比要导出的表数量多即可,修改配置文件后重启也行。

    导入mysql数据太慢

    1. 确保导入的SQL头部有如下设置
    SET FOREIGN_KEY_CHECKS=0;
    SET AUTO_COMMIT=0;
    
    1. mysql导入的参数设置max_allowed_packet大一些
    mysql -uxxxx -pxxxx database --default-character-set=utf8 --max_allowed_packet=256M < backup.sql
    

    相关文章

      网友评论

        本文标题:Mysql 导入导出文件优化、(errno:24)错误

        本文链接:https://www.haomeiwen.com/subject/kavkpttx.html