War*_*ker 12 mysql import mysqldump
我有一个用mysqldump创建的InnoDB表的8GB MYSQL数据库转储.我导入数据:
mysql -uroot -p my_db < dump.sql
Run Code Online (Sandbox Code Playgroud)
在一小时内导入了5 GB的DB转储.8 GB转储需要50个小时计算.当我查看进程列表时
SHOW PROCESSLIST;
大多数情况下,只有一个INSERT查询可见,状态为"'释放项"
除了复制原始文件之外,还有办法加快导入过程吗?
Mar*_*rkR 15
真正的诀窍是确保最大的单个表适合innodb缓冲池.如果没有,那么插入(当然导入)将非常慢.
它与整个数据库的大小无关,而是最大的单表.
对于大得多的数据库,您可能需要考虑传输数据库的其他方法,例如文件系统快照.如果您的机器运行相同版本的数据库,操作系统和体系结构,这当然最有效.
机器有多少内存?我的第一个猜测是机器有6GB或8GB的内存,并且mysql能够将第一个转储完全保留在内存中,但在第二次导入时以某种方式交换硬核.您可以vmstat 5在执行导入时运行几次迭代并查看系统交换的重要程度吗?