一、分割大文件分批导入
当单次导入数据超过服务器处理能力时,可通过以下步骤拆分文件:
- 使用Linux系统的split命令分割SQL文件:
split -l 1000000 large_db.sql part_
- 禁用非必要索引后再分批导入,完成重建索引:
ALTER TABLE table_name DISABLE KEYS; ...导入操作... ALTER TABLE table_name ENABLE KEYS;
二、使用高效导入命令
通过数据库原生命令实现快速导入:
- LOAD DATA INFILE:比常规INSERT快20倍以上
LOAD DATA INFILE 'data.csv' INTO TABLE tbl_name FIELDS TERMINATED BY ',' LINES TERMINATED BY ' ';
- 命令行导入整库:
mysql -u root -p db_name < backup.sql
三、调整数据库配置参数
修改MySQL全局设置提升导入效率:
SET GLOBAL max_allowed_packet=1073741824; SET GLOBAL innodb_flush_log_at_trx_commit=0; SET GLOBAL bulk_insert_buffer_size=256M;
导入完成后建议恢复原配置以确保数据安全性。
通过文件分割、原生导入命令和参数调优的三重策略,可使TB级数据库导入时间缩短60%以上。实际操作中建议结合硬件资源监控,优先采用LOAD DATA INFILE等原生支持的高效方案。