成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解MySQL數據庫性能診斷工具mysqltuner.pl

原創 精選
數據庫 MySQL
mysqltuner.pl 是 MySQL一個常用的數據庫性能診斷工具,主要檢查參數設置的合理性,包括日志文件、存儲引擎、安全建議及性能分析。針對潛在的問題,它會給出改進的建議,是 MySQL優化的好幫手。

作者 | 吳守陽

審校 | 重樓

簡介

mysqltuner.pl 是 MySQL一個常用的數據庫性能診斷工具,主要檢查參數設置的合理性包括日志文件、存儲引擎、安全建議及性能分析。針對潛在的問題,它會給出改進的建議是 MySQL優化的好幫手。

功能概述

  1. 性能分析: 分析MySQL服務器的各種性能指標,包括但不限于查詢緩存命中率、索引利用率、連接數、線程緩存等。
  2. 建議優化:根據分析結果,提供優化建議,如調整MySQL服務器的配置參數,以改善性能和穩定性。
  3. 數據庫健康檢查: 檢查數據庫的健康狀態,警告可能存在的問題或風險、表碎片,如慢查詢、長時間運行的查詢等。
  4. MySQL配置參數建議: 建議適合當前數據庫負載和硬件環境的MySQL配置參數,以達到更好的性能和效率。
  5. 版本兼容性: 支持多個版本的MySQL數據庫,包括MySQL 3.x到MySQL 8.x,確保在不同版本的數據庫上都能提供正確的分析和建議。
  6. 命令行工具:作為一個命令行工具,易于在服務器上運行,并能快速生成有用的分析結果和優化建議。

項目地址:https://github.com/major/mysqltuner-perl

下載

[root@localhost ~]#wget https://raw.githubusercontent.com/major/MySQLT

執行分析

[root@ mysqltuner-perl]# perl ./mysqltuner.pl --user root --pass='Jesong-123456'
[--] Skipped version check for MySQLTuner script
[OK] Logged in using credentials passed on the command line
[OK] Operating on 64-bit architecture

-------- Storage Engine Statistics -----------------------------------------------------------------

支持的存儲引擎:ARCHIVE、BLACKHOLE、CSV、InnoDB、MEMORY、MRG_MYISAM、MyISAM、PERFORMANCE_SCHEMA。其中,FEDERATED 存儲引擎未被啟用。

InnoDB 表中的數據量為 2.9G,共有 637 張表。

總共有 1 張表存在碎片化問題。

-------- Performance Metrics -----------------------------------------------------------------------

服務器已經運行了333天16小時53分鐘5秒,處理了大約209百萬個查詢(平均每秒7.265個查詢),建立了大約1百萬個連接,發送了491GB的數據,接收了51GB的數據。

讀取和寫入操作比例為94%和6%。

二進制日志記錄已啟用,但 GTID 模式未開啟。

物理內存:7.6G,最大可使用的MySQL內存為1.6G。其他進程內存占用為0B。

總緩沖區:全局共168.0M,每個線程1.2M(最大1024個線程)。

Performance_schema 最大內存使用量:249M,Galera GCache 最大內存使用量為0B。

最大內存使用量達到了595.4M(占安裝的RAM的7.67%),最大可能內存使用量為1.6G(占安裝的RAM的20.92%),與其他進程一起的整體可能內存使用量與可用內存兼容。

慢查詢占比為0%(0個慢查詢/209百萬個查詢)。

可用連接的最高使用率為14%(151/1024)。

中止連接占比為0.01%(79/1542314)。

名稱解析處于活動狀態,對于每個新連接都進行了反向名稱解析,可能會影響性能。

MySQL 8.0 已移除了查詢緩存。

需要臨時表的排序占比為0%(659個臨時排序/53百萬個排序)。

沒有使用索引的連接。

在磁盤上創建的臨時表占比為0%(0個在磁盤上/30百萬個總數)。

線程緩存命中率為99%(2K創建/1M連接)。

表緩存命中率為99%(207M命中/207M請求)。

table_definition_cache(2000)大于表的數量(963)。

打開文件限制使用率為0%(3/10K)。

立即獲取的表鎖的占比為100%(2M立即獲取/2M鎖)。

二進制日志緩存內存訪問率為99.42%(2978590內存/2996023總數)。

------- Performance schema ------------------------------------------------------------------------

