最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

OpenEuler系統(tǒng)MySQL故障排查終極指南實(shí)戰(zhàn)教程

 更新時(shí)間:2026年04月03日 10:04:10   作者:J超會(huì)運(yùn)  
本文介紹了在OpenEuler系統(tǒng)中針對(duì)/usr/local/mysql安裝路徑的MySQL服務(wù)進(jìn)行全面故障排查、根因定位、解決方案及性能優(yōu)化的方法,感興趣的朋友跟隨小編一起看看吧

適配說(shuō)明:本教程針對(duì)源碼安裝在 /usr/local/mysql 路徑的 MySQL 服務(wù),全程無(wú)安裝步驟,覆蓋 OpenEuler 系統(tǒng)全場(chǎng)景故障排查、根因定位、解決方案及全維度性能優(yōu)化,適配 x86 / 鯤鵬 ARM 架構(gòu),兼容 MySQL 5.7/8.0 主流版本。

一、前置環(huán)境信息確認(rèn)(排查前必做)

所有故障排查的前提是確認(rèn)基礎(chǔ)環(huán)境一致性,避免因路徑、權(quán)限、配置加載順序錯(cuò)誤導(dǎo)致無(wú)效排查。

1. 核心目錄與路徑確認(rèn)(/usr/local 專屬)

表格

配置項(xiàng)標(biāo)準(zhǔn)路徑查看命令
基礎(chǔ)安裝目錄 (basedir)/usr/local/mysqlmysqld --verbose --help | grep -A 1 "basedir"
數(shù)據(jù)目錄 (datadir)/usr/local/mysql/datamysqld --verbose --help | grep -A 1 "datadir"
配置文件加載順序/etc/my.cnf > /etc/mysql/my.cnf > /usr/local/mysql/my.cnf > ~/.my.cnfmysqld --verbose --help | grep -A 2 "Default options"
錯(cuò)誤日志路徑默認(rèn) /usr/local/mysql/data/ 主機(jī)名.errmysql -uroot -p -e "show variables like 'log_error';"
Socket 文件路徑默認(rèn) /tmp/mysql.sockmysql -uroot -p -e "show variables like 'socket';"
PID 文件路徑/usr/local/mysql/data/mysqld.pidmysqld --verbose --help | grep -A 1 "pid-file"

2. 基礎(chǔ)環(huán)境校驗(yàn)

  1. 環(huán)境變量配置:確保 MySQL 命令可全局調(diào)用
# 臨時(shí)生效
export PATH=$PATH:/usr/local/mysql/bin
# 永久生效(OpenEuler系統(tǒng))
echo "export PATH=\$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
# 驗(yàn)證
mysql --version
  1. 運(yùn)行用戶校驗(yàn):確認(rèn) mysql 用戶 / 用戶組存在,且目錄權(quán)限正確
# 檢查mysql用戶
id mysql
# 修復(fù)目錄所屬權(quán)(高頻故障點(diǎn))
chown -R mysql:mysql /usr/local/mysql/data
chmod -R 700 /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql/logs # 如有獨(dú)立日志目錄
  1. systemd 服務(wù)文件校驗(yàn):源碼安裝高頻故障點(diǎn),確保服務(wù)文件路徑正確
# 查看服務(wù)文件路徑
systemctl cat mysqld.service
# 核心配置校驗(yàn)(必須匹配/usr/local路徑)
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=65535

二、MySQL 故障排查通用標(biāo)準(zhǔn)化流程

90% 的 MySQL 故障可通過(guò)該流程快速定位根因,禁止跳步排查,優(yōu)先定位故障大類,再深入細(xì)節(jié)。

第一步:故障現(xiàn)象初步分類

先明確故障類型,縮小排查范圍:

  • 啟動(dòng)失敗類:systemctl start mysqld 執(zhí)行失敗,服務(wù)無(wú)法進(jìn)入 running 狀態(tài)
  • 連接異常類:服務(wù)正常運(yùn)行,但本地 / 遠(yuǎn)程無(wú)法登錄,報(bào)各類連接錯(cuò)誤
  • 性能異常類:服務(wù)可正常連接,但 SQL 執(zhí)行慢、業(yè)務(wù)卡頓、CPU/IO 負(fù)載飆升
  • 數(shù)據(jù)異常類:表?yè)p壞、數(shù)據(jù)丟失、主從同步中斷、死鎖 / 鎖等待報(bào)錯(cuò)
  • 服務(wù)崩潰類:服務(wù)運(yùn)行中意外退出、被 OOM 殺死、頻繁重啟

第二步:優(yōu)先查看錯(cuò)誤日志(核心中的核心)

MySQL 絕大多數(shù)故障都會(huì)在錯(cuò)誤日志中留下明確根因,這是排查的第一優(yōu)先級(jí)

  1. 日志查看命令
# 方式1:根據(jù)配置文件路徑查看(推薦)
tail -n 100 -f $(mysql -uroot -p -e "show variables like 'log_error';" | grep -v "Variable_name" | awk '{print $2}')
# 方式2:默認(rèn)路徑查看(啟動(dòng)失敗無(wú)法登錄時(shí)用)
tail -n 100 -f /usr/local/mysql/data/$(hostname).err
# 方式3:查看systemd系統(tǒng)日志(啟動(dòng)失敗無(wú)MySQL日志時(shí)用)
journalctl -u mysqld.service -f --no-pager
  1. 日志核心排查要點(diǎn)
  • 重點(diǎn)搜索關(guān)鍵字:[ERROR]、[Warning]、Permission denied、Address already in use、No space left on deviceInnoDB: Error、OOM
  • 啟動(dòng)失敗優(yōu)先看:配置文件語(yǔ)法錯(cuò)誤、路徑不存在、權(quán)限不足、端口占用、內(nèi)存不足、InnoDB 文件損壞
  • 運(yùn)行中崩潰優(yōu)先看:OOM killer 日志、內(nèi)存參數(shù)溢出、IO 異常、內(nèi)核報(bào)錯(cuò)

第三步:系統(tǒng)資源與服務(wù)狀態(tài)排查

  1. 服務(wù)狀態(tài)基礎(chǔ)檢查
# 查看服務(wù)運(yùn)行狀態(tài)
systemctl status mysqld.service
# 查看mysqld進(jìn)程是否存在
ps -ef | grep mysqld | grep -v grep
# 檢查端口是否正常監(jiān)聽(tīng)(默認(rèn)3306)
ss -tulpn | grep mysqld
netstat -tulpn | grep 3306
  1. 系統(tǒng)資源瓶頸排查
# 1. 磁盤(pán)空間檢查(高頻故障點(diǎn):datadir分區(qū)滿、Inode耗盡)
df -h /usr/local/mysql/data
df -i /usr/local/mysql/data
# 2. 內(nèi)存檢查(OOM、內(nèi)存不足)
free -mh
# 查看是否有OOM殺死進(jìn)程記錄
dmesg | grep -i "oom" | grep -i "kill"
journalctl -k | grep -i oom
# 3. CPU/IO負(fù)載檢查
top # 按P看CPU排序,按M看內(nèi)存排序
iostat -x 5 3 # 查看%iowait、%util磁盤(pán)IO負(fù)載
vmstat 5 3 # 查看系統(tǒng)上下文切換、阻塞進(jìn)程
  1. 系統(tǒng)安全組件排查(OpenEuler 特有高頻故障點(diǎn))
# 1. 防火墻檢查(遠(yuǎn)程連接失敗核心原因)
# 查看防火墻狀態(tài)
firewall-cmd --state
# 查看已放行端口
firewall-cmd --list-ports
# 臨時(shí)放通3306端口
firewall-cmd --add-port=3306/tcp
# 永久放通
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
# 2. SELinux檢查(啟動(dòng)失敗、權(quán)限報(bào)錯(cuò)核心原因)
# 查看SELinux狀態(tài)
getenforce
# 臨時(shí)關(guān)閉(驗(yàn)證是否為SELinux導(dǎo)致)
setenforce 0
# 永久關(guān)閉(需重啟服務(wù)器)
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
# 若不想關(guān)閉,添加SELinux規(guī)則適配/usr/local路徑
semanage fcontext -a -t mysqld_db_t "/usr/local/mysql/data(/.*)?"
restorecon -Rv /usr/local/mysql/data

第四步:配置文件合法性校驗(yàn)

配置文件錯(cuò)誤是啟動(dòng)失敗、性能異常的 TOP1 原因,尤其是源碼安裝的路徑配置錯(cuò)誤。

  1. 配置文件語(yǔ)法校驗(yàn)
# 全量校驗(yàn)配置文件合法性,有錯(cuò)誤會(huì)直接輸出(MySQL 5.7+支持)
mysqld --validate-config --defaults-file=/etc/my.cnf
# 兼容低版本的校驗(yàn)方式
mysqld --verbose --help --defaults-file=/etc/my.cnf > /dev/null
  1. 核心配置項(xiàng)校驗(yàn)重點(diǎn)檢查以下參數(shù),確保路徑、數(shù)值無(wú)錯(cuò)誤:
  • basedirdatadir:必須與實(shí)際安裝路徑一致,目錄必須存在且 mysql 用戶有權(quán)限
  • portsocket:客戶端與服務(wù)端配置必須一致,端口無(wú)占用,socket 文件目錄有權(quán)限
  • pid-file:目錄必須存在,mysql 用戶有寫(xiě)入權(quán)限
  • log_error:路徑必須存在,mysql 用戶有寫(xiě)入權(quán)限
  • 內(nèi)存相關(guān)參數(shù):總和不超過(guò)系統(tǒng)物理內(nèi)存的 80%,避免 OOM

第五步:數(shù)據(jù)庫(kù)內(nèi)部狀態(tài)排查(可正常登錄時(shí)執(zhí)行)

若服務(wù)可正常登錄,通過(guò)以下命令定位內(nèi)部運(yùn)行異常:

sql

-- 1. 查看當(dāng)前所有連接,定位長(zhǎng)事務(wù)、鎖等待、異常SQL
show full processlist;

-- 2. 查看InnoDB引擎狀態(tài),核心用于死鎖、事務(wù)、IO異常排查
show engine innodb status;

-- 3. 查看數(shù)據(jù)庫(kù)全局配置,確認(rèn)參數(shù)是否生效
show variables like '%參數(shù)名%';

-- 4. 查看數(shù)據(jù)庫(kù)運(yùn)行狀態(tài)指標(biāo),定位性能瓶頸
show global status like '%狀態(tài)名%';

-- 5. 查看鎖等待信息(MySQL 8.0)
select * from performance_schema.data_locks;
select * from performance_schema.data_lock_waits;

-- 6. 查看事務(wù)信息
select * from information_schema.innodb_trx;

三、高頻故障場(chǎng)景專項(xiàng)排查與解決方案

場(chǎng)景 1:MySQL 服務(wù)啟動(dòng)失?。ㄗ畛R?jiàn))

子場(chǎng)景 1.1 配置文件錯(cuò)誤導(dǎo)致啟動(dòng)失敗

  • 現(xiàn)象:systemctl start mysqld 執(zhí)行失敗,journalctl 日志報(bào)unknown variable、syntax errorunknown option
  • 排查步驟
    1. 執(zhí)行mysqld --validate-config命令,查看具體的錯(cuò)誤參數(shù)和行號(hào)
    2. 檢查配置文件加載順序,確認(rèn)是否有多個(gè)配置文件沖突
    3. 檢查參數(shù)拼寫(xiě)錯(cuò)誤、格式錯(cuò)誤(如缺少=、多余空格、不支持的參數(shù))
  • 解決方案
    1. 注釋或修正報(bào)錯(cuò)的參數(shù),確保參數(shù)與 MySQL 版本兼容
    2. 統(tǒng)一配置文件到/etc/my.cnf,刪除其他路徑下的冗余配置文件
    3. 修正后重新執(zhí)行校驗(yàn)命令,無(wú)報(bào)錯(cuò)后再啟動(dòng)服務(wù)

子場(chǎng)景 1.2 文件權(quán)限 / 所屬權(quán)錯(cuò)誤

  • 現(xiàn)象:?jiǎn)?dòng)失敗,錯(cuò)誤日志報(bào)Can't create/write to file、Permission deniedErrcode: 13 - Permission denied
  • 排查步驟
    1. 查看錯(cuò)誤日志,確認(rèn)報(bào)錯(cuò)的文件 / 目錄路徑
    2. 檢查 datadir、日志目錄、pid 文件目錄、socket 文件目錄的所屬用戶和權(quán)限
  • 解決方案

    bash

    # 修復(fù)核心目錄所屬權(quán)
    chown -R mysql:mysql /usr/local/mysql/data
    chown -R mysql:mysql /usr/local/mysql/logs # 如有獨(dú)立日志目錄
    # 修復(fù)目錄權(quán)限
    chmod -R 700 /usr/local/mysql/data
    chmod -R 660 /usr/local/mysql/data/*
    # 修復(fù)socket文件權(quán)限(若存在)
    chown mysql:mysql /tmp/mysql.sock
    chmod 777 /tmp/mysql.sock
    

子場(chǎng)景 1.3 端口被占用

  • 現(xiàn)象:?jiǎn)?dòng)失敗,錯(cuò)誤日志報(bào)Can't start server: Bind on TCP/IP port: Address already in use
  • 排查步驟ss -tulpn | grep 3306,查看占用 3306 端口的進(jìn)程
  • 解決方案
    1. 若為冗余 mysqld 進(jìn)程占用,執(zhí)行kill -9 進(jìn)程ID殺死進(jìn)程后重新啟動(dòng)
    2. 若為其他程序占用,修改/etc/my.cnf中的port參數(shù),更換未被占用的端口
    3. 重啟服務(wù)后驗(yàn)證端口監(jiān)聽(tīng)狀態(tài)

子場(chǎng)景 1.4 磁盤(pán)空間 / Inode 耗盡

  • 現(xiàn)象:?jiǎn)?dòng)失敗,錯(cuò)誤日志報(bào)No space left on device、Write to file failed、InnoDB: Error: Write to file ibdata1 failed
  • 排查步驟
    1. df -h檢查 datadir 所在分區(qū)磁盤(pán)使用率,確認(rèn)是否 100% 占用
    2. df -i檢查分區(qū) Inode 使用率,確認(rèn)是否耗盡
  • 解決方案
    1. 清理無(wú)用文件:刪除過(guò)期的 binlog 日志、大尺寸錯(cuò)誤日志、臨時(shí)文件

    sql

    -- 手動(dòng)清理指定時(shí)間前的binlog(MySQL內(nèi)執(zhí)行)
    purge binary logs before '2026-03-01 00:00:00';
    
    1. 調(diào)整 binlog 自動(dòng)過(guò)期策略,避免無(wú)限增長(zhǎng)(見(jiàn)優(yōu)化章節(jié))
    2. 若 Inode 耗盡,刪除大量小文件(如過(guò)期的慢日志分片、臨時(shí)文件)
    3. 擴(kuò)容 datadir 所在磁盤(pán)分區(qū),完成后重新啟動(dòng)服務(wù)

子場(chǎng)景 1.5 內(nèi)存不足 / OOM 導(dǎo)致啟動(dòng)失敗

  • 現(xiàn)象:?jiǎn)?dòng)失敗,錯(cuò)誤日志報(bào)Cannot allocate memory,或服務(wù)啟動(dòng)后立即被殺死,dmesg 有 OOM killer 日志
  • 排查步驟
    1. free -mh查看系統(tǒng)可用內(nèi)存,確認(rèn)是否不足
    2. 查看 my.cnf 中內(nèi)存相關(guān)參數(shù),計(jì)算總內(nèi)存占用是否超過(guò)系統(tǒng)可用內(nèi)存
  • 解決方案
    1. 調(diào)小核心內(nèi)存參數(shù),優(yōu)先降低innodb_buffer_pool_size(最占內(nèi)存)
    2. 臨時(shí)增加 swap 分區(qū),緩解內(nèi)存壓力
    3. 擴(kuò)容服務(wù)器物理內(nèi)存,重新調(diào)整內(nèi)存參數(shù)后啟動(dòng)服務(wù)

子場(chǎng)景 1.6 InnoDB 數(shù)據(jù)文件損壞

  • 現(xiàn)象:?jiǎn)?dòng)失敗,錯(cuò)誤日志報(bào)InnoDB: Error: tablespace id mismatch、InnoDB: Database page corruption on disk、ibdata1 file corrupted
  • 排查步驟:查看錯(cuò)誤日志,確認(rèn) InnoDB 文件損壞的具體表和類型
  • 解決方案
    1. 輕度損壞:通過(guò)強(qiáng)制恢復(fù)模式啟動(dòng),備份數(shù)據(jù)后重建

    bash

    # 1. 停止服務(wù)
    systemctl stop mysqld
    # 2. 編輯/etc/my.cnf,添加強(qiáng)制恢復(fù)參數(shù)(1-6,從1開(kāi)始嘗試,最小能啟動(dòng)的值)
    innodb_force_recovery = 1
    # 3. 啟動(dòng)服務(wù),成功后全量備份所有數(shù)據(jù)庫(kù)
    mysqldump -uroot -p --all-databases > all_database_backup.sql
    # 4. 停止服務(wù),注釋innodb_force_recovery參數(shù),重建數(shù)據(jù)目錄
    # 5. 重新初始化后導(dǎo)入備份數(shù)據(jù)
    1. 重度損壞:直接從最近的全量備份恢復(fù)數(shù)據(jù),配合 binlog 實(shí)現(xiàn)時(shí)間點(diǎn)恢復(fù)

子場(chǎng)景 1.7 systemd 服務(wù)文件配置錯(cuò)誤

  • 現(xiàn)象:systemctl 啟動(dòng)失敗,但手動(dòng)執(zhí)行mysqld_safe --user=mysql可正常啟動(dòng)
  • 排查步驟:查看 mysqld.service 文件,檢查ExecStartUser、GroupLimitNOFILE配置
  • 解決方案
    1. 修正服務(wù)文件,確保路徑與 /usr/local/mysql 完全匹配,標(biāo)準(zhǔn)配置如下:

    ini

    [Unit]
    Description=MySQL Server
    After=network.target
    [Service]
    User=mysql
    Group=mysql
    Type=notify
    ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s TERM $MAINPID
    LimitNOFILE=1048576
    LimitNPROC=1048576
    TimeoutSec=600
    Restart=on-failure
    [Install]
    WantedBy=multi-user.target
    1. 重新加載 systemd 配置并啟動(dòng)

    bash

    systemctl daemon-reload
    systemctl start mysqld

場(chǎng)景 2:MySQL 連接異常(服務(wù)正常,無(wú)法登錄)

子場(chǎng)景 2.1 本地 Socket 連接失敗

  • 現(xiàn)象:本地執(zhí)行mysql -uroot -p報(bào)錯(cuò)Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
  • 排查步驟
    1. 確認(rèn)服務(wù)正常運(yùn)行,端口正常監(jiān)聽(tīng)
    2. 查看 my.cnf 中[mysqld][client]段的 socket 配置是否一致
    3. 檢查 socket 文件是否存在,權(quán)限是否正確
  • 解決方案
    1. 臨時(shí)解決:指定正確的 socket 路徑連接

    bash

    mysql -uroot -p -S /usr/local/mysql/data/mysql.sock
    1. 永久解決:統(tǒng)一/etc/my.cnf[mysqld][client]的 socket 配置

    ini

    [mysqld]
    socket = /tmp/mysql.sock
    [client]
    socket = /tmp/mysql.sock
    1. 重啟服務(wù),重新生成 socket 文件

子場(chǎng)景 2.2 遠(yuǎn)程連接失敗

  • 現(xiàn)象:本地可正常登錄,遠(yuǎn)程客戶端連接報(bào)錯(cuò)Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server、Connection timed out
  • 排查步驟
    1. 網(wǎng)絡(luò)連通性測(cè)試:遠(yuǎn)程端執(zhí)行telnet 服務(wù)器IP 3306,確認(rèn)端口可訪問(wèn)
    2. 檢查 OpenEuler 防火墻是否放通 3306 端口
    3. 檢查 MySQL 用戶是否允許遠(yuǎn)程訪問(wèn),host 字段是否為%或指定 IP
    4. 檢查 my.cnf 中bind-address是否綁定了 127.0.0.1
  • 解決方案
    1. 防火墻放通 3306 端口(見(jiàn)前文系統(tǒng)資源排查)
    2. 修正 bind-address 配置,允許遠(yuǎn)程訪問(wèn)

    ini

    # /etc/my.cnf 添加/修改,重啟服務(wù)生效
    bind-address = 0.0.0.0
    1. 創(chuàng)建允許遠(yuǎn)程訪問(wèn)的數(shù)據(jù)庫(kù)用戶

    sql

    -- 創(chuàng)建遠(yuǎn)程root用戶(生產(chǎn)環(huán)境建議創(chuàng)建專用業(yè)務(wù)用戶,限制權(quán)限)
    create user 'root'@'%' identified by '你的強(qiáng)密碼';
    grant all privileges on *.* to 'root'@'%' with grant option;
    flush privileges;
    -- 查看用戶權(quán)限
    select user,host from mysql.user where user='root';

子場(chǎng)景 2.3 連接數(shù)爆滿報(bào)錯(cuò) Too many connections

  • 現(xiàn)象:新連接報(bào)錯(cuò)Too many connections,業(yè)務(wù)無(wú)法連接數(shù)據(jù)庫(kù)
  • 排查步驟
    1. 用 root 本地登錄(MySQL 為 root 預(yù)留了 1 個(gè)額外連接),執(zhí)行show variables like 'max_connections';查看最大連接數(shù)
    2. 執(zhí)行show global status like 'Threads_connected';查看當(dāng)前連接數(shù)
    3. 執(zhí)行show full processlist;查看是否有大量空閑睡眠連接、長(zhǎng)事務(wù)
  • 解決方案
    1. 緊急恢復(fù):kill 掉無(wú)用的空閑連接,釋放連接數(shù)
    2. 臨時(shí)調(diào)大最大連接數(shù)(重啟后失效)

    sql

    set global max_connections = 2000;
    1. 永久生效:修改 /etc/my.cnf 配置

    ini

    max_connections = 2000
    1. 根因優(yōu)化:調(diào)整連接超時(shí)參數(shù),自動(dòng)關(guān)閉空閑連接

    ini

    # 非交互式連接超時(shí)時(shí)間,單位秒,默認(rèn)8小時(shí),改為10分鐘
    wait_timeout = 600
    # 交互式連接超時(shí)時(shí)間
    interactive_timeout = 600
    1. 優(yōu)化應(yīng)用端連接池,設(shè)置合理的最大連接數(shù)和空閑連接回收機(jī)制

子場(chǎng)景 2.4 密碼正確但登錄報(bào)錯(cuò) Access denied

  • 現(xiàn)象:密碼確認(rèn)正確,登錄報(bào)錯(cuò)Access denied for user 'root'@'localhost' (using password: YES)
  • 排查步驟
    1. 確認(rèn)用戶 host 是否匹配,比如 root@'localhost' 和 root@'%' 是兩個(gè)不同用戶
    2. 檢查是否存在匿名用戶,導(dǎo)致登錄匹配優(yōu)先級(jí)異常
    3. 確認(rèn)用戶認(rèn)證插件是否與客戶端兼容(MySQL8.0 默認(rèn) caching_sha2_password,低版本客戶端不兼容)
  • 解決方案
    1. 跳過(guò)權(quán)限表啟動(dòng),重置密碼

    bash

    # 1. 停止服務(wù)
    systemctl stop mysqld
    # 2. 跳過(guò)權(quán)限表啟動(dòng)
    /usr/local/mysql/bin/mysqld_safe --skip-grant-tables --skip-networking --user=mysql &
    # 3. 無(wú)密碼登錄
    mysql -uroot
    # 4. 重置密碼(MySQL8.0)
    use mysql;
    flush privileges;
    alter user 'root'@'localhost' identified by '你的新密碼';
    flush privileges;
    exit;
    # 5. 停止跳過(guò)權(quán)限表的進(jìn)程,正常啟動(dòng)服務(wù)
    1. 刪除匿名用戶,避免匹配異常

    sql

    delete from mysql.user where user='';
    flush privileges;
    1. 兼容低版本客戶端,修改認(rèn)證插件

    sql

    alter user 'root'@'%' identified with mysql_native_password by '你的密碼';
    flush privileges;
    

場(chǎng)景 3:MySQL 運(yùn)行卡頓 / 性能異常

子場(chǎng)景 3.1 CPU 使用率飆升

  • 現(xiàn)象:top 查看 mysqld 進(jìn)程 CPU 占用 100%+,業(yè)務(wù)響應(yīng)卡頓,QPS 驟降
  • 排查步驟
    1. show full processlist;定位正在執(zhí)行的耗時(shí) SQL,查看是否有大量全表掃描、排序、分組操作
    2. 開(kāi)啟慢查詢?nèi)罩?,定?TOP 慢 SQL
    3. 用 explain 分析慢 SQL 執(zhí)行計(jì)劃,確認(rèn)是否未走索引、索引失效
  • 解決方案
    1. 緊急處理:kill 掉異常耗時(shí)的 SQL,臨時(shí)恢復(fù)業(yè)務(wù)
    2. 根因優(yōu)化:為慢 SQL 添加合適的索引,優(yōu)化 SQL 語(yǔ)句(避免 select *、避免函數(shù)操作索引字段、避免深分頁(yè))
    3. 避免大事務(wù)、長(zhǎng)事務(wù),拆分復(fù)雜 SQL,減少 CPU 計(jì)算開(kāi)銷
    4. 限制并發(fā)數(shù),優(yōu)化應(yīng)用端連接池,避免大量并發(fā) SQL 同時(shí)執(zhí)行

子場(chǎng)景 3.2 磁盤(pán) IO 負(fù)載過(guò)高

  • 現(xiàn)象:iostat 查看 % iowait、% util 持續(xù)飆升,磁盤(pán)讀寫(xiě)頻繁,SQL 查詢卡頓
  • 排查步驟
    1. 慢查詢?nèi)罩径ㄎ淮罅看疟P(pán) IO 的 SQL(全表掃描、無(wú)索引的大表查詢)
    2. show engine innodb status;查看 InnoDB IO 刷新情況
    3. 檢查 innodb_flush_log_at_trx_commit、sync_binlog 參數(shù)配置
  • 解決方案
    1. 優(yōu)化 SQL 和索引,減少全表掃描,降低磁盤(pán) IO 次數(shù)
    2. 調(diào)大 innodb_buffer_pool_size,增加數(shù)據(jù)緩存,減少磁盤(pán)讀寫(xiě)
    3. 合理調(diào)整事務(wù)刷盤(pán)參數(shù),平衡性能與安全

    ini

    # 金融核心場(chǎng)景:雙1配置,最高安全性
    innodb_flush_log_at_trx_commit = 1
    sync_binlog = 1
    # 非核心業(yè)務(wù)場(chǎng)景:高性能配置,宕機(jī)丟失1秒數(shù)據(jù)
    innodb_flush_log_at_trx_commit = 2
    sync_binlog = 1000
    1. 硬件優(yōu)化:更換 NVMe SSD,分離數(shù)據(jù)文件、binlog、日志到不同磁盤(pán),避免 IO 競(jìng)爭(zhēng)
    2. 關(guān)閉 innodb_flush_neighbors(SSD 場(chǎng)景),減少不必要的鄰頁(yè)刷新

子場(chǎng)景 3.3 死鎖與鎖等待超時(shí)

  • 現(xiàn)象:業(yè)務(wù)報(bào)錯(cuò)Lock wait timeout exceeded; try restarting transaction、Deadlock found when trying to get lock
  • 排查步驟
    1. show engine innodb status;查看最近的死鎖詳細(xì)信息,定位死鎖的 SQL 和事務(wù)
    2. information_schema.innodb_trx查看當(dāng)前運(yùn)行的長(zhǎng)事務(wù)
    3. performance_schema.data_locks查看當(dāng)前持有和等待的鎖
  • 解決方案
    1. 緊急處理:kill 掉導(dǎo)致鎖等待的長(zhǎng)事務(wù),釋放鎖資源
    2. 優(yōu)化 SQL 和索引,避免全表掃描導(dǎo)致的表鎖,減少鎖范圍
    3. 拆分大事務(wù)、長(zhǎng)事務(wù),縮小事務(wù)執(zhí)行時(shí)間,減少鎖持有時(shí)間
    4. 統(tǒng)一業(yè)務(wù)中事務(wù)的更新順序,避免交叉更新導(dǎo)致死鎖
    5. 調(diào)整行鎖等待超時(shí)參數(shù)

    ini

    innodb_lock_wait_timeout = 10

場(chǎng)景 4:主從同步異常

  • 現(xiàn)象:從庫(kù)同步中斷,show slave status\G查看Slave_IO_RunningSlave_SQL_Running為 No
  • 排查與解決方案
    1. IO 線程為 No
      • 常見(jiàn)原因:主庫(kù)網(wǎng)絡(luò)不通、防火墻攔截、主從賬號(hào)密碼錯(cuò)誤、主庫(kù) binlog 未開(kāi)啟、server-id 沖突、主庫(kù) binlog 文件丟失
      • 解決方案:檢查網(wǎng)絡(luò)連通性、防火墻放通端口、確認(rèn)同步賬號(hào)權(quán)限、統(tǒng)一 server-id 集群內(nèi)唯一、重新配置主從同步
    2. SQL 線程為 No
      • 常見(jiàn)原因:主從數(shù)據(jù)不一致、主鍵沖突、從庫(kù)寫(xiě)入、DDL 執(zhí)行失敗、binlog 格式不兼容
      • 解決方案:
        • 臨時(shí)跳過(guò)單個(gè)錯(cuò)誤(非核心數(shù)據(jù)):stop slave; set global sql_slave_skip_counter=1; start slave;
        • 數(shù)據(jù)不一致場(chǎng)景:通過(guò) pt-table-checksum 校驗(yàn)數(shù)據(jù)差異,pt-table-sync 修復(fù)數(shù)據(jù),或重新全量同步主庫(kù)數(shù)據(jù)
    3. 主從延遲過(guò)高
      • 常見(jiàn)原因:從庫(kù)性能不足、大事務(wù)執(zhí)行、無(wú)主鍵表、并行復(fù)制未開(kāi)啟、網(wǎng)絡(luò)延遲
      • 解決方案:開(kāi)啟 MySQL8.0 并行復(fù)制、拆分大事務(wù)、確保所有表有主鍵、提升從庫(kù)硬件配置、優(yōu)化主庫(kù)寫(xiě)入頻率

四、MySQL 全維度性能優(yōu)化

優(yōu)化核心原則:先優(yōu)化業(yè)務(wù) SQL 與索引,再優(yōu)化配置參數(shù),最后優(yōu)化系統(tǒng)與架構(gòu),80% 的性能問(wèn)題都可通過(guò) SQL 與索引優(yōu)化解決。

一、SQL 與索引優(yōu)化(優(yōu)先級(jí)最高)

1. 慢查詢?nèi)罩鹃_(kāi)啟與分析

慢查詢是性能問(wèn)題的核心來(lái)源,生產(chǎn)環(huán)境必須開(kāi)啟,用于定位耗時(shí) SQL。

# /etc/my.cnf 慢查詢配置
slow_query_log = ON
# 日志路徑,確保mysql用戶有寫(xiě)入權(quán)限
slow_query_log_file = /usr/local/mysql/data/slow.log
# 慢查詢閾值,單位秒,超過(guò)1秒的SQL記錄,生產(chǎn)環(huán)境可設(shè)為0.5
long_query_time = 1
# 記錄未使用索引的SQL
log_queries_not_using_indexes = ON
# 限制每分鐘未使用索引的SQL記錄次數(shù),避免日志暴漲
log_throttle_queries_not_using_indexes = 10

慢日志分析工具

# 1. 自帶mysqldumpslow,按執(zhí)行時(shí)間排序,取TOP10慢SQL
mysqldumpslow -s t -t 10 /usr/local/mysql/data/slow.log
# 2. 進(jìn)階工具pt-query-digest(percona-toolkit),生成詳細(xì)分析報(bào)告
pt-query-digest /usr/local/mysql/data/slow.log > slow_report.log

2. 執(zhí)行計(jì)劃 explain 分析

通過(guò) explain 分析 SQL 執(zhí)行計(jì)劃,定位索引失效、全表掃描等問(wèn)題,核心用法:

explain select * from 表名 where 條件;

核心字段關(guān)注重點(diǎn)

表格

字段優(yōu)化要點(diǎn)
type訪問(wèn)類型,最優(yōu)到最差:system > const > eq_ref > ref > range > index > ALL,必須避免 ALL(全表掃描)
key實(shí)際使用的索引,為 NULL 表示未使用索引,需優(yōu)化
rows掃描的行數(shù),數(shù)值越小越好,代表索引效率越高
Extra避免出現(xiàn)Using filesort(文件排序)、Using temporary(臨時(shí)表)、Using where無(wú)索引匹配

3. 索引優(yōu)化最佳實(shí)踐

  • 高頻查詢字段優(yōu)先建索引:where 條件、join 關(guān)聯(lián)字段、order by、group by 字段
  • 聯(lián)合索引遵循最左前綴原則,區(qū)分度高的字段放在索引前列
  • 單表索引數(shù)量控制在 5 個(gè)以內(nèi),避免大量索引導(dǎo)致寫(xiě)入性能下降
  • 避免索引失效場(chǎng)景:索引字段使用函數(shù)運(yùn)算、隱式類型轉(zhuǎn)換、like '% xxx' 前綴模糊查詢、or 連接非索引字段、!=/not in 操作
  • 定期刪除無(wú)用、重復(fù)、低選擇性的索引,通過(guò) pt-index-usage 分析索引使用率
  • 所有表必須有主鍵,優(yōu)先使用自增主鍵,避免 UUID 作為主鍵

4. SQL 編寫(xiě)優(yōu)化規(guī)范

  • 禁止使用 select *,只查詢業(yè)務(wù)需要的字段,減少數(shù)據(jù)傳輸和內(nèi)存占用
  • 避免大表 join 大表,控制 join 的表數(shù)量不超過(guò) 3 個(gè),join 字段必須建索引
  • 避免在 where 子句中對(duì)索引字段進(jìn)行函數(shù)、算術(shù)運(yùn)算,導(dǎo)致索引失效
  • 優(yōu)化深分頁(yè)查詢,如limit 100000,20,改為主鍵過(guò)濾分頁(yè)where id > 100000 limit 20
  • 批量操作代替循環(huán)單條操作,如批量 insert、update,減少數(shù)據(jù)庫(kù)交互次數(shù)
  • 拆分大事務(wù)、長(zhǎng)事務(wù),控制事務(wù)執(zhí)行時(shí)間,避免鎖持有時(shí)間過(guò)長(zhǎng)
  • 禁止在業(yè)務(wù)高峰期執(zhí)行大表 DDL、alter table 操作,使用 pt-online-schema-change 工具無(wú)鎖改表

二、MySQL 配置參數(shù)優(yōu)化(/etc/my.cnf)

以下為適配 /usr/local/mysql 安裝路徑、OpenEuler 系統(tǒng)的優(yōu)化配置,按服務(wù)器內(nèi)存調(diào)整核心參數(shù)。

1. 基礎(chǔ)路徑與通用配置

[mysqld]
# 核心路徑配置(必須與你的安裝路徑一致)
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
socket = /tmp/mysql.sock
pid-file = /usr/local/mysql/data/mysqld.pid
port = 3306
user = mysql
# 字符集配置
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
lower_case_table_names = 1 # 表名大小寫(xiě)不敏感,OpenEuler系統(tǒng)建議開(kāi)啟
default-time_zone = '+8:00'
# 禁用DNS反向解析,提升連接速度
skip-name-resolve

2. 核心內(nèi)存優(yōu)化配置

內(nèi)存優(yōu)化核心原則:專用數(shù)據(jù)庫(kù)服務(wù)器,MySQL 總內(nèi)存占用不超過(guò)系統(tǒng)物理內(nèi)存的 70%,避免 OOM。

表格

參數(shù)優(yōu)化建議
innodb_buffer_pool_size最核心參數(shù),InnoDB 數(shù)據(jù)和索引緩存,專用服務(wù)器設(shè)為物理內(nèi)存的 50%-70%。例:8G 內(nèi)存設(shè) 4G,16G 設(shè) 10G,32G 設(shè) 20G
innodb_buffer_pool_instances緩沖池實(shí)例數(shù),緩沖池大于 8G 時(shí)設(shè)為 4-8 個(gè),每個(gè)實(shí)例至少 1G,減少鎖競(jìng)爭(zhēng)
innodb_log_buffer_sizeredo log 緩沖區(qū),高并發(fā)寫(xiě)入場(chǎng)景設(shè)為 64M-128M,最大不超過(guò) 1G,避免頻繁刷磁盤(pán)
sort_buffer_size每個(gè)會(huì)話排序緩沖區(qū),默認(rèn) 256K,建議不超過(guò) 4M,排序多的場(chǎng)景設(shè) 1M-2M
join_buffer_size每個(gè)會(huì)話 join 緩沖區(qū),默認(rèn) 256K,建議不超過(guò) 4M,避免大表 join 內(nèi)存溢出
read_buffer_size順序讀緩沖區(qū),默認(rèn) 128K,順序掃描多的場(chǎng)景設(shè) 256K-1M
read_rnd_buffer_size隨機(jī)讀緩沖區(qū),默認(rèn) 256K,排序多的場(chǎng)景設(shè) 512K-1M

3. InnoDB 引擎核心優(yōu)化

# IO刷新方式,繞過(guò)操作系統(tǒng)緩存,直接寫(xiě)入磁盤(pán),SSD場(chǎng)景必選,減少雙緩存和swap占用
innodb_flush_method = O_DIRECT
# 事務(wù)刷盤(pán)策略,見(jiàn)前文IO優(yōu)化,根據(jù)業(yè)務(wù)場(chǎng)景選擇
innodb_flush_log_at_trx_commit = 1
# binlog刷盤(pán)策略,與上面參數(shù)配合,雙1配置最高安全性
sync_binlog = 1
# 每個(gè)表獨(dú)立表空間,必須開(kāi)啟,方便表維護(hù)、空間回收,避免ibdata1無(wú)限膨脹
innodb_file_per_table = ON
# IO線程數(shù),多核CPU建議設(shè)為8-16,提升IO并發(fā)能力
innodb_read_io_threads = 16
innodb_write_io_threads = 16
# 臟頁(yè)最大比例,避免臟頁(yè)集中刷盤(pán)導(dǎo)致IO抖動(dòng)
innodb_max_dirty_pages_pct = 60
# 行鎖等待超時(shí)時(shí)間,單位秒,業(yè)務(wù)場(chǎng)景建議5-10秒
innodb_lock_wait_timeout = 10
# 事務(wù)隔離級(jí)別,互聯(lián)網(wǎng)業(yè)務(wù)推薦READ-COMMITTED,減少鎖等待,提升并發(fā)
transaction_isolation = READ-COMMITTED
# 關(guān)閉鄰頁(yè)刷新,SSD場(chǎng)景必關(guān),HDD場(chǎng)景開(kāi)啟
innodb_flush_neighbors = 0
# IO容量設(shè)置,根據(jù)SSD性能調(diào)整,普通SSD設(shè)2000,NVMe SSD設(shè)4000-8000
innodb_io_capacity = 2000
innodb_io_capacity_max = 4000

4. 連接與日志優(yōu)化

# 最大連接數(shù),根據(jù)業(yè)務(wù)場(chǎng)景設(shè)置,建議1000-2000,避免設(shè)置過(guò)大
max_connections = 2000
# 連接超時(shí)時(shí)間,自動(dòng)關(guān)閉空閑連接,單位秒
wait_timeout = 600
interactive_timeout = 600
# 最大錯(cuò)誤連接數(shù),避免頻繁錯(cuò)誤連接導(dǎo)致IP封禁
max_connect_errors = 1000
# binlog配置(主從同步、數(shù)據(jù)恢復(fù)必開(kāi))
server-id = 1 # 集群內(nèi)必須唯一
log_bin = /usr/local/mysql/data/mysql-bin
binlog_format = ROW # 行級(jí)模式,推薦,主從同步更安全
binlog_row_image = FULL
# binlog自動(dòng)過(guò)期時(shí)間,7天,避免磁盤(pán)占滿(MySQL8.0推薦用秒級(jí)配置)
binlog_expire_logs_seconds = 604800
# MySQL5.7用天級(jí)配置
# expire_logs_days = 7
# 錯(cuò)誤日志配置,排查故障核心,必須開(kāi)啟
log_error = /usr/local/mysql/data/mysql-error.log
log_error_verbosity = 3

三、OpenEuler 系統(tǒng)級(jí)內(nèi)核優(yōu)化

OpenEuler 針對(duì)服務(wù)器場(chǎng)景深度優(yōu)化,通過(guò)內(nèi)核參數(shù)調(diào)整可大幅提升 MySQL 性能,適配 x86 / 鯤鵬 ARM 架構(gòu)。

1. 內(nèi)核參數(shù)優(yōu)化(/etc/sysctl.conf)

編輯/etc/sysctl.conf,添加以下配置,執(zhí)行sysctl -p立即生效。

# 內(nèi)存優(yōu)化
# 盡量不使用swap,數(shù)據(jù)庫(kù)專用服務(wù)器設(shè)為1,避免swap導(dǎo)致性能暴跌
vm.swappiness = 1
# 臟頁(yè)達(dá)到20%時(shí),后臺(tái)開(kāi)始異步刷盤(pán)
vm.dirty_ratio = 20
# 臟頁(yè)達(dá)到10%時(shí),后臺(tái)啟動(dòng)刷盤(pán)
vm.dirty_background_ratio = 10
# 嚴(yán)格控制內(nèi)存分配,避免OOM
vm.overcommit_memory = 2
# 允許分配的內(nèi)存不超過(guò)物理內(nèi)存的80%+swap
vm.overcommit_ratio = 80
# IO優(yōu)化
# 最大異步IO數(shù)量,適配InnoDB
fs.aio-max-nr = 1048576
# 系統(tǒng)級(jí)最大文件句柄數(shù)
fs.file-max = 2097152
# 網(wǎng)絡(luò)優(yōu)化,高并發(fā)連接場(chǎng)景
# 監(jiān)聽(tīng)隊(duì)列最大長(zhǎng)度,默認(rèn)128,高并發(fā)必須調(diào)大
net.core.somaxconn = 65535
# SYN隊(duì)列最大長(zhǎng)度
net.ipv4.tcp_max_syn_backlog = 65535
# TIME_WAIT超時(shí)時(shí)間,默認(rèn)60,調(diào)小減少端口占用
net.ipv4.tcp_fin_timeout = 30
# 允許TIME_WAIT端口復(fù)用,高并發(fā)必須開(kāi)啟
net.ipv4.tcp_tw_reuse = 1
# 最大TIME_WAIT數(shù)量
net.ipv4.tcp_max_tw_buckets = 200000
# 網(wǎng)絡(luò)設(shè)備接收隊(duì)列最大長(zhǎng)度
net.core.netdev_max_backlog = 30000
# 端口范圍,擴(kuò)大可用端口數(shù)
net.ipv4.ip_local_port_range = 1024 65535
# 讀寫(xiě)緩沖區(qū)最大值
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
# 鯤鵬ARM架構(gòu)專屬優(yōu)化(x86可忽略)
kernel.sched_steal_node_limit=4

2. 文件句柄限制優(yōu)化

MySQL 需要大量文件句柄,默認(rèn) 1024 遠(yuǎn)遠(yuǎn)不足,編輯/etc/security/limits.conf,添加以下配置,重啟服務(wù)器生效。

mysql  soft  nofile  65535
mysql  hard  nofile  1048576
mysql  soft  nproc   65535
mysql  hard  nproc   1048576
root   soft  nofile  1048576
root   hard  nofile  1048576

生效后執(zhí)行ulimit -n,確認(rèn)輸出為 65535 及以上。

3. IO 調(diào)度器優(yōu)化

  • NVMe SSD / 固態(tài)硬盤(pán):推薦使用none/noop調(diào)度器,減少 IO 調(diào)度開(kāi)銷
  • 機(jī)械硬盤(pán) HDD:推薦使用mq-deadline調(diào)度器,優(yōu)化尋道效率
# 查看當(dāng)前調(diào)度器(sda為你的磁盤(pán)名,根據(jù)實(shí)際修改)
cat /sys/block/sda/queue/scheduler
# 臨時(shí)修改
echo none > /sys/block/sda/queue/scheduler
# 永久生效:編輯/etc/default/grub,在GRUB_CMDLINE_LINUX中添加elevator=none,更新grub后重啟生效

4. CPU 性能優(yōu)化

關(guān)閉 CPU 節(jié)能模式,設(shè)置為性能模式,避免 CPU 降頻導(dǎo)致性能波動(dòng)。

# 臨時(shí)設(shè)置為性能模式
cpupower frequency-set -g performance
# 永久生效:在BIOS中關(guān)閉CPU節(jié)能模式,或配置systemd服務(wù)開(kāi)機(jī)執(zhí)行

四、架構(gòu)級(jí)長(zhǎng)期優(yōu)化

  1. 讀寫(xiě)分離:主庫(kù)負(fù)責(zé)寫(xiě)入,從庫(kù)負(fù)責(zé)讀取,分擔(dān)讀壓力,適配讀多寫(xiě)少的業(yè)務(wù)場(chǎng)景
  2. 分庫(kù)分表:?jiǎn)伪頂?shù)據(jù)量超過(guò) 1000 萬(wàn)、單庫(kù)容量超過(guò) 100G 時(shí),實(shí)施水平 / 垂直分庫(kù)分表,降低單表負(fù)載
  3. 緩存架構(gòu):搭配 Redis 緩存熱點(diǎn)數(shù)據(jù)、高頻查詢結(jié)果,減少 MySQL 數(shù)據(jù)庫(kù)訪問(wèn)壓力
  4. 高可用架構(gòu):部署 MGR(MySQL Group Replication)、Keepalived + 雙主架構(gòu),避免單點(diǎn)故障,提升服務(wù)可用性
  5. 冷熱數(shù)據(jù)分離:歷史冷數(shù)據(jù)歸檔到單獨(dú)的庫(kù) / 表,熱數(shù)據(jù)保留在主庫(kù),大幅提升查詢性能

五、日常運(yùn)維與故障預(yù)防

  • 日常巡檢核心項(xiàng)
    • 服務(wù)狀態(tài)、端口監(jiān)聽(tīng)、主從同步狀態(tài)
    • 磁盤(pán)空間使用率、binlog 增長(zhǎng)情況
    • CPU、內(nèi)存、IO 負(fù)載是否有異常飆升
    • 錯(cuò)誤日志是否有新增 ERROR 告警
    • 慢查詢?nèi)罩臼欠裼行略霎惓B?SQL
    • 當(dāng)前連接數(shù)、鎖等待、長(zhǎng)事務(wù)情況
  • 監(jiān)控告警部署
    • 推薦使用Prometheus + Grafana + mysqld_exporter搭建監(jiān)控體系,覆蓋連接數(shù)、QPS/TPS、緩存命中率、IO 延遲、主從延遲等核心指標(biāo)
    • 設(shè)置磁盤(pán)空間、CPU 負(fù)載、服務(wù)狀態(tài)、主從中斷的告警規(guī)則,提前發(fā)現(xiàn)風(fēng)險(xiǎn)
  • 備份策略
    • 制定定期備份計(jì)劃:每日全量備份 + 每小時(shí) binlog 增量備份
    • 備份文件異地存儲(chǔ),定期執(zhí)行備份恢復(fù)測(cè)試,確保備份可用
    • 生產(chǎn)環(huán)境禁止在業(yè)務(wù)高峰期執(zhí)行備份,大庫(kù)推薦使用percona-xtrabackup熱備工具
  • 常用運(yùn)維工具推薦
    • percona-toolkit:MySQL 運(yùn)維神器,包含慢日志分析、表同步、無(wú)鎖改表、索引分析等工具
    • pt-stalk:故障捕獲工具,異常時(shí)自動(dòng)捕獲系統(tǒng)和數(shù)據(jù)庫(kù)狀態(tài),用于事后排查
    • binlog2sql:binlog 解析工具,生成回滾 SQL,用于誤刪數(shù)據(jù)恢復(fù)
    • sysbench:MySQL 壓測(cè)工具,用于驗(yàn)證優(yōu)化效果、性能測(cè)試

重要注意事項(xiàng)

  1. 所有配置修改、參數(shù)優(yōu)化,必須先在測(cè)試環(huán)境驗(yàn)證,再上線生產(chǎn)環(huán)境,避免配置錯(cuò)誤導(dǎo)致服務(wù)不可用
  2. 優(yōu)化參數(shù)循序漸進(jìn),每次僅修改 1-2 個(gè)核心參數(shù),觀察性能變化,避免一次性修改大量參數(shù)導(dǎo)致無(wú)法定位問(wèn)題
  3. 生產(chǎn)環(huán)境任何數(shù)據(jù)修改、表結(jié)構(gòu)變更、服務(wù)重啟,必須先備份,制定回滾方案,避免數(shù)據(jù)丟失
  4. 生產(chǎn)環(huán)境禁止開(kāi)啟通用查詢?nèi)罩?general_log,會(huì)嚴(yán)重影響數(shù)據(jù)庫(kù)性能,僅臨時(shí)排查問(wèn)題時(shí)使用
  5. 注意 MySQL 版本與 OpenEuler 系統(tǒng)的兼容性,鯤鵬 ARM 架構(gòu)必須使用對(duì)應(yīng) ARM 版本的 MySQL 安裝包,避免兼容性問(wèn)題

到此這篇關(guān)于OpenEuler系統(tǒng)MySQL故障排查終極指南實(shí)戰(zhàn)教程的文章就介紹到這了,更多相關(guān)OpenEuler MySQL故障排查內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

枣庄市| 陵水| 江安县| 莒南县| 霍林郭勒市| 姚安县| 贡觉县| 九龙县| 天水市| 资源县| 叶城县| 化德县| 莱阳市| 洪泽县| 吉安县| 子洲县| 洪湖市| 云南省| 化州市| 新疆| 东莞市| 云和县| 万安县| 日照市| 鸡东县| 马公市| 永登县| 万安县| 洮南市| 香河县| 台中市| 达日县| 临海市| 密云县| 定结县| 雅安市| 龙江县| 金华市| 开原市| 三门峡市| 兰西县|