规模小的项目一般使用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';