MySQL日常巡檢主要包括監(jiān)控?cái)?shù)據(jù)庫(kù)運(yùn)行狀況、備份容災(zāi)、集群狀況、緊急故障頻率、改進(jìn)建議等,可使用MySQL巡檢模版進(jìn)行操作。
MySQL日常巡檢都要檢查哪些項(xiàng),該怎么巡檢?來,給你一個(gè)MySQL巡檢模版。
1. 巡檢目的
? 監(jiān)控?cái)?shù)據(jù)庫(kù)的當(dāng)前運(yùn)行狀況,確保數(shù)據(jù)庫(kù)穩(wěn)定運(yùn)行。
? 監(jiān)控?cái)?shù)據(jù)庫(kù)的備份或容災(zāi)或集群狀況,減少問題發(fā)生時(shí)的風(fēng)險(xiǎn)和責(zé)任。
? 盡可能減少緊急故障發(fā)生頻率。
? 盡早發(fā)現(xiàn)系統(tǒng)存在的潛在問題,使可能的故障消除在萌芽狀態(tài)。
? 提出相應(yīng)的合理改進(jìn)建議。
2. 基本信息
主機(jī)名 | IP地址 | 系統(tǒng)版本 | 硬件配置 | MySQL版本 | 工作模式 | 數(shù)據(jù)庫(kù)端口 | 數(shù)據(jù)庫(kù)分配內(nèi)存 |
---|---|---|---|---|---|---|---|
db1 | xxx.xxx.xxx.xxx | CentOS Linux release 7.9.2009 (Core) | Intel(R) Xeon(R) Gold 6230R CPU @ 2.10GHz,4核,16G內(nèi)存 | mysqld Ver 5.7.35-38-57 | 主從/主主/PXC/MGR | 3306 | innodb_buffer_pool_size 6G |
db2 | xxx.xxx.xxx.xxx | CentOS Linux release 7.9.2009 (Core) | Intel(R) Xeon(R) Gold 6230R CPU @ 2.10GHz,4核,16G內(nèi)存 | mysqld Ver 5.7.35-38-57 | 主從/主主/PXC/MGR | 3306 | innodb_buffer_pool_size 6G |
db3 | xxx.xxx.xxx.xxx | CentOS Linux release 7.9.2009 (Core) | Intel(R) Xeon(R) Gold 6230R CPU @ 2.10GHz,4核,16G內(nèi)存 | mysqld Ver 5.7.35-38-57 | 主從/主主/PXC/MGR | 3306 | innodb_buffer_pool_size 6G |
3. 巡檢項(xiàng)目
3.1 硬件配置信息
檢查項(xiàng) | 檢查命令 | 巡檢值 |
---|---|---|
主機(jī)名 | hostname | |
服務(wù)器型號(hào) | dmidecode -t 1 | |
cpu型號(hào) | cat /proc/cpinfo | |
物理內(nèi)存 | cat /proc/meminfo或free -m | |
ip 地址 | ifconfig -a | |
操作系統(tǒng) | lsb_release -a 或 cat /proc/version |
3.2 系統(tǒng)資源檢查
檢查項(xiàng) | 檢查命令 | 參考值 | 檢查結(jié)果 |
---|---|---|---|
物理內(nèi)存使用情況 | vmstat 2 10 | 正常情況,不要用到swap | |
CPU使用情況 | sar -u 2 10 | 越低越好,不超過80% | |
磁盤可使用空間 | df -h | 不超過80% | |
磁盤inode使用率 | df -i | 不超過80% | |
磁盤負(fù)載 | iostat -dxm 1 | util應(yīng)在100%以內(nèi)(或者瓶頸),%wa很高,可能存在IO瓶頸 | |
系統(tǒng)內(nèi)核參數(shù)設(shè)置 | cat /etc/sysctl.conf |
3.3 數(shù)據(jù)庫(kù)巡檢
巡檢項(xiàng) | 巡檢命令 | 參考值 | 檢查結(jié)果 |
---|---|---|---|
mysql進(jìn)程檢查 | ps -ef|grep mysqld | 進(jìn)程應(yīng)存在,進(jìn)程port以及datadir | |
超大庫(kù)檢查 | du -sh 每個(gè)數(shù)據(jù)庫(kù)目錄 | ||
數(shù)據(jù)庫(kù)版本 | select version() | ||
數(shù)據(jù)庫(kù)大小 | SELECT table_schema "Database name", sum( table_rows ) "No. of rows", sum( data_length ) / 1024 / 1024 "Size data (MB)", sum( index_length )/ 1024 / 1024 "Size index (MB)" FROM information_schema.TABLES GROUP BY table_schema; | ||
自增ID使用 | SELECT table_schema, table_name, ENGINE, Auto_increment FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN ( "INFORMATION_SCHEMA", "PERFORMANCE_SCHEMA", "MYSQL", "SYS") limit 30; | ||
存儲(chǔ)引擎不是innodb的表 | SELECT TABLE_SCHEMA, TABLE_NAME,ENGINE FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE != 'innodb' AND TABLE_SCHEMA NOT IN ( "INFORMATION_SCHEMA", "PERFORMANCE_SCHEMA", "MYSQL", "SYS" ); | ||
無主鍵的表 | SELECT t1.table_schema, t1.table_name, t1.table_type FROM information_schema.TABLES t1 LEFT OUTER JOIN information_schema.TABLE_CONSTRAINTS t2 ON t1.table_schema = t2.TABLE_SCHEMA AND t1.table_name = t2.TABLE_NAME AND t2.CONSTRAINT_NAME IN ( 'PRIMARY' ) WHERE t2.table_name IS NULL AND t1.TABLE_SCHEMA NOT IN ( 'information_schema', 'performance_schema', 'test', 'mysql', 'sys' ) AND t1.table_type = "BASE TABLE"; | ||
運(yùn)行線程狀態(tài)查詢 | show full processlist; | 查看當(dāng)前并發(fā) 線程是否狀態(tài)正常。檢查state列是否存在wait for xxx lock的狀態(tài),如果有則存在鎖事務(wù); | |
InnoDB死鎖檢查 | show engine innodb status; | 查看LATEST DETECTED DEADLOCK輸出段,若存在,則需要摘取相應(yīng)的語句。 | |
InnoDB長(zhǎng)事務(wù)檢查 | show engine innodb status; | 檢查TRANSACTIONS輸出段,看是否存在ACTIVE時(shí)間 過長(zhǎng)的事務(wù),若存在,則需要關(guān)注 | |
指定TCP/IP 連接的偵聽隊(duì)列的大小 | show variables like 'back_log%'; | back_log 參數(shù)的值指出在MySQL暫時(shí)停止響應(yīng)新請(qǐng)求之前的短時(shí)間內(nèi)多少個(gè)請(qǐng)求可以被存在堆棧中。如果系統(tǒng)在一個(gè)短時(shí)間內(nèi)有很多連接,則需要增大該參數(shù)的值。不同的操作系統(tǒng)在這個(gè)隊(duì)列。默認(rèn)值為50。對(duì)于Linux系統(tǒng)推薦設(shè)置為小于512的整數(shù)。 | |
max_allowed_packet包的值 | show variables like 'max_allowed_packet%'; | 客戶端和服務(wù)器均有自己的max_allowed_packet變量,如打算處理大的信息包,必須增加客戶端和服務(wù)器上的該變量。一般情況下,服務(wù)器默認(rèn)max-allowed-packet為1MB | |
交互式連接超時(shí)時(shí)間 | show variables like 'interactive_timeout%'; | 交互式連接超時(shí)時(shí)間(mysql工具、mysqldump等), 參數(shù)默認(rèn)值:28800秒(8小時(shí)),建議調(diào)小 | |
非交互式連接超時(shí)時(shí)間 | show variables like 'wait_timeout%'; | 非交互式連接超時(shí)時(shí)間,默認(rèn)的連接mysql api程序, jdbc連接數(shù)據(jù)庫(kù)等,參數(shù)默認(rèn)值:28800秒(8小時(shí)),建議調(diào)小 | |
skip_name_resolve | show variables like 'skip_name_resolve%'; | 使用該參數(shù)后可加快內(nèi)網(wǎng)地址的請(qǐng)求 | |
最大連接數(shù)檢查 | show global status like 'max_used_connections'; show global variables like 'max_connections'; | 若max_used_connections逼近max_connections,則需要調(diào)大max_connections。max_used_connections / max_connections * 100% (理想值≈ 85%) | |
當(dāng)前連接數(shù)檢查 | show global status like 'Threads_connected' | 應(yīng)小于max_connections | |
異常連接檢查 | show global status like 'aborted%'; | 檢查Aborted_clients以及Aborted_connects值是否正常 | |
開啟binlog日志 | show variables like 'log_bin%'; | binlog日志開啟,能實(shí)時(shí)記錄保存DML操作 | |
binlog保留天數(shù) | show variables like 'expire_logs_days%'; | 讓mysql自動(dòng)清理若干天前的binlog | |
文件打開限制數(shù) | show variables like 'open_files_limit%'; | ||
線程池緩存大小 | show variables like 'thread_cache_size%'; | ||
排序緩沖區(qū)大小 | show variables like 'sort_buffer_size%'; | ||
內(nèi)連接緩沖區(qū)大小 | show variables like 'join_buffer_size%'; | ||
InnoDB存儲(chǔ)引擎緩存分配大小 | show global variables like 'innodb_buffer_pool_size'; | 物理內(nèi)存的 50% - 75% | |
show global variables like 'innodb_io_capacity'; | sata/sas硬盤這個(gè)值在200 sas raid10: 2000 ssd硬盤:8000 fusion-io(閃存卡):25,000-50,000 | ||
表緩存檢查 | show global status like '%opened_tables%'; show variables like '%table_open_cache%'; | 若opened_tables過大,則需要調(diào)大 table_open_cache值 | |
查詢緩存檢查 | show variables like '%query_cache%' | 一般情況下,需要禁用query_cache。 | |
表緩存檢查 | show global status like '%opened_tables%'; show variables like '%table_open_cache%'; | 若opened_tables過大,則需要調(diào)大 table_open_cache值 | |
InnoDB獨(dú)立表空間 | show variables like 'innodb_file_per_table%'; | ||
InnoDB打開文件數(shù) | show variables like 'innodb_open_files%'; | ||
InnoDB并發(fā)線程 | show variables like 'innodb_thread_concurrency%'; | ||
InnoDB將緩存中的redo日志回寫到日志文件的設(shè)置 | show variables like 'innodb_flush_log_at_trx_commit%'; | 建議設(shè)為1 | |
show variables like 'sync_binlog%'; | 建議設(shè)為1 | ||
InnoDB日志緩沖大小 | show variables like 'innodb_log_buffer_size%'; | ||
InnoDB日志文件大小 | show variables like 'innodb_log_file_size%'; | ||
InnoDB日志文件組 | show variables like 'innodb_log_files_in_group%'; | ||
QPS檢查 | show status like 'queries'; 間隔執(zhí)行,通過兩次的間隔時(shí)間做差值,計(jì)算QPS | ||
讀寫比檢查 | show status like 'com_%' | 讀請(qǐng)求是com_select; 寫請(qǐng)求是com_insert; com_update;com_delete 通過統(tǒng)計(jì)讀寫的請(qǐng)求數(shù),算出讀寫比例。 | |
InnoDB Buffer Pool檢查 | show status like 'Innodb_buffer_pool_read_requests'; show status like 'Innodb_buffer_pool_reads'; | Innodb_buffer_pool_reads/ Innodb_buffer_pool_read_requests 為緩存未命中率, 若此值過高,則需要調(diào)大innodb_buffer_pool_size | |
臨時(shí)表檢查 | show global status like '%tmp%'; | 如果Created_tmp_tables, Created_tmp_disk_tables或者 Created_tmp_files較高, 則需要排查慢查詢(子查詢、排序、分組等) | |
存儲(chǔ)引擎 binlog 磁盤使用比例 | Binlog_cache_disk_use / Binlog_cache_use show global status like 'Binlog_cache_disk_use'; show global status like 'Binlog_cache_use'; | 越低越好 | |
存儲(chǔ)引擎磁盤臨時(shí)表創(chuàng)建數(shù) | show global status like 'Created_tmp_disk_tables'; | 越低越好 | |
存儲(chǔ)引擎全表掃描比例 | (Handler_read_rnd_next + Handler_read_rnd) / (Handler_read_rnd_next + Handler_read_rnd + Handler_read_first + Handler_read_next + Handler_read_key + Handler_read_prev) | 越低越好 | |
存儲(chǔ)引擎索引使用率 | (Handler_read_first + Handler_read_key + Handler_read_next + Handler_read_prev show global status like 'Handler_read_first'; show global status like 'Handler_read_key'; show global status like 'Handler_read_next'; show global status like 'Handler_read_prev'; | 99% 以上 | |
存儲(chǔ)引擎空余內(nèi)存大小 | show global status like 'Innodb_buffer_pool_pages_free'; | 引擎緩存的 80% - 90% | |
存儲(chǔ)引擎重做日志等待 | show global status like 'Innodb_log_waits'; show global status like 'Innodb_log_writes'; Innodb_log_waits / Innodb_log_writes | 幾乎為0 | |
存儲(chǔ)引擎表鎖等待比例 | Table_locks_waited / (Table_locks_waited + Table_locks_immediate) show global status like 'Table_locks_waited'; show global status like 'Table_locks_immediate'; | 幾乎為0 | |
存儲(chǔ)引擎線程緩存 | show global status like 'threads_created'; | 1000以下, threads_created/connections為緩存未命中率, 若此值過高,則需要調(diào)大thread_cache_size | |
并發(fā)線程查詢 | show global status like 'threads_running%'; | 應(yīng)小于10,過大,說明并發(fā)數(shù)太多,存在慢語句 | |
備份檢查 | cat /backup/hostname | cut -d . -f 1 /backup/date +%F -d "a day ago" /xtrabackup_time.txt grep completed /backup/$dir_name/backup/$dtime/xtrabackup_log* | 檢查備份成功與否,耗時(shí)多久 | |
PXC同步狀態(tài)檢查 | show global status where variable_name in ('wsrep_cluster_status','wsrep_local_state','wsrep_local_state_comment','wsrep_connected','wsrep_ready','wsrep_cluster_size','wsrep_desync_count','wsrep_incoming_addresses'); | wsrep_local_state_comment為Synced狀態(tài) wsrep_cluster_status為Primary wsrep_connected為ON wsrep_ready為ON | |
主從復(fù)制狀態(tài)檢查 | show slave status; | 查看線程是否正常,延遲是否存在 | |
最近7天的error log | grep -i -E 'error' ${errorlog} | grep -E '${errortime}' | 查看error日志是否有報(bào)錯(cuò) | |
慢查詢?nèi)罩鹃_啟 | show variables like '%slow%'; | 檢查慢查詢?nèi)罩臼欠耖_啟,若開啟,檢查慢日志文件中的語句。 | |
慢查詢查詢時(shí)間 | show variables like 'long_query_time%'; | 慢查詢查詢時(shí)間超多久會(huì)寫日志 |
4. 總結(jié)及建議
總結(jié):
對(duì)服務(wù)器性能的現(xiàn)狀進(jìn)行描述
若有隱患可指出
建議:
針對(duì)隱患,指出可能的解決辦法
關(guān)注我,后臺(tái)回復(fù)關(guān)鍵詞“MySQL巡檢”,可下載該MySQL巡檢模版。
原文來源:https://mp.weixin.qq.com/s/Z33O-B_7qLd_Kgur_WW1xg
來源:本文內(nèi)容搜集或轉(zhuǎn)自各大網(wǎng)絡(luò)平臺(tái),并已注明來源、出處,如果轉(zhuǎn)載侵犯您的版權(quán)或非授權(quán)發(fā)布,請(qǐng)聯(lián)系小編,我們會(huì)及時(shí)審核處理。
聲明:江蘇教育黃頁對(duì)文中觀點(diǎn)保持中立,對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或者完整性不提供任何明示或暗示的保證,不對(duì)文章觀點(diǎn)負(fù)責(zé),僅作分享之用,文章版權(quán)及插圖屬于原作者。
Copyright?2013-2024 JSedu114 All Rights Reserved. 江蘇教育信息綜合發(fā)布查詢平臺(tái)保留所有權(quán)利
蘇公網(wǎng)安備32010402000125
蘇ICP備14051488號(hào)-3技術(shù)支持:南京博盛藍(lán)睿網(wǎng)絡(luò)科技有限公司
南京思必達(dá)教育科技有限公司版權(quán)所有 百度統(tǒng)計(jì)