Performance_schema已經激活,占用了249.3M內存,用于監控數據庫性能。

系統模式(Sys schema)已安裝,可提供更多關于系統性能的信息。

-------- ThreadPool Metrics ------------------------------------------------------------------------

在ThreadPool方面,指標顯示ThreadPool統計被禁用

InnoDB已啟用,但存在一些潛在問題需要關注:

InnoDB緩沖池大小為128.0M,而數據大小為2.9G,這表明緩沖池大小可能不足以容納整個數據集。建議考慮增加緩沖池大小以提高性能。

日志文件大小與緩沖池大小的比例未達到推薦值。根據建議,日志文件大小應該是緩沖池大小的25%,而當前的比例為48.0M * 2 / 128.0M = 75%,建議調整日志文件大小以優化性能。

寫日志效率為87.06%,略低于理想值。雖然效率不算太差,但仍有改進空間。可以考慮調整日志文件大小、調整日志寫入策略或其他相關配置以提升寫日志效率。

-------- Recommendations ---------------------------------------------------------------------------
General recommendations:
 Run ALTER TABLE ... FORCE or OPTIMIZE TABLE to defragment tables for better performance
 ALTER TABLE `crmdb`.`el_crm_history` FORCE; -- can free 114 MiB
 Total freed space after defragmentation: 114 MiB
 230 CVE(s) found for your MySQL release. Consider upgrading your version !
 Configure your accounts with ip or subnets only, then update your configuration with skip-name-resolve=ON
 Be careful, increasing innodb_log_file_size / innodb_log_files_in_group means higher crash recovery mean time
Variables to adjust:
 skip-name-resolve=ON
 innodb_buffer_pool_size (>= 2.9G) if possible.
 innodb_log_file_size should be (=16M) if possible, so InnoDB total log file size equals 25% of buffer pool size.
 innodb_log_buffer_size (> 16M)

需要進行表碎片整理以提高性能,建議使用ALTER TABLE ... FORCE或OPTIMIZE TABLE命令進行碎片整理。例如:ALTER TABLE crmdb.el_crm_history FORCE;這將釋放114 MB的空間,提高系統性能。

有230個CVE(通用漏洞和披露)與您的MySQL版本相關,請考慮升級版本以修復這些漏洞。

建議只為IP地址或子網配置帳戶,然后使用skip-name-resolve = ON更新配置。這可以提高系統性能,并降低DNS解析的影響。

注意,增加innodb_log_file_size / innodb_log_files_in_group的值會增加崩潰恢復的時間,需要權衡利弊。

建議調整以下變量:

skip-name-resolve = ON

如果可能,增大innodb_buffer_pool_size(> = 2.9G)。

如果可能,將innodb_log_file_size設置為16M,以使InnoDB總日志文件大小等于緩沖池大小的25%。

增加innodb_log_buffer_size的值(> 16M)。

操作示例

遠程獲取數據庫信息

perl mysqltuner.pl --host targetDNS_IP --user admin_user --pass admin_password

輸出檢測的全部信息(涵蓋檢測所有選項)

perl mysqltuner.pl --user root --pass='123456' --verbose
perl mysqltuner.pl --user root --pass='123456' --buffers --dbstat --idxstat --sysstat --pfstat --tbstat

漏洞檢查

perl ./mysqltuner.pl --user root --pass='123456' --cvefile=vulnerabilities.csv

將結果寫入文件中

perl mysqltuner.pl --user root --pass='123456' --buffers --dbstat --idxstat --sysstat --outputfile /tmp/result_mysqltuner.txt

將結果寫入文件而不輸出信息

perl mysqltuner.pl --user root --pass='123456' --buffers --dbstat --idxstat --sysstat --silent --outputfile /tmp/result_mysqltuner.txt

根據模版自定義報告文件(模版沒整出來)

perl mysqltuner.pl --user root --pass='123456' --buffers --dbstat --silent --reportfile /tmp/result_mysqltuner.txt --template=./template_example.tpl

將csv 文件轉儲到 results 子目錄中

perl ./mysqltuner.pl --user root --pass='123456' --verbose --dumpdir=./mysql

基于 Python 的 HTML 報告 Jinja2

HTML 生成基于 Python/Jinja2

HTML 生成過程

使用 JSON 格式生成 mysqltuner.pl 報告 (--json)

使用 j2 python 工具生成 HTML 報告

Jinja2 模板位于 templates 子目錄下

一個基本示例稱為 basic.html.j2

安裝 Python j2

python -mvenv j2
source ./j2/bin/activate
(j2) pip install j2

使用 Html 報告生成

perl mysqltuner.pl --verbose --json > reports.json
cat reports.json j2 -f json MySQLTuner-perl/templates/basic.html.j2 > variables.html

perl mysqltuner.pl --verbose --json | j2 -f json MySQLTuner-perl/templates/basic.html.j2 > variables.html

基于 AHA 的 HTML 報告

HTML 生成過程

使用標準文本報告生成 mysqltuner.pl 報告

使用 aha 生成 HTML 報告

安裝 Aha

按照 Github 存儲庫中的說明進行操作(https://github.com/theZiz/aha)

GitHub AHA 主倉庫

使用 AHA Html 報告生成

perl mysqltuner.pl --verbose --color > reports.txt
aha --black --title "MySQLTuner" -f "reports.txt" > "reports.html"

perl mysqltuner.pl --verbose --color | aha --black --title "MySQLTuner" > reports.html

參數詳解

連接和認證選項:

--host <hostname>: 連接到遠程主機執行測試(默認為 localhost)。

--socket <socket>: 使用不同的套接字進行本地連接。

--port <port>: 連接所使用的端口(默認為 3306)。

--protocol tcp: 強制使用 TCP 連接,而不是套接字。

--user <username>: 用于認證的用戶名。

--userenv <envvar>: 包含認證用戶名的環境變量的名稱。

--pass <password>: 用于認證的密碼。

--passenv <envvar>: 包含認證密碼的環境變量的名稱。

--ssl-ca <path>: 公鑰的路徑。

--mysqladmin <path>: 自定義 mysqladmin 可執行文件的路徑。

--mysqlcmd <path>: 自定義 mysql 可執行文件的路徑。

--defaults-file <path>: 自定義的 .my.cnf 文件路徑。

--defaults-extra-file <path>: 額外自定義配置文件的路徑。

--server-log <path>: 明確指定的日志文件路徑(error_log)。

性能和報告選項:

--skipsize: 不枚舉表及其類型/大小(默認開啟,推薦用于擁有大量表的服務器)。

--json: 將結果輸出為 JSON 字符串。

--prettyjson: 將結果輸出為格式化的 JSON 字符串。

--skippassword: 不檢查用戶密碼(默認關閉)。

--checkversion: 檢查 MySQLTuner 更新(默認不檢查)。

--updateversion: 檢查 MySQLTuner 更新并在有新版本時更新(默認不檢查)。

--forcemem <size>: 安裝的RAM數量(以兆字節為單位)。

--forceswap <size>: 配置的交換內存量(以兆字節為單位)。

--passwordfile <path>: 密碼文件列表的路徑(每行一個密碼)。

--cvefile <path>: 用于漏洞檢查的 CVE 文件。

--outputfile <path>: 輸出到文本文件的路徑。

--reportfile <path>: 報告輸出到文本文件的路徑。

--template <path>: 模板文件的路徑。

--dumpdir <path>: 存放信息文件的目錄路徑。

--feature <feature>: 運行特定的功能(見 FEATURES 部分)。

輸出選項:

--silent: 不在屏幕上輸出任何內容。

--verbose: 打印所有選項(默認不詳細,包括 dbstat、idxstat、sysstat、tbstat、pfstat)。

--color: 以彩色輸出。

--nocolor: 不以彩色輸出。

--nogood: 移除 "OK" 響應。

--nobad: 移除負面/建議性響應。

--noinfo: 移除信息性響應。

--debug: 打印調試信息。

--noprocess: 假設沒有其他進程在運行。

--dbstat: 打印數據庫信息。

--nodbstat: 不打印數據庫信息。

--tbstat: 打印表信息。

--notbstat: 不打印表信息。

--colstat: 打印列信息。

--nocolstat: 不打印列信息。

--idxstat: 打印索引信息。

--noidxstat: 不打印索引信息。

--nomyisamstat: 不打印 MyIsam 信息。

--sysstat: 打印系統信息。

--nosysstat: 不打印系統信息。

--nostructstat: 不打印表結構信息。

--pfstat: 打印性能模式信息。

--nopfstat: 不打印性能模式信息。

--bannedports: 被禁止的端口(用逗號分隔)。

--server-log: 定義要分析的特定 error_log。

--maxportallowed: 主機上允許的開放端口數。

--buffers: 打印全局和每個線程的緩沖區值。

兼容性

MySQL 8.0、8.2、8.3(完全支持)

Percona Server 8.0、8.2、8.3(完全支持)

MariaDB 10.4、10.5、10.6、10.11、11.0、11.1、11.2(完全支持)

Galera復制(完全支持)

Percona XtraDB 集群(完全支持)

MySQL 復制(部分支持,無測試環境)

MySQL 8.1(不支持,已棄用版本)

Percona Server 5.7(不支持,已棄用版本)

MySQL 5.7(不支持,已棄用版本)

MySQL 5.6 及更早版本(不支持,已棄用版本)

Percona Server 5.6(不支持,已棄用版本)

MariaDB 10.7、10.8、10.9、10.10(不支持,已棄用版本)

MariaDB 10.3 及更早版本(不支持,已棄用版本)

MariaDB 5.5(不支持,已棄用版本)

Windows 支持是部分的

  1. 目前現在支持 Windows
  2. 在 WSL2(Windows 子系統 Linux)上成功運行 MySQLtuner
  3. https://docs.microsoft.com/en-us/windows/wsl/

不受支持的環境

  1. 目前不支持基于云的云

作者介紹

吳守陽,51CTO社區編輯,擁有8年DBA工作經驗,熟練管理MySQL、Redis、MongoDB等開源數據庫。精通性能優化、備份恢復和高可用性架構設計。善于故障排除和自動化運維,保障系統穩定可靠。具備良好的團隊合作和溝通能力,致力于為企業提供高效可靠的數據庫解決方案。

責任編輯:華軒 來源: 51CTO
相關推薦

2023-10-20 08:24:53

2011-08-24 15:36:30

2011-08-29 13:24:50

Oracle數據庫PLSQL設置快捷鍵

2017-09-22 09:50:27

數據庫AWR報告性能

2009-04-07 13:42:41

OracleStatspack診斷

2011-03-28 15:44:45

惠普數據庫Oracle數據庫

2024-03-13 10:40:00

性能探測工具SQL語句數據庫

2010-03-10 11:29:47

MySQL數據庫性能調

2009-03-30 14:19:26

優化數據庫MySQL

2014-04-09 11:43:54

Zabbix監控Mysql數據庫

2022-03-29 10:52:08

MySQL數據庫

2010-03-29 10:19:24

2017-06-19 16:20:09

數據庫性能工具

2016-10-08 18:13:55

數據庫性能工具數據庫管理系統

2024-01-07 18:02:21

數據庫分片副本

2022-05-06 10:58:55

數據庫智能診斷

2017-09-19 18:34:16

Mysql數據庫性能測試

2009-02-26 09:34:16

性能優化DB2數據庫

2017-09-28 09:33:08

阿里云數據庫CloudDBA

2010-05-19 13:37:39

MySQL數據庫密碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99影视| 日韩精品久久久久 | 久久久久九九九女人毛片 | 日韩一区二区三区在线 | 视频在线亚洲 | 国产一级免费视频 | 日本不卡免费新一二三区 | 综合一区二区三区 | 亚洲精品福利视频 | 亚洲a在线观看 | 99色综合| 亚洲一区视频在线 | 亚洲国产精品人人爽夜夜爽 | 日本xx视频免费观看 | 日韩中文字幕在线播放 | 国精品一区| 91视频在线 | 国产婷婷综合 | 欧美黄色性生活视频 | 国产欧美一级二级三级在线视频 | 日韩在线小视频 | 日韩三级视频 | 韩国av网站在线观看 | 久久午夜国产精品www忘忧草 | 成人亚洲在线 | 亚洲精品福利视频 | 国产日韩精品在线 | 麻豆av一区二区三区久久 | 亚洲精品美女 | 亚洲三区视频 | 久久亚洲免费 | 高清视频一区二区三区 | 国产成人免费一区二区60岁 | 亚洲视频在线一区 | 九九热久久免费视频 | 免费观看av网站 | 三级黄视频在线观看 | 国产精品久久久久久久久污网站 | 伊人久久综合影院 | 亚洲视频一区二区三区 | 一级毛片观看 |