大型SQL文件导入mysql解决方案
今天遇到提问,就是一个20G的数据库文件要导入到一个2G的小机器中,怎么实现感觉上,如果是2G的小机器是跑linux那还好,如果是跑window,那么就已经占了1.5G(包括了环境),在网上找了很多解决方案,但是都是效率不是很好最后找到一款不错的软件与解决方案.如果是默认方式导入,那么需要修改mysql的默认配置文件,修改mysql中的max_allowed_packet参数为10G大小,net_buffer_length参数也根据需求适度调大。
这里运行环境是linux:
最后在网上找到一款软件名字叫做SQLDumpSplitter3_0.9.2,先进行数据库切割,最后批量导入.
source /mydata/sql/a.sql;
source /mydata/sql/b.sql; 如果有多个请继续往下扩展
为避免ssh连接掉线而导致执行关闭,需要写一个shell脚本,通过nohup后台执行。
myshell.sh脚本如下
mysql -h host -uxxx -pxxx --database=user_database</mydata/sql/all.sql
后台执行指令
nohup ./myshell.sh &
最后总结一下:对于大型sql,最好的方案也是先切割(确保顺序性),然后利用一些更高效率的软件执行来实现最终结果,也需要根据时间空间场景灵活选用方案。