• MySQL导入数据非常慢的解决办法


     

    MySQL导出的SQL语句在导入时有可能会非常非常慢,经历过导入仅45万条记录,竟用了近3个小时。在导出时合理使用几个参数,可以大大加快导入的速度。

    -e 使用包括几个VALUES列表的多行INSERT语法; 
    --max_allowed_packet=XXX 客户端/服务器之间通信的缓存区的最大大小; 
    --net_buffer_length=XXX  TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行

    注意:max_allowed_packet和net_buffer_length不能比目标数据库的配置数值大,否则可能出错。

    首先确定目标库的参数值 
    mysql>show variables like 'max_allowed_packet'; 
    mysql>show variables like 'net_buffer_length';

    根据参数值书写mysqldump命令,如: 
    mysql>mysqldump -uroot -p 数据库名  -e --max_allowed_packet=1048576 --net_buffer_length=16384 > SQL文件

    如:

    mysql>mysqldump -uroot -p discuz  -e --max_allowed_packet=1048576 --net_buffer_length=16384 > discuz.sql

    之前2小时才能导入的sql现在几十秒就可以完成了。

    估计会有很多表在mysqldump的时候 长时间处于opening table 状态,你可以show processlist;观察下

    mysqldump 会锁表。 另外你如果有 5万个表,速度也不会太快。

    mysqldump -uroot -h127.0.0.1 -p --all-databases --single-transaction --add-drop-database --add-drop-table --comments --complete-insert --default-character-set=utf8 --result-file=path/file.sql

    --single-transaction 试一试这个参数
    --max_allowed_packet 这个参数可以设置大一些

    INNOSB无法直接COPY,用MYSQLDUMP导出,在导出时最好没有用户使用,你的表多,速度不会快。

    在保持两机器环境变量,安装目录等细节完全一样的情况下,你可以直接拷数据文件到另一台机器。这样做风险比较大就是了。。。。。linux的一般在/var/lib/mysql目录下,这个目录里以你的数据库名字命名的目录,里面就是数据文件。

    在mysqldump 加个参数 --quick 试下看看

    使用mysqldump和mysqlimport来转移数据库。对于大的表,比只是使用mysqldump要快得多。在下面的命令中,DUMPDIR代表用来保存mysqldump输出的目录全路径名。
    首先,创建保存输出文件的目录并备份数据库:
    shell> mkdir DUMPDIRshell>mysqldump --tab=DUMPDIR db_name然后将DUMPDIR目录中的文件转移到目标机上相应的目录中并将文件装载到MySQL:
    shell> mysqladmin create db_name           # create databaseshell> cat DUMPDIR/*.sql | mysql db_name   # create tables in databaseshell> mysqlimport db_name DUMPDIR/*.txt   # load data into tables不要忘记复制MySQL数据库,因为授权表保存在该数据库中。你可能需要在新机器上用MySQL root用户运行命令,直到产生MySQL数据库。
    将mysql数据库导入目标机器后,执行mysqladmin flush-privileges,以便服务器重载授权表信息。

  • 相关阅读:
    chrome rpm旧版本下载地址
    windows 静态绑定arp
    ubuntu20开机自动打开浏览器全屏访问指定页面
    nginx+uwsgi+django+systemd部署django项目
    openresty编译安装
    windows服务器设置定时重启
    华为云和AWS之间打通内网
    python glob
    python subprocess
    python 异常
  • 原文地址:https://www.cnblogs.com/timssd/p/5753553.html
Copyright © 2020-2023  润新知