通过脚本使linux后台导入sql文件

一个4g的sql文件导入需要好几个小时

soucre   sql路径

执行时间太长了,遇到xshell关闭只能重来

nohup mysql -uroot -p123456 tests < /data/sqls/tests.sql &

或者

# 创建脚本
[root@iZbp1ajqzkbhcq19bdoswlZ sqls]# vim import.sh 
# 脚本内容
# mysql -u root --password=你的密码 --database=你的数据库 <full.sql;
# exit;

# 后台执行
[root@iZbp1ajqzkbhcq19bdoswlZ sqls]# nohup ./import.sh >./mysql_output.log 2>&1 &
[1] 90151

# 查询是否执行成功
[root@iZbp1ajqzkbhcq19bdoswlZ sqls]#  ps aux |grep mysql

# 退出xshell
[root@iZbp1ajqzkbhcq19bdoswlZ sqls]# exit
logout

# 重连,重新查询脚本是否在执行
ps aux |grep mysql

当前导入4G大小的sql文件大概需要七到八个小时
优化方法:

# 登陆mysql
mysql -u root -p密码

CREATE DATABASE 数据库名;

set sql_log_bin=OFF;//关闭日志
set autocommit=0;//关闭autocommit自动提交模式
set names utf8;

use 数据库名;

开启事务
START TRANSACTION;
引入SQL文件
source 文件的路径;
成功后事务提交 
COMMIT; 

这样一个12G的sql文件大概只要半个小时

最好的方法是:先分别导出建表语句和数据语句,然后手工建表,删除外键和索引,然后再导入数据这样就会非常快。

导出结构不导出数据
mysqldump --opt -d -u root -p密码 数据库名> xxx.sql 
或者mysqldump --no-data -u username -p* database_name > xxx.sql  

导出低于8.0版本的MySQL数据库时,会出现Unknown table ‘column_statistics’ in information_schema的错误. 加选项--column-statistics=0就可以了
mysqldump --opt -d --column-statistics=0 -u root -p密码 数据库名> xxx.sql

导出数据不导出结构
mysqldump --opt -t  -uroot -p密码 数据库名 > xxx.sql 

备注:导出、导入数据用MYSQLDUMP,不要用NAVICAT。

参考文档:https://blog.csdn.net/ydyuse/article/details/110109312

参考文档:https://blog.csdn.net/chiheyi1036/article/details/100722381

posted @ 2022-04-09 10:31  下个ID见  阅读(648)  评论(0)    收藏  举报