规模小的项目一般使用MYSQL数据库,有自动脚本,每天定时生成.SQL脚本数据库备份。如果某天BOSS突然反馈说业务侧操作失误或者需要恢复到昨天的整库数据,排除使用BINLOG方式恢复。但是生产导出的.sql文件脚本有几百M大小。按照传统方式去导入脚本,导入速度非常慢,耗时太长,均值情况下至少2,3个小时。恢复数据时间太长,业务侧和BOSS都有意见,顾而找到了如下的这种方法:
原来在默认情况下,当你去执行某个.sql文件的时候事物是自动提交的,也就是说insert一次提交一次,这样大大拖延了导入的速度;在使用一下这种方式之后50多万的数据,比起自动提交的导入来说快了不少,以前需要几个小时才能导入的数据,一两分钟就导入完了,以下是具体的使用方法:
1、切到mysql命令行
| 1 | mysql -u root -P 3306 -p | 
2、输入数据库密码
3、创建数据库
| 1 | //如果已经有数据库忽略此步骤 | 
4、使用数据库
| 1 | use 数据库名; | 
5、设置会话参数
| 1 | //关闭日志 | 
6、开启事务
| 1 | START TRANSACTION; | 
7、设置导入文件的编码
| 1 | set names utf8; | 
8、导入SQL文件
| 1 | source 文件的路径; | 
9、成功后事务提交
| 1 | commit; | 
《小知识》
1、SET NAMES显示客户端发送的SQL语句中使用什么字符集。保证插入每条数据 编码与数据库相同 防止乱码。
2、查看当前的autocommit属性值show variables  like 'autocommit';
