最近用Mysql的問題

來源:互聯網
上載者:User

最近用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多個表,這邊一個線程重放,當然跟不上。原系統如果要加寫緩衝,估計又是一個浩大的工程。網上據說是有多線程重放的解決方案,不過沒開放源碼啊。有高招嗎?這主從複製看來是白做了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.