MySQL數據庫巡檢步驟

MySQL巡檢
系統基本信息

機型號
IP
CPU
內存
磁盤
(業務)系統信息
操作系統
主機名

操作系統巡檢

檢查內容 說明 檢查方法 結果(異常需詳細說明) 正常輸出結果
系統配置檢查 操作系
統版本 #uname –a □正常 □異常 顯示系統版本和核心補丁信息
系統I/O檢查 檢查系統I/O負載情況 #iostat、top □正常 □異常 Top中CPUS中的%wa與iostat中的%iowait不應同時有值
系統CPU檢查 檢查系統CPU負載情況 #top、
Cat/proc/cpuinfo □正常 □異常 %wa(等待)的時間無或者較小
系統內存檢查 檢查系統內存負載情況 #vmstat、free □正常 □異常 Swap中的so有值證明內存不足
系統網絡檢查 檢查系統網絡連通性 #ping、telnet □正常 □異常 網絡可連通

MySQL監控類巡檢
1、TPS/QPS
1.1、TPS
tps: Transactions Per Second,每秒事務數;
TPS = Com_commit/s + Com_rollback/s

Com_commit /s= mysqladmin extended-status --relative --sleep=1|grep -w Com_commit
Com_rollback/s = mysqladmin extended-status --relative --sleep=1|grep -w Com_rollback

理想狀態:
參照日常數,當出現峰值時告警

1.2、QPS
qps: Queries Per Second每秒查詢數;
QPS = mysqladmin extended-status --relative --sleep=1|grep -w Questions

理想狀態:
參照日常數,當出現峰值時告警

2、innodb_buffer_pool_status

innodb_buffer_pool_reads: 平均每秒從物理磁盤讀取頁的次數?
innodb_buffer_pool_read_requests: 平均每秒從innodb緩沖池的讀次數(邏輯讀請求數)
innodb_buffer_pool_write_requests: 平均每秒向innodb緩沖池的寫次數
innodb_buffer_pool_pages_dirty: 平均每秒innodb緩存池中臟頁的數目
innodb_buffer_pool_pages_flushed: 平均每秒innodb緩存池中刷新頁請求的數目

innodb緩沖池的讀命中率
innodb_buffer_read_hit_ratio =?( 1 - Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests) * 100
Innodb緩沖池的利用率
Innodb_buffer_usage =? ( 1 - Innodb_buffer_pool_pages_free / Innodb_buffer_pool_pages_total) * 100

理想狀態:
參照日常數,當出現峰值時告警;
當緩沖池的讀命中率較低時可以適當的增大innodb_buffer_pool或檢查SQL語句

3、slow_queries status
執行時間超過long_query_time秒的查詢的個數

理想狀態:
查詢值波動不大,若出現大量慢查詢,需檢查近期上線的SQL語句

4、Sort status
mysql> show global status like ‘%sort%’ ;

Sort_merge_passes
Sort_range
Sort_rows
Sort_scan

理想狀態:
Sort_merge_passes表示當需要排序時,在排序緩沖中無法將結果完全存放,則將會基于磁盤創建臨時文件進行排序。如果該值較高,則應提高sort_buffer_size大小。最好的辦法是找到是由哪些排序SQL造成的。

5、select status
5.1、select_scan
對表進行完全掃描的聯接的數量
mysql> show global status like ‘select_scan’ ;

理想狀態:
恒定的值,不會隨時間增長而有明顯的增長。

5.2、select_full_join
沒有主鍵(key)聯合(Join)的執行。該值可能是零。這是捕獲開發錯誤的好方法,因為一些這樣的查詢可能降低系統的性能。
mysql> show global status like ’ select_full_join ’ ;

理想狀態:
出現full join的次數,如果該值不為0,需要檢查表上是否有合適的索引

6、Lock status
mysql> show global status like ’ table_locks%’ ;
table_locks_immediate表示立即釋放表鎖數;
table_locks_waited表示需要等待的表鎖數;

理想狀態:
table_locks_waited如果該值很大,而且性能很慢,建議針對業務拆分主表

7、Thread status
mysql> show global status like ‘thread%‘;
Threads_cached
Threads_connected
Threads_created
Threads_running

理想狀態:
threads_created表示創建過的線程數,如果發現threads_created值過大的話,表明mysql服務器一直在創建線程,這也是比較耗資源,可以適當增加配置文件中thread_cache_size值,

