MySQL-批导入设置

部分配置方法来自网络,仅作笔记不记录来源。

 

创建账户:create user '用户名'@'访问主机' identified by '密码';

赋予权限:grant 权限列表 on 数据库 to '用户名'@'访问主机' ;(修改权限时在后面加with grant option)

 

在my.ini中加入下面几个设置

innodb_flush_log_at_trx_commit = 0 #导入完成后改回1

innodb_doublewrite=OFF #导入完成后改回ON

max_allowed_packet=1073741824#导入完成后可以删除
net_buffer_length=1073741824#导入完成后可以删除

 

mysql命令行下执行以下语句:

set unique_checks = OFF;#关闭唯一约束检查

set sql_log_bin=0;#不写binlog

set SESSION sql_mode=”;#关闭长度检查,防止某些字段要导入的内容比字段设置的长度而导致导入一半失败了

 

设置每1000次事务提交一次binlog的缓存写入磁盘减少磁盘IO。(详见https://www.cnblogs.com/sky-cheng/p/11136943.html)

复制代码
mysql> set global sync_binlog=1000;

 

我在进行批量loaddata infile操作的时候,发现瓶颈是磁盘IO(HDD)。频繁的小文件寻道,10M/s就满占用了,通过将log与database分盘,也可以减少单盘的负荷:实际效果大概单盘占用降了60%,写入速度可以达到24M/s。

在所有log中bin-log和undo这两个是IO最频繁的,

但是windows下无法设置下面两项,加入设置后将导致mysql无法启动,我不明白原因

#innodb_undo_directory=J:/MySQLlog/
#innodb_data_file_path = J:/MySQLlog/ibdata1

所以退而求其次选择移动了其他log的位置,

general_log_file="J:/MySQLlog/FLEXQ_CMPT.log"
slow_query_log_file="J:/MySQLlog/FLEXQ_CMPT-slow.log"
log-error="J:/MySQLlog/FLEXQ_CMPT.err"
log-bin="J:/MySQLlog/FLEXQ_CMPT-bin"

innodb_data_home_dir = #没有这句不能设置下面两句
innodb_log_group_home_dir= J:/MySQLlog/
innodb_doublewrite_dir= J:/MySQLlog/

移动log位置后要将原来的data文件夹下的log打包复制到新路径下(因为我分不清哪个是哪个,就选择全部复制),还要注意赋予新文件夹network service完全控制的权限,否则mysql不能启动。

posted @ 2020-09-25 21:48  行远顺发  阅读(152)  评论(0)    收藏  举报