Mysql导入大sql文件
对于一个10G左右的大sql文件尝试使用Navicat导入,但始终会报错误:MySQL server has gone away,百度得到的回答有说需要在配置文件设置max_allowed_packet、wait_timeout和interactive_timeout的,但在配置文件中添加这些配置并重启服务后问题依旧得不到解决:
max_allowed_packet=2048000M
wait_timeout=288000
interactive_timeout = 288000
三种解决方法
于是另寻方法,以下是三种方法:
1.使用EmEditor将sql文件切割成一个个小文件,再逐个导入
2.使用mysqldumpsplitter脚本将大文件根据表输出成一个个小文件,再逐个导入
shell脚本的获取:https://github.com/kedarvj/mysqldumpsplitter
该脚本的使用可以参考CSDN上的一篇文章:https://blog.csdn.net/weixin_34366546/article/details/91569724
3.编写shell脚本,使用mysql命令导入
Shell脚本导入mysql
第一第二种方式本质都是将文件转为小文件再逐个导入,文件过大的话转成的小文件就比较多,一个个导入还是比较麻烦的,而且本人比较懒,所以我这边最后还是选择使用了第三种方式导入
个人环境:Centos7 mysql8.0
首先编写shell脚本:
#变量定义
sqlname="khub.sql" #sql文件的文件名
dir="/opt/sqlfile" #sql文件所在路径
host="127.0.0.1" #要导入的mysql所在数据库
user="root" #mysql数据库用户名
passwd="password" #mysql数据库密码
dbname="khub" #mysql数据库db
#导入sql文件到指定数据库
mysql -h$host -u$user -p$passwd --force $dbname < $dir/$sqlname
以不挂断方式+后台运行脚本
考虑到因为是SSH远程连接到Linux服务器上,可能会因为网络原因导致连接中断,而且个人电脑也不可能一直开着,所以这边使用nohup命令和&命令去执行脚本(nohup保证不挂断运行,&则是后台运行):
[root@localhost sqlfile]# nohup ./khubimport.sh >> khubim.log 2>&1 &
[1] 26120
其中 >> khubim.log 是将运行脚本过程中出现的信息输出到日志中,之后只需要静静等待就行了。
这时候可以通过jobs命令查看后台进程:
[root@localhost sqlfile]# jobs -l
[1]+ 26120 运行中 nohup ./khubimport.sh >> khubim.log 2>&1 &
但是jobs命令只能查看当前终端的进程,我们可以通过ps -ef查看mysql进程:
[root@localhost ~]# ps -ef|grep mysql
root 8009 1 0 15:52 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/localhost.localdomain.pid
mysql 8257 8009 12 15:52 ? 00:06:55 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/error.log --pid-file=/usr/local/mysql/data/localhost.localdomain.pid --port=3306
root 26123 26120 8 16:45 pts/0 00:00:03 mysql -h127.0.0.1 -uroot -px xxxxxx --force khub2
root 26376 24897 0 16:46 pts/1 00:00:00 grep --color=auto mysql
其中这边的26123进程即为通过nohup启动的进程,即使将当前终端关闭,进程依旧存在,如果想要停止进程可以使用kill命令直接终结:
kill -9 26123
shell脚本参考文章:https://blog.csdn.net/white__cat/article/details/27836481
nohup命令参考文章:https://www.cnblogs.com/yunwangjun-python-520/p/10713564.html