Linux mysql dump數(shù)據(jù)庫(kù)使用注意事項(xiàng)
dump 可以執(zhí)行類(lèi)似 tar 的功能。然而, dump 傾向于考慮文件系統(tǒng)而不是個(gè)別的文件。本文針對(duì)在使用過(guò)程中的Linux mysql dump命令的一些問(wèn)題做出解答。
一、要保證存放Linux mysql dump的目錄存在且進(jìn)程對(duì)該目錄有寫(xiě)權(quán)限。存放Linux mysql dump的目錄即進(jìn)程的當(dāng)前目錄,一般就是當(dāng)初發(fā)出命令啟動(dòng)該進(jìn)程時(shí)所在的目錄。但如果是通過(guò)腳本啟動(dòng),則腳本可能會(huì)修改當(dāng)前目錄,這時(shí)進(jìn)程真正的當(dāng)前目錄就會(huì)與當(dāng)初執(zhí)行腳本所在目錄不同。這時(shí)可以查看”/proc/<進(jìn)程pid>/cwd“符號(hào)鏈接的目標(biāo)來(lái)確定進(jìn)程真正的當(dāng)前目錄地址。通過(guò)系統(tǒng)服務(wù)啟動(dòng)的進(jìn)程也可通過(guò)這一方法查看。
二、若程序調(diào)用了seteuid()/setegid()改變了進(jìn)程的有效用戶或組,則在默認(rèn)情況下系統(tǒng)不會(huì)為這些進(jìn)程生成coredump。很多服務(wù)程序都會(huì)調(diào)用seteuid(),如mysql,不論你用什么用戶運(yùn)行mysqld_safe啟動(dòng)mysql,mysqld進(jìn)行的有效用戶始終是msyql用戶。如果你當(dāng)初是以用戶A運(yùn)行了某個(gè)程序,但在ps里看到的這個(gè)程序的用戶卻是B的話,那么這些進(jìn)程就是調(diào)用了seteuid了。為了能夠讓這些進(jìn)程生成coredump,需要將/proc/sys/fs/suid_dumpable文件的內(nèi)容改為1(一般默認(rèn)是0)
三、這個(gè)一般都知道,就是要設(shè)置足夠大的core文件大小限制了。程序崩潰時(shí)生成的core文件大小即為程序運(yùn)行時(shí)占用的內(nèi)存大小。但程序崩潰時(shí)的行為不可按平常時(shí)的行為來(lái)估計(jì),比如緩沖區(qū)溢出等錯(cuò)誤可能導(dǎo)致堆棧被破壞,因此經(jīng)常會(huì)出現(xiàn)某個(gè)變量的值被修改成亂七八糟的,然后程序用這個(gè)大小去申請(qǐng)內(nèi)存就可能導(dǎo)致程序比平常時(shí)多占用很多內(nèi)存。因此無(wú)論程序正常運(yùn)行時(shí)占用的內(nèi)存多么少,要保證生成core文件還是將大小限制設(shè)為unlimited為好。
【編輯推薦】