記錄一次mysql宕機的解決辦法

2022-04-01 15:11:06 字數 2219 閱讀 6280

首先先貼上出來我的錯誤資訊,如下:

2019-07-16t00:53:18.285919z 0 [system] [my-010116] [server] /usr/sbin/mysqld (mysqld 8.0.15) starting as process 18555

2019-07-16t00:53:18.506674z 0 [error] [my-012681] [innodb] mmap(137428992 bytes) failed; errno 12

2019-07-16t00:53:18.506740z 1 [error] [my-012956] [innodb] cannot allocate memory for the buffer pool

2019-07-16t00:53:18.506757z 1 [error] [my-012930] [innodb] plugin initialization aborted with error generic error.

2019-07-16t00:53:18.509371z 1 [error] [my-010334] [server] failed to initialize dd storage engine

2019-07-16t00:53:18.510501z 0 [error] [my-010020] [server] data dictionary initialization failed.

2019-07-16t00:53:18.513074z 0 [error] [my-010119] [server] aborting

2019-07-16t00:53:18.518947z 0 [system] [my-010910] [server] /usr/sbin/mysqld: shutdown complete (mysqld 8.0.15) mysql community server - gpl.

可以看到服務啟動失敗,關鍵看這麼一句:cannot allocate memory for the buffer pool。表明的意思是不能再給innodb的快取池分配記憶體了。想到的我的伺服器記憶體很小,才1g,十分有可能是這個原因,進而查資料得知innodb_buffer_pool_size這個預設值是128m,我通過free檢視了我的記憶體剩餘200多兆,但是沒有設定swap分割槽大小,或許就是因為系統本身所需記憶體也不足無法為服務分配空間而導致的服務宕機吧。

那麼,接下來我做的事情就兩步了:

其一:修改innodb_buffer_pool_size的大小,放置在mysql的配置檔案中,我的配置檔案是在/etc/mysql/mysql.conf.d/mysqld.cnf中,你們的可能是在/etc/mysql/my.cnf下,根據實際情況來吧。

[mysqld]

pid-file = /var/run/mysqld/mysqld.pid

socket = /var/run/mysqld/mysqld.sock

datadir = /var/lib/mysql

log-error = /var/log/mysql/error.log

innodb_buffer_pool_size = 64m # add here,default is 128m

bind-address = 0.0.0.0

其二:為系統swap分割槽分配乙個值,swap存在的本身作用也就是在系統的物理記憶體(這裡應該是執行記憶體)不夠用的時候,把物理記憶體中的一部分空間釋放出來,以供當前執行的程式使用。用以下命令建立乙個swap檔案掛載在系統上,需要你在root許可權下執行這些操作。

dd if=/dev/zero of=/swapfile bs=1m count=1024

mkswap /swapfile

swapon /swapfile

然後新增/swapfile swap swap defaults 0 0/etc/fstab檔案裡面。【作用是保證重啟系統前面的操作不會丟失,要讓系統重啟的時候能自動掛載,需要在fstab檔案中配置掛載項。】

label=cloudimg-rootfs	/	 ext4	defaults	0 0

/swapfile swap swap defaults 0 0 # add here

最後重啟一下mysql就可以了。

記一次mysql宕機

e warning pdo prepare mysql server has gone away pdo prepare mysql server has gone awayilluminate database queryexception sqlstate hy000 2002 connecti...

記錄一次統計首頁MYSQL非常慢的解決過程

select resource size int from t resource info where release status in 1,3 and res type in 1,2,4,5 and resource size int 0 and group id 1 limit 0,1000 ...

記錄一次kworkerds挖礦木馬的解決

top檢視程序資訊,發現有幾個名為kworkerds的程序,即為挖礦程序 使用crontab l命令檢視系統定時任務,發現了它的定時任務 pastebin是任意上傳分享的平台,攻擊者藉此實現匿名,於是訪問想看看指令碼是什麼樣的,可是好像被刪掉了,有點小遺憾。進入 var spool cron將對應的...