MySQL參數類巡檢
1、Connections settings
1.1、max_connections
查詢服務器最大連接數
mysql> show variables like ‘max_connections‘;
查詢服務器響應的最大連接數
mysql> show global status like ‘max_used_connections’;

理想狀態:
?max_used_connections / max_connections * 100% ≈ 85%;
error_log中未出現MySQL: ERROR 1040: Too many connections該類錯誤。

1.2、Aborted_connects
查詢服務器嘗試已經失敗的MySQL服務器的連接的次數;
mysql> show global status like ‘Aborted_connects’;

理想狀態:
固定值,不隨時間增長而增長(或增長幅度較小),若該數出現持續增長,需檢查
連接狀況或錯誤日志,定位異常連接主機(一般為應用賬號密碼問題)。

1.3、Aborted_clients

查詢服務器異常客戶端數(由于客戶沒有正確關閉連接已經死掉,已經放棄的連接數量);
mysql> show global status like ‘Aborted_clients’;

理想狀態:
固定值,不隨時間增長而增長(或增長幅度較小),若該數出現持續增長,需檢查
連接狀況或錯誤日志,定位異常連接主機(一般為程序邏輯開啟連接后未正常關閉)。

2、innodb settings
2.1、innodb_buffer_pool_size
查詢innodb存儲引擎數據緩存大小
mysql> show variables like ‘innodb_buffer_pool_size ‘;

理想狀態:
建議設置為物理內存的60%~80%,或根據業務決定

2.2、innodb_io_capacity
配置刷新I/O操作性能,此參數可以限制I/O操作
mysql> show variables like ‘innodb_io_capacity ‘;

理想狀態:
根據實際磁盤情況設置
innodb_io_capacity 磁盤配置
200 單盤SAS/SATA
2000 SAS*12 RAID 10
5000 SSD
20000 FUSION-IO

2.3、innodb_flush_neighbors
刷新相同extent臟塊
mysql> show variables like ‘innodb_flush_neighbors ‘;

理想狀態:
默認為1,建議開啟,在SSD環境建議配置為0

2.4、innodb_print_all_deadlocks
記錄死鎖記錄
mysql> show variables like ‘innodb_print_all_deadlocks ‘;

理想狀態:
默認關閉,建議開啟

2.5、innodb_lock_wait_timeout
InnoDB行鎖等待時間
mysql> show variables like ‘innodb_lock_wait_timeout ‘;

理想狀態:
默認為50秒,建議配置為5秒

2.6、innodb_flush_method
配置刷新方法
mysql> show variables like ‘innodb_flush_method ‘;

理想狀態:
Linux系統MySQL建議配置為:O_DIRECT

3、Log Settings
3.1、binlog settings
3.1.1、binlog_format
binlog日志格式
mysql> show variables like ‘binlog_format ‘;

理想狀態:
建議配置為row格式,特殊業務情況另考慮
3.1.2、binlog_rows_query_log_events
寫log 事件(例如 行操作日志時間)到binglog
mysql> show variables like ‘binlog_rows_query_log_events ‘;

理想狀態:
默認為:0,建議配置為:1
注:此參數需要在binlog格式為ROW下配置

3.1.3、sync_binlog
控制binlog 同步磁盤方式
當sync_binlog=1時,所有的事務都在提交前寫入binlog。因此即使binlog事件遇到意外重啟,一些在prepared狀態的binlog會丟失。這導致服務器在恢復數據時自動回滾這些事務。這確保了從binlog不丟失事務,因此是最安全的選項。事實上,這增加了同步到磁盤的總次數。但是從MySQL5.6開始,已經支持組提交和合并同步了,這使得出現性能問題的可能性最小化了。
當sync_binlog=0時,mysql-server并不把binlog同步到磁盤,而是依賴操作系統把binlog的內容同步到磁盤。因此,當出現掉電或操作系統崩潰時,很可能出現已經提交的事務沒有被同步到磁盤的情況。因此mysql在自動恢復時無法恢復這些事務,他們從binlog中丟失了。
所以說,新的默認設置sync_binlog=1更安全。

mysql> show variables like ‘binlog_rows_query_log_events ‘;

理想狀態:
設置sync_binlog=1更安全。

3.1.4、expire_logs_days
自動清理二進制日志的天數
mysql> show variables like ‘expire_logs_days ‘;

