mysql故障排查與環境優化

一、mysql運行原理
?? ?mysql的運行分為三層
?? ?客戶端和連接服務
?? ?
?? ?核心服務功能(sql接口、緩存的查詢、sql的分析和優化以及部分內置函數的執行等。)

?? ?存儲引擎層(負責mysql中數據的存儲和提取。)
?

二、示例
1、實驗環境單臺mysql1主+1從
2、mysql單實例故障排查
現象1:ERROR 2002 (HY000):can't connect to local MySQL server through socket '/data/mysql/mysql.sock'(2)分析:一般是數據庫未啟動、mysql配置文件未指定socket文件或者數據庫端口被防火墻攔截導致。解法:啟動數據庫或者防火墻開放數據庫監聽端口。現象2:ERROR 1045 (28000):Access denied for user 'root'@'localhost' (using password:NO)分析:密碼不正確或沒有權限訪問。解法:修改my.cnf主配置文件,在[mysqld]下添加skip-grant-talbes=on,重啟數據庫,最后修改密碼命令如下。	5.7版本
mysql> update mysql.user set authentication_string=password('123456') where user='root' and Host='localhost';
mysql> flush privileges;8.0版本
mysql> update mysql.user set authentication_string='' where user='root' and Host='localhost';
mysql> flush privileges;
mysql> alter user 'root'@'localhost' identified by '123456';再刪除剛添加的skip-grant-tables參數,重啟數據庫,使用新密碼即可登錄。重新授權,命令如下。5.7版本
mysql> grant all on *.* to 'root'@'mysql-server' identified by '123456';8.0版本
mysql> create user 'root'@'mysql-server' identified  by '123456';
mysql> grant all on *.* to 'root'@'mysql-server';現象3:在使用遠程連接數據庫時偶爾會發生遠程連接數據庫很慢的問題。分析:開啟了dns解析功能。解法:修改my.cnf主配置文件,在[mysqld]下添加skip-name-resolve,重啟數據庫可以解決。注意在以后授權里面不能再使用主機名授權。現象4:Can't open file: 'xxx_forums.MYI'. (error:145)分析:服務器非正常關機,數據庫所在空間已滿,或一些其它未知的原因,對數據庫表造成了孫環。可能是操作系統下直接將數據庫文件拷貝移動,會因為文件的屬組問題而產生這個錯誤。解法:myisamchk -r 數據文件目錄/數據表名.MYI;  # 僅適合獨立主機用戶。或修改文件的屬組。復制數據庫文件的過程中沒有將數據庫文件設置為MySQL運行的賬號可讀寫。 # 僅適合獨立主機用戶。現象5:ERROR 1129 (HY000):Host 'xxx.xxx.xxx.xxx' is blocked because of many connection errors;unblock with 'mysqladmin flush-hosts'分析:超出了mysql的總連接請求數,新的連接會無法連接。解法:使用mysqladmin flush-hosts命令清除緩存即可。mysqladmin -uroot -p -h ip flush-hosts 或修改mysql配置文件,在[mysqld]下面添加max_connect_errors=1000,然后重啟。現象6:客戶端報 Too many connections.分析:連接數超出mysql的最大連接數限制。解法:在my.cnf配置文件中增大連接數,然后重啟mysqlmax_connections=1000或臨時修改最大連接數。set GLOBAL max_connections=1000;現象7:Warning:World-writable config file '/etc/my.cnf' is ignoredERROR! MySQL is running but PID file could not be found分析:mysql的配置文件/etc/my.cnf權限不對。解法:chmod 644 /etc/my.cnf現象8:InnoDB: Error: page 14178 log sequence number 29455369832InnoDB: is in the future! Current system log sequence number 29455369832分析:innodb數據文件損壞。解法:修改my.cnf配置文件,在[mysqld]下添加innodb_force_recovery=4,啟動數據庫后備份數據文件,然后去掉該參數,利用備份文件恢復數據。MySQL主從故障排查現象1從庫的Slave_IO_Running 為 NOThe slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).分析:主庫和從庫的server-id值一樣。解法:修改從庫的server-id值,與主庫不一樣,重啟mysql后再同步即可。現象2從庫的Slave_IO_Running 為 NO分析:原因很多,例如主鍵沖突、主庫刪除,從庫找不到記錄、數據被修改導致。通常狀態碼報錯有1007、1032、1062、1452等。解法:
mysql> stop slave; 
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;  # 設置全局sql從屬計數器為1.
mysql> start slave;或mysql> set global read_only=true; # 設置用戶權限,從庫只讀。現象3Error initializing relay log position: I/O error reading the header from the binary log分析:從庫的中繼日志relay-log損壞。解法:手工修復,重新找到同步的binlog和pos點,然后重新同步即可。mysql>chan gemaster to master_log_file='mysql-bin.xxxxxx',master_log_pos=xxx;mysql的sql語句優化創建測試表并插入數據
mysql> create database test;
Query OK, 1 row affected (0.02 sec)mysql> use test;
Database changed
mysql> create table users(-> id int primary key auto_increment,-> name varchar(50) not null,-> email varchar(100) not null,-> age int not null,-> created_at datetime default current_timestamp-> );
Query OK, 0 rows affected (0.04 sec)mysql> delimiter $$  # 設置分隔符,用$$來作為當前語句的終止符,以便后續存儲過程使用它作為分隔符。
mysql> create procedure ii_users()  # 創建存儲程序-> begin  # 開始存儲程序。-> declare i int default 0;  # 聲明變量。-> while i < 100000 do  # 執行循環插入數據。當i小于10萬時,進入循環,name列由concat('user',i)生成,如user1、user2等,email列由concat('user',i,'@example.com')生成,如'user1@example.com',age列通過floor(rand() * 100) 隨機生成0到99之間的整數值。 通過 i = i + 1 來更新變量的值。-> insert into users(name,email,age) -> values (concat('user',i),concat('user',i,'@example.com'),-> floor(rand() * 100));-> set i = i + 1;-> end while;  # 結束循環-> end$$  #結束存儲程序,使用之前的$$作為終止符。
Query OK, 0 rows affected (0.01 sec)
mysql> delimiter ;  # 恢復語句分隔符,將默認的語句分隔符恢復為; 避免后續查詢出錯。
mysql> call ii_users();   # 執行存儲過程。
Query OK, 1 row affected (6 min 34.95 sec)mysql> explain select * from users where name = 'user123';
+----+-------------+-------+------------+------+---------------+------+---------+------+-------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key  | key_len | ref  | rows  | filtered | Extra       |
+----+-------------+-------+------------+------+---------------+------+---------+------+-------+----------+-------------+
|  1 | SIMPLE      | users | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 99909 |    10.00 | Using where |
+----+-------------+-------+------------+------+---------------+------+---------+------+-------+----------+-------------+
1 row in set, 1 warning (0.00 sec)mysql> alter table users add index idx_name(name);  # 優化,創建索引。
Query OK, 0 rows affected (0.68 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> explain select * from users where name = 'user123';  # 查詢使用了索引,大大提高了查詢效率。
+----+-------------+-------+------------+------+---------------+----------+---------+-------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key      | key_len | ref   | rows | filtered | Extra |
+----+-------------+-------+------------+------+---------------+----------+---------+-------+------+----------+-------+
|  1 | SIMPLE      | users | NULL       | ref  | idx_name      | idx_name | 152     | const |    1 |   100.00 | NULL  |
+----+-------------+-------+------------+------+---------------+----------+---------+-------+------+----------+-------+explian用于顯示mysql如何執行一條sql語句,關鍵字段解釋:
字段 說明 優化關注點
id 查詢序列號,相同id為同一執行層,不同id按序執行。select_type 查詢類型(simple、primary、subquery、derived等) 識別子查詢或臨時表操作。table  訪問的表名或別名。  確認查詢涉及的表。type  訪問類型 性能從優到劣:system > const > eq_ref > ref > range > index > ALL 避免ALL(全表掃描),優先優化為ref或range。possible_keys 可能使用的索引    檢查是否有合適索引未被使用。key  實際使用的索引    確認是否命中最佳索引rows 預估掃描的行數	行數越少,查詢效率越高。extra	附加信息(如 using where 、using index、using temporary等) 發現潛在性能問題(如臨時表、文件排序)。

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

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

相關文章

Codex與LangChain結合的智能代理架構:重塑軟件開發的未來

??「炎碼工坊」技術彈藥已裝填! 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 引言:當代碼生成遇見智能決策 想象以下場景: 凌晨三點:你需要緊急修復一個遺留系統的內存泄漏漏洞,但代碼注釋缺失且邏輯復雜; 產品經理需求變更:要求在24小時內將現有…

【開源Agent框架】CAMEL:角色扮演+任務分解

一、項目概覽:重新定義智能體協作范式 CAMEL(Communicative Agents for “Mind” Exploration of Large Language Model Society)是由camel-ai社區開發的開源多智能體框架,致力于探索智能體的規模法則(Scaling Laws)。該項目通過構建包含百萬級智能體的復雜社會系統,研…

第32節:基于ImageNet預訓練模型的遷移學習與微調

1. 引言 在深度學習領域,遷移學習(Transfer Learning)已經成為解決計算機視覺任務的重要方法,特別是在數據量有限的情況下。其中,基于ImageNet數據集預訓練的模型因其強大的特征提取能力而被廣泛應用于各種視覺任務。本文將詳細介紹遷移學習的概念、ImageNet預訓練模型的特…

celery獨立部署接入數據庫配置

目錄結構&#xff1a; config下配置&#xff1a; __init__: import os import sys sys.path.append(os.getcwd()) from celery import CeleryappCelery(celeryTester) # 創建一個Celery實例&#xff0c;名字自定義 app.config_from_object(config.celery_config) # 從celery_…

攻防世界-題目名稱-文件包含

進入環境 看到 include()&#xff0c;想到文件包含&#xff0c;用php偽協議 /?filenamephp://filter/readconvert.base64-encode/resourceflag.php do not hack!猜測可能是黑名單檢測的敏感字符 輸入單個字符串/?filenamebase64 還是顯示do not hack&#xff01; 構造payl…

MySQL高頻面試八連問(附場景化解析)

文章目錄 "為什么訂單查詢突然變慢了&#xff1f;"——從這個問題開始說起一、索引的生死時速&#xff08;必考題&#xff01;&#xff09;二、事務的"套娃"藝術三、鎖機制的相愛相殺四、存儲引擎的抉擇五、慢查詢的破案技巧六、分頁的深度優化七、高可用架…

Android 中 自定義生成的 APK/AAR 文件名稱

在 Kotlin DSL 中&#xff0c;可以通過配置 build.gradle.kts 文件來自定義生成的 APK 或 AAR 文件名稱。 1、自定義 APK 名稱 在模塊的 build.gradle.kts 中通過修改 applicationVariants.all 配置來實現。 android {......applicationVariants.all {outputs.all {val df …

《從零開始:Spring Cloud Eureka 配置與服務注冊全流程》?

關于Eureka的學習&#xff0c;主要學習如何搭建Eureka&#xff0c;將order-service和product-service都注冊到Eureka。 1.為什么使用Eureka? 我在實現一個查詢訂單功能時&#xff0c;希望可以根據訂單中productId去獲取對應商品的詳細信息&#xff0c;但是產品服務和訂單服…

鴻蒙開發進階:深入解析ArkTS語言特性與高性能編程實踐

一、前言 在鴻蒙生態蓬勃發展的當下&#xff0c;開發者對于高效、優質的應用開發語言需求愈發迫切。ArkTS 作為鴻蒙應用開發的核心語言&#xff0c;在繼承 TypeScript 優勢的基礎上&#xff0c;進行了諸多優化與擴展&#xff0c;為開發者帶來了全新的編程體驗。本文將深入剖析…

ARM-Linux 完全入門

1.準備部分 1.1 虛擬機安裝 準備VMware軟件、ubuntu系統鏡像安裝過程 VMware安裝 破解&#xff08;自己百度破解碼&#xff0c;多試幾個網址&#xff0c;會有能用的&#xff09;Ubuntu安裝 配置聯網 橋接 虛擬機Ubuntu系統必須能連接到外網&#xff0c;不然不能更新軟件安裝…

深度學習驅動下的目標檢測技術:原理、算法與應用創新(三)

五、基于深度學習的目標檢測代碼實現 5.1 開發環境搭建 開發基于深度學習的目標檢測項目&#xff0c;首先需要搭建合適的開發環境&#xff0c;確保所需的工具和庫能夠正常運行。以下將詳細介紹 Python、PyTorch 等關鍵開發工具和庫的安裝與配置過程。 Python 是一種廣泛應用于…

致敬經典 << KR C >> 之打印輸入單詞水平直方圖和以每行一個單詞打印輸入 (練習1-12和練習1-13)

1. 前言 不知道有多少同學正在自學C/C, 無論你是一個在校學生, 還是已經是上班族. 如果你想從事或即將從事軟件開發這個行業, C/C都是一個幾乎必須要接觸的系統級程序開發語言. 雖然現在有Rust更安全的系統級編程語言作為C/C的替代, 但作為入門, C應該還是要好好學的. C最早由B…

【Leetcode 每日一題】3355. 零數組變換 I

問題背景 給定一個長度為 n n n 的整數數組 n u m s nums nums 和一個二維數組 q u e r i e s queries queries&#xff0c;其中 q u e r i e s [ i ] [ l i , r i ] queries[i] [l_i, r_i] queries[i][li?,ri?]。 對于每個查詢 q u e r i e s [ i ] queries[i] quer…

[java八股文][Java虛擬機面試篇]垃圾回收

什么是Java里的垃圾回收&#xff1f;如何觸發垃圾回收&#xff1f; 垃圾回收&#xff08;Garbage Collection, GC&#xff09;是自動管理內存的一種機制&#xff0c;它負責自動釋放不再被程序引用的對象所占用的內存&#xff0c;這種機制減少了內存泄漏和內存管理錯誤的可能性…

ubuntu服務器版啟動卡在start job is running for wait for...to be Configured

目錄 前言 一、原因分析 二、解決方法 總結 前言 當 Ubuntu 服務器啟動時&#xff0c;系統會顯示類似 “start job is running for wait for Network to be Configured” 或 “start job is running for wait for Plymouth Boot Screen Service” 等提示信息&#xff0c;并且…

Android 手寫簽名功能詳解:從原理到實踐

Android 手寫簽名功能詳解 1. 引言2. 手寫簽名核心實現&#xff1a;SignatureView 類3. 交互層實現&#xff1a;MainActivity 類4. 布局與配置5. 性能優化與擴展方向 1. 引言 在電子政務、金融服務等移動應用場景中&#xff0c;手寫簽名功能已成為提升用戶體驗與業務合規性的關…

【nRF9160 常用prj.conf配置與AT指令介紹】

參考資料&#xff1a; 技術討論&#xff1a;Q群&#xff1a;542294007 nRF91 NCS SDK安裝工具與SDK安裝包等常用軟件下載地址 云盤下載&#xff1a;pan.olib.cn 一、nRF9160 常用prj.conf配置介紹 nRF9160通過prj.conf配置網絡模式為&#xff1a;CAT-M模式 CONFIG_LTE_NETWOR…

小型化邊緣計算設備

以下是關于小型化邊緣計算設備的核心技術與應用特點的綜合分析&#xff1a; 一、核心硬件平臺與算力表現? NVIDIA Jetson Orin系列? Jetson Orin Nano?&#xff1a;配備1024個CUDA核心和32個Tensor核心&#xff0c;支持高達100 TOPS的AI算力&#xff0c;適用于機器人、無…

css使用clip-path屬性切割顯示可見內容

1. 需求 想要實現一個漸變的箭頭Dom&#xff0c;不想使用svg、canvas去畫&#xff0c;可以考慮使用css的clip-path屬性切割顯示內容。 2. 實現 <div class"arrow">箭頭 </div>.arrow{width: 200px;height: 60px;background-image: linear-gradient(45…

Kotlin與物聯網(IoT):Android Things開發探索

在物聯網&#xff08;IoT&#xff09;領域&#xff0c;Kotlin 憑借其簡潔性、安全性和與 Java 生態的無縫兼容性&#xff0c;逐漸成為 Android Things 開發的有力工具。盡管 Google 已于 2022 年宣布停止對 Android Things 的官方支持&#xff0c;但其技術思想仍值得探索&#…