mysql myisammaxsortfilesize_最近用Mysql的问题

最近用Mysql悲催的遇到不少问题,谁让老东家有一堆DBA呢,原来不关心,自己用就gepi了。各种求指教啊。 1. 坑爹的repair 线上机器,配置应该是半年前的主流配置。CentOS 5。有个表老大了(其实也才250G,MyISAM,索引文件8G),而且前面的数据都删过。插入速度贼慢,比虚机里的Mysql都慢(插入内容和方式完全相同的情况下)。 于是觉得,做optimize吧。兴冲冲就上了,结果3个小时后,状态一直为repair by sort,其生成的tmp file才6G,而且修改时间在1个半小时前。 当时就觉得不对了,再慢你得有动作把?1个半小时跑什么呢?于是kill optimize table,结果大家都知道,表被标记为crash了。于是还得老老实实的repair table。我心里想着,咋这么慢捏,一搜,说repair by keycache很慢,repair by sort比by keycache来说还是快了不少的。我一看,我是repair by sort啊。在后续一些事情以后,干脆等了。等了1天半,30多个小时,repair好了。文件从250G变成了91G。话说repair by sort有这么慢么??我知道你是单线程的,但是跑300G的文件也不用30个小时吧。。。 2.  坑爹的scp/rsync,求指教,求骂 还是上面的事情,repair期间我当然不想闲着(CPU Idle 95%以上,IO也很轻),于是当然想把文件拷到其他机器上去试试。结果scp的速度只有10MB/s,中途上到了60MB/s,不到40%时跌到了1MB/s,我哭啊!于是本机本地cp。结果算下来cp的平均速度是68MB/s。线上RAID机器,用cp就这速度么?真心求指教,链接地址也行啊。 3. 坑爹的参数配置 噢,还是上面的事情。本机cp以后,终于scp到了另一台空线上机器上。速度搭mysql,版本5.1.49-log Source distribution。 上去直接repair table。结果。。。它repair by keycache了。我的娘啊! 搜索原因。大部分帖子说,1. myisam_max_sort_file_size要足够大。2. tmpdir可用空间要够大。 我瞧了瞧,tmpdir的确指向了mysql/tmp,可用空间900G。把myisam_max_sort_file_size改为1600G,重启Mysqld。仍然是repair by keycache。我无语了。 停mysqld,网上说有个工具叫myisamchk,于是拿来使。 myisamchk -r -p -n -q ./data/test/big -t=/home/work/local/mysql/tmp/ 提示我myisam_max_sort_file_size不够大。还提示说也可以使用repair by keycache的方式。NND,气我嘛,于是加参数--myisam_max_sort_file_size=4096000000000 结果怎么着?unknown variable ’myisam_max_sort_file_size=4096000000000‘ 我满头黑线:不是你告诉我这参数不够大来着?? 试了max_sort_file_size,sort_file_size,均不认。 最后试试sort_buffer_size,它居然欢快的跑起来了!! 不是要用myisam_max_sort_file_size吗?sort_buffer_size不是per session的吗?我可是设了4T啊!远远超出内存啊! 不过跑了几个小时,发现和原来在Mysql中跑repair一样的速度,里面的-p参数一点用也没有,16个逻辑核心就一个用到底了,其他的基本上没有使用。。。。 于是直接停了。 突发奇想,把my.cnf里的myisam_max_sort_file_size注释掉,把sort_buffer_size改为4096G,重启mysqld,repair,果然repair by sort了。各位不信,随时可以复现。 4. 坑爹的主从复制 恩。其实主从复制没什么坑爹的,很快就弄好了(当然那个大库不在replicate-do-db里面)。又费劲搞了一下配置,O了,简单的看Seconds_Behind_Master,大概1000秒。 到晚上一看,怎么变3000秒了?再看,Slave_to_Runing和Slave_SQL_running都是Yes。与上午的某个表的状态对比,的确是有新数据同步过来。 到第2天上班,直接就到2w秒了。网上一搜,一是网络IO和文件IO,一看不是;二是replicate的重放是单线程的。倒! 我原数据库基本上是16路并发在一刻不停的修改20多个表,这边一个线程重放,当然跟不上。原系统如果要加写缓存,估计又是一个浩大的工程。网上据说是有多线程重放的解决方案,不过没开放源码啊。有高招么?这主从复制看来是白做了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值