<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Linux 系統中的 systemd 和 mysqld_safe 會在 mysqld 程序 crash 後自動重新啟動 MySQL 的服務,需要注意的是使用 kill -9 殺死 mysqld 程序系統會自動重新啟動,而只使用 kill 命令則不會重新啟動,因為執行 kill 命令,系統會傳送一個 SIGTERM 訊號給 mysqld,mysql 資料庫會正常關閉,紀錄檔中會出現類似下面的記錄:
2020-10-26T09:06:48.435181Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.19) MySQL Community Server - GPL.
MySQL 資料庫 crash 後都會重新啟動,因此我們有時可能不知道 MySQL 資料庫已經 crash 過了,但我們可以從mysql資料庫啟動時間上找到線索,下面介紹四種檢查 MySQL 資料庫啟動時間的方法。
scutech@scutech:~$ service mysql status ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-10-21 05:54:18 NDT; 4 days ago Process: 774 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid (code=exited, status=0/SUCCESS) Process: 708 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 791 (mysqld) Tasks: 27 (limit: 2328) CGroup: /system.slice/mysql.service └─791 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
顯示 MySQL 資料庫已經執行 4 天多。
mysql> show global status like 'uptime'; +---------------+--------+ | Variable_name | Value | +---------------+--------+ | Uptime | 428334 | +---------------+--------+ 1 row in set (0.32 sec)
這個值是以秒為單位,下面換算成以天為單位是 4 天多。
mysql> select 428334/60/60/24; +-----------------+ | 428334/60/60/24 | +-----------------+ | 4.957569444444 | +-----------------+ 1 row in set (0.01 sec)
查詢 uptime 狀態的另一種方法是使用 mysqladmin version 或在 mysql 使用者端裡用 “s” 進行查詢。
使用 ps 命令查詢發現 mysqld 啟動了4天23小時3分種54秒
scutech@scutech:~$ ps -eo pid,user,args,etime|grep mysqld 791 mysql /usr/sbin/mysqld --daemoniz 4-23:03:54
找關鍵字 “ready for connections”,可以查到啟動資訊。
2020-10-21T08:24:18.986765Z 0 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.7.28-log' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)
MySQL 資料庫 crash 的最常見原因有兩個,一個是 mysql 的 bug , 另一個是 mysql 申請系統資源失敗或記憶體漏失。
MySQL資料庫 crash 的最常見的一個原因當然是 MySQL 的bug。95% 的 bug 都是和具體的 sql 相關,通常是 MySQL crash 前執行的最後一個 sql 有問題,因此定位 bug 時應開啟 general query log ,根據最後一個 sql 來查詢線索。
當你確定了 crash 的原因後,應該檢查一下 MySQL 的 bug 庫(https://bugs.mysql.com),通常採用 Advanced search,看看有沒有類似的問題。如果你找到了可能與你相關的 bug,確認它是否修復了。如果已經修復了,那麼把 MySQL 升級到 bug 已經修復的版本。
在每個版本的 Release Notes 裡面有一節 Bugs Fixed ,可以查到修復的 bug 。
記憶體不足或 MySQL 申請系統資源失敗外都會造成 MySQL 崩潰,例如磁碟空間滿了,磁碟上的檔案 corrupt 等。此時需要定位 crash 的根本原因有下面幾種方法:
全域性記憶體
innodb_buffer_pool_size innodb_log_buffer_size thread_cache_size table_open_cache table_definition_cache key_buffer_size
執行緒記憶體
binlog_cache_size thread_stack
單次操作記憶體
join_buffer_size read_buffer_size read_rnd_buffer_size tmp_table_size sort_buffer_size
計算公式
MySQL 8 中最大記憶體佔用參考值計算公式:
SELECT ( @@innodb_buffer_pool_size + @@innodb_log_buffer_size + @@key_buffer_size + @@max_connections * (@@binlog_cache_size + @@thread_stack + @@read_buffer_size + @@read_rnd_buffer_size + @@sort_buffer_size + @@join_buffer_size + @@tmp_table_size ) ) / 1024 /1024 AS MAX_MEM_MB;
innodb_buffer_pool_size
臨時解決可以使用下面的命令釋放快取:
echo 1 > /proc/sys/vm/drop_caches
0:0是系統預設值,預設情況下表示不釋放記憶體,由作業系統自動管理
1:釋放頁快取
2:釋放dentries和inodes
3:釋放所有快取
從長遠看還是要修改對應的引數進行解決。
MySQL 使用者端的記憶體漏失時通常會有下面的提示
mysql: Out of memory at line 42, 'malloc.c'
mysql: needed 8136 byte (8k), memory in use: 12481367 bytes (12189k)
ERROR 2008: MySQL client ran out of memory
這通常是使用者端收到的返回結果集太大造成的,解決辦法有兩種:
檢查正在執行的 SQL ,看看您真的需要這麼大的返回結果集嗎?
允許 mysql 時加上 --quick 選項,這會減少使用者端單次收到的返回集,但會增加 mysqld 的負載。
到此這篇關於淺談MySQL資料庫崩潰(crash)的常見原因和解決辦法的文章就介紹到這了,更多相關MySQL資料庫崩潰內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45