理想狀態:
根據備份策略與業務要求設置(如備份保留的天數是一周,則expire_logs_days可設置為>7,如:8,業務要求隨時能提取1年內的數據,則設置>365)。

3.1.5、master_info_repository
slave 記錄 master 狀態和連接信息是否放在文件(master.info)或者是寫表(mysql.slave_master_info)
mysql> show variables like ‘master_info_repository ‘;

理想狀態:
默認為:file,建議配置為:table

3.1.6、relay_log_info_repository
slave 上的relay log的位置信息寫在文件(relay-log.info)或者是寫表(mysql.slave_relay_log_info)
mysql> show variables like ‘relay_log_info_repository ‘;

理想狀態:
默認為:file,建議配置為:table

3.1.7、slave_parallel_type& slave_parallel_workers
并行復制方法(庫級別,表級別)
mysql> show variables like ‘slave_parallel_type ‘;
并行復制線程數
mysql> show variables like ‘slave_parallel_workers ‘;

理想狀態:
slave_parallel_type
默認為:DATABASE,配置為:LOGICALC_CLOCK
Slave_parallel_workers
默認為:0,配置為:16

3.1.8、relay_log_recovery
在服務啟動時自動執行relay log 恢復操作
mysql> show variables like ‘relay_log_recovery ‘;

理想狀態:
默認關閉,建議開啟

3.2、slowlog settings
4.2.1、slow_query_log
是否開啟慢查詢日志
mysql> show variables like ‘slow_query_log ‘;

理想狀態:
默認為關閉慢查詢日志,建議開啟

3.2.2、Others
slow_query_log_file
慢查詢日志記錄文件

long_query_time
設置慢查詢日志的時間閥值(單位:秒)

min_examined_row_limit
設置檢查行數小于多少行數的查詢不記錄到慢查詢日志

log_queries_not_using_indexes
開啟后記錄沒有使用索引查找說有行的查詢;也會記錄使用索引查詢了所有行的查詢

理想狀態:
根據業務需求設置

3.3、generallog settings
記錄所有SQL語句,包含查詢甚至語法錯誤的語句都會被記錄
mysql> show variables like ‘generallog settings ‘;

理想狀態:
不建議開啟。在做測試的時候想知道MySQL都執行了什么命令的時候可以開啟。
4、mysqld settings
以下參數建議在配置文件中體現:

參數項 參考值 參數解釋
socket /tmp/mysql.sock 在unix環境下,指定用于本地連接的套接字文件
pid_file /opt/mysql/mysql.pid MySQL的進程文件路徑名稱
port 3306 MySQL的監聽端口
log_bin /opt/mysql/data/bin.log 開啟數據庫二進制
log_bin_index /opt/mysql/data/bin.index 二進制日志文件名的索引文件
server-id 2 服務器ID,在復制環境中主從服務器的唯一標識
datadir /opt/mysql/data MySQL數據目錄路徑
user mysql MySQL服務的運行用戶
interactive_timeout 300 關閉一個交互式連接等待的時間
wait_timeout 300 關閉一個非交付時連接等待的時間
read_buffer_size 16777216 MyISAM表順序掃描時分配的讀入緩沖區大小
read_rnd_buffer_size 33554432 MyISAM表隨機掃描時分配的讀入緩沖區大小
sort_buffer_size 33554432 每個回話進行排序的緩存大小
lower_case_table_names 1 表名大小寫敏感設置
character_set_server utf8mb4 MySQL服務器的默認字符集
skip_name_resolve 1 客服端連接數據庫時,不進行主機名解析
max_connections 2000 MySQL服務器允許的客服端最大連接數
transaction_isolation READ-COMMITTED MySQL服務器的默認事務隔離級別
join_buffer_size 134217728 不使用索引的連接、普通索引、范圍索引掃描的緩沖區最小值
tmp_table_size 67108864 內存臨時表的最大大小
tmpdir /tmp MySQL 臨時文件和臨時表存放目錄
max_allowed_packet 16777216 設置在網絡傳輸中一次消息傳輸量的最大值

Replication巡檢
查看master狀態
(master操作)
mysql> show master status\G

查看slave狀態
(slave操作)
mysql> show slave status\G

理想狀態:
1、線程正常:Slave_IO_Running、Slave_SQL_Running(狀態YES);
2、未出現延遲狀態:Seconds_Behind_Master 為0或較小、Master_Log_File與Relay_Master_Log_File相同;
3、?Last_Error無值,若報錯的話根據報錯信息與對應數據字典查看報錯信息。
查看slave_hosts狀態
(master操作)
mysql> show slave hosts\G

備份巡檢
1、不管庫數據量的大小,都應該有備份策略,并按時執行;
2、規范化備份路徑與文件名;
3、定期進行備份有效性檢測;
4、定期對備份保存數量檢查;
5、定期執行災難演練;

權限巡檢
1、收集現有系統所有用戶權限;
2、確定應用側業務需求與權限是否匹配;
3、回收額外權限;
4、維護權限文檔。

其他巡檢
1、高可用架構巡檢
2、數據庫中間件巡檢
其他規范
1、統一使用二進制包安裝(形成軟件庫)
2、統一軟件目錄
3、統一數據文件目錄
4、統一日志文件目錄
5、統一其他文件位置(sock,pid)
6、統一server_id命名方式

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41736.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41736.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41736.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AIGC時代程序員的躍遷——編程高手的密碼武器

💝💝💝歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

一、redis-萬字長文讀懂redis

高性能分布式緩存Redis `第一篇章`1.1緩存發展史&緩存分類1.1.1 大型網站中緩存的使用帶來的問題1.1.2 常見緩存的分類及對比與memcache對比1.2 數據類型選擇&應用場景1.2.1 string1.2.2 hash1.2.3 鏈表1.2.4 set1.2.5 sortedset有序集合類型1.2.6 總結1.3 Redis高級應…

[數倉]三、離線數倉(Hive數倉系統)

第1章 數倉分層 1.1 為什么要分層 DIM:dimensionality 維度 1.2 數據集市與數據倉庫概念 1.3 數倉命名規范 1.3.1 表命名 ODS層命名為ods_表名DIM層命名為dim_表名DWD層命名為dwd_表名DWS層命名為dws_表名 DWT層命名為dwt_表名ADS層命名為ads_表名臨時表命名為…

昇思25天訓練營Day11 - 基于 MindSpore 實現 BERT 對話情緒識別

模型簡介 BERT全稱是來自變換器的雙向編碼器表征量(Bidirectional Encoder Representations from Transformers),它是Google于2018年末開發并發布的一種新型語言模型。與BERT模型相似的預訓練語言模型例如問答、命名實體識別、自然語言推理、…

56、最近鄰向量量化(LVQ) 網絡訓練對輸入向量進行分類

1、LVQ 網絡訓練對輸入向量進行分類簡介 1)簡介 LVQ(最近鄰向量量化)是一種簡單而有效的神經網絡模型,用于對輸入向量進行分類。LVQ網絡通過學習一組原型向量(也稱為代碼矢量或參考向量),來表…

HTML5 WebSocket技術使用詳解

HTML5 WebSocket API 提供了一種在單個連接上進行全雙工通信的方式。這意味著客戶端和服務器可以同時發送和接收數據,而不需要像傳統的 HTTP 請求那樣進行多次請求和響應的輪詢。WebSocket 允許更實時的交互,非常適合需要快速、連續數據交換的應用場景&a…

SAP Build4-office 操作

1. 郵件操作 1.1 前期準備 商店中找到outlook的sdk,添加到build中 在process中添加outlook的SDK 電腦上裝了outlook的郵箱并且已經登錄 我用個人foxmail郵箱向outlook發了一封帶附件的銷售訂單郵件,就以此作為例子 1.2 搜索郵件 搜索有兩層&…

計算機視覺、目標檢測、視頻分析的過去和未來:目標檢測從入門到精通 ------ YOLOv8 到 多模態大模型處理視覺基礎任務

文章大綱 計算機視覺項目的關鍵步驟計算機視覺項目核心內容概述步驟1: 確定項目目標步驟2:數據收集和數據標注步驟3:數據增強和拆分數據集步驟4:模型訓練步驟5:模型評估和模型微調步驟6:模型測試步驟7:模型部署常見問題目標檢測入門什么是目標檢測目標檢測算法的分類一階…

CSS實現圖片裁剪居中(只截取剪裁圖片中間部分,圖片不變形)

1.第一種方式:(直接給圖片設置:object-fit:cover;) .imgbox{width: 100%;height:200px;overflow: hidden;position: relative;img{width: 100%;height: 100%; //圖片要設置高度display: block;position: absolute;left: 0;right…

OpenCV:解鎖計算機視覺的魔法鑰匙

OpenCV:解鎖計算機視覺的魔法鑰匙 在人工智能與圖像處理的世界里,OpenCV是一個響當當的名字。作為計算機視覺領域的瑞士軍刀,OpenCV以其豐富的功能庫、跨平臺的特性以及開源的便利性,成為了開發者手中不可或缺的工具。本文將深入…

基于Java+SpringMvc+Vue技術的在線學習交流平臺的設計與實現---60頁論文參考

博主介紹:碩士研究生,專注于Java技術領域開發與管理,以及畢業項目實戰? 從事基于java BS架構、CS架構、c/c 編程工作近16年,擁有近12年的管理工作經驗,擁有較豐富的技術架構思想、較扎實的技術功底和資深的項目管理經…

AI+若依框架(低代碼開發)

提前說明: 文章是實時更新,寫了就會更。 文章是黑馬視頻的筆記,如果要自己學可以點及下面的鏈接: https://www.bilibili.com/video/BV1pf421B71v/一、若依介紹 1.版本介紹 若依為滿足多樣化的開發需求,提供了多個版本…

基于jeecgboot-vue3的Flowable流程-集成仿釘釘流程(一)圖標svgicon的使用

因為這個項目license問題無法開源,更多技術支持與服務請加入我的知識星球。 1、lowflow這里使用了tsx的動態圖標,如下: import ./index.scss import type { CSSProperties, PropType } from vue import { computed, defineComponent, resolv…

MATLAB基礎應用精講-【數模應用】 嶺回歸(Ridge)(附MATLAB、python和R語言代碼實現)

目錄 前言 算法原理 數學模型 Ridge 回歸的估計量 Ridge 回歸與標準多元線性回歸的比較 3. Ridge 參數的選擇 算法步驟 SPSSPRO 1、作用 2、輸入輸出描述 3、案例示例 4、案例數據 5、案例操作 6、輸出結果分析 7、注意事項 8、模型理論 SPSSAU 嶺回歸分析案…

Java [ 進階 ] 深入理解 JVM

?探索Java基礎 深入理解 JVM? 深入理解 JVM:結構與垃圾回收機制 Java 虛擬機(JVM)是 Java 程序運行的核心,了解 JVM 的內部結構和垃圾回收機制對優化 Java 應用性能至關重要。本文將深入探討 JVM 的結構和垃圾回收機制&#…

支付寶沙箱對接(GO語言)

支付寶沙箱對接 1.1 官網1.2 秘鑰生成(系統默認)1.3 秘鑰生成(軟件生成)1.4 golan 安裝 SDK1.5 GoLand 代碼1.6 前端代碼 1.1 官網 沙箱官網: https://open.alipay.com/develop/sandbox/app 秘鑰用具下載: https://ope…

序列化、反序列化

java 提供了一種對象序列化的機制,該機制中,一個對象可以被表示為一個字節序列,該字節序列包括該對象的數據、有關對象的類型的信息和存儲在對象中數據的類型。 將序列化對象寫入文件之后,可以從文件中讀取出來,并且對…

Java并發編程-ThreadLocal深入解讀及案例實戰

文章目錄 概述原理使用場景示例最佳實踐內存泄漏風險阿里開源組件TransmittableThreadLocal原理和機制使用場景如何使用注意事項ThreadLocal在分布式存儲系統edits_log案例中的實踐1. 為什么使用`ThreadLocal`?2. 實踐案例2.1 緩存日志操作2.2 線程局部的編輯日志狀態3. 注意事…

在 Spring 中編寫單元測試

單元測試是軟件開發過程中不可或缺的一部分,它能有效地提高代碼質量,確保代碼功能的正確性。在 Spring 應用中,JUnit 和 Mockito 是常用的單元測試工具,而 Spring Test 提供了豐富的測試支持。本文將介紹如何在 Spring 中使用 JUn…

并行處理百萬個文件的解析和追加

處理和解析大量文件,尤其是百萬級別的文件,是一個復雜且資源密集的任務。為實現高效并行處理,可以使用Python中的多種并行和并發編程工具,比如multiprocessing、concurrent.futures模塊以及分布式計算框架如Dask和Apache Spark。這…