mysql數據庫太大滿了,數據庫數據滿了

本文目錄一覽:

MySQL 內存佔用總是太高,你需要立即進行這些操作……

生產環境中,MySQL 不經意間吃掉全部的內容,然後開始吃掉 SWAP,性能一降再降,怎麼辦?

可以從下面三點查看原因:

MySQL 使用內存,有兩個途徑。

永久佔用的內容

比如全局緩衝區(Global Buffer)類別,是在服務器啟動期間從操作系統獲得的,不會釋放到任何一個別的進程。

動態請求的內存

線程緩衝區由MySQL使用,它是在處理新查詢時從操作系統請求的內存。在執行查詢之後,該內存被釋放回操作系統。

這意味着 MySQL 的內存使用,是 全局緩衝區 加上 線程緩衝區 以及 允許的最大連接數 。

對於專用數據庫服務器,該值需要保持在服務器內存的90%以下。在共享服務器的情況下,它應該保持在服務器內存的50%以下。

檢查一下 MySQL 設置,有助於確定內存使用情況,從而為 MySQL 分配合適的值。

一個近似的公式:

當網站受到攻擊時,有可能在短時間內建立異常高的連接數量。MySQL 中的 PROCESSLIST 可用於檢測頂級用戶並阻止對濫用連接的訪問。

找出查詢需要很長時間才能執行的語句,因為這些查詢需要進一步優化服務器才能更好地執行,可以通過服務器查詢日誌進行識別。由於查詢速度慢,導致磁盤讀取較多,導致內存和CPU使用率較高,影響服務器性能。

最後,到了加內存條的時候了。雖然在優化數據庫設置之後,服務器會不斷地路由到使用交換內存,但也必須增加內存。俗話說:“巧婦難為無米之炊”,就是這個意思。

上面說的這些方向,大家可以在實際操作中驗證體會,希望大家在數據庫優化的路上,麻溜順暢,砥礪前行。

mysql 盤滿了怎麼辦

操作系統:CentOS 6.2

現象:MySQL無法啟動

查找問題發現:存放mysql數據分區100%

[root@jinniu-test3 mysql]# df -h

文件系統 容量 已用 可用 已用%% 掛載點

/dev/sda2 49G 49G 20K 100% /

tmpfs 933M 0 933M 0% /dev/shm

/dev/sda1 194M 31M 153M 17% /boot

/dev/sda5 219G 701M 207G 1% /opt

檢查/etc/my.cnf,數據文件默認存放於/var/lib/mysql下

確認此文件夾確實過大

解決方案:轉移存放目錄,修改my.cnf或者軟連接回來

[root@-_- ~]# cp -Rp /var/lib/mysql /opt/ –帶權限拷貝整個目錄

修改/etc/my.cnf配置datadir=/opt/mysql指向新位置

重啟mysql發現無法啟動

[root@-_- ~]# service mysqld start

MySQL Daemon failed to start.

正在啟動 mysqld: [失敗]

檢查/var/log/mysqld.log文件最後

[root@-_- ~]# tail -20 /var/log/mysqld.log

130301 11:52:05 [Warning] Can’t create test file /opt/mysql/-_-.lower-test

130301 11:52:05 [Warning] Can’t create test file /opt/mysql/-_-.lower-test

網絡搜索問題得知是這台機器啟用SElinux 安全策略引起的

使用命令可以解決

[root@-_- ~]# chcon -R -t mysqld_db_t /opt/mysql

實在不行,禁用SElinux

執行:setenforce 0

mysql數據庫太大了怎麼備份

命令:mysqlhotcopy

這個命令會在拷貝文件之前會把表鎖住,並把數據同步到數據文件中,以避免拷貝到不完整的數據文件,是最安全快捷的備份方法。

命令的使用方法是:

mysqlhotcopy -u root -prootpass db1 db2 … dbn output_dir

如果需要備份全部數據庫,可以加上–regexp=”.*”參數。

Mysqlhotcopy命令可自動完成數據鎖定工作,備份時不用關閉服務器。

它還可以刷新日誌,使備份文件和日誌文件的檢查點能保持同步。

Mysql數據庫CPU佔用過高原因排查 show processlist

mysql服務器最近偶爾出現cpu百分百居高不下的情況,所以需要進行分析

兄弟命令 show processlist;只列出前100條,如果想全列出請使用show full processlist;

先 簡單說一下各列的含義和用途:

正在將表中修改的數據刷新到磁盤中,同時正在關閉已經用完的表。這是一個很快的操作,如果不是這樣的話,就應該確認磁盤空間是否已經滿了或者磁盤是否正處於重負中。

Connect Out

複製從服務器正在連接主服務器。

Copying to tmp table on disk

由於臨時結果集大於 tmp_table_size,正在將臨時表從內存存儲轉為磁盤存儲以此節省內存。

Creating tmp table

正在創建臨時表以存放部分查詢結果。

deleting from main table

服務器正在執行多表刪除中的第一部分,剛刪除第一個表。

deleting from reference tables

服務器正在執行多表刪除中的第二部分,正在刪除其他表的記錄。

Flushing tables

正在執行 FLUSH TABLES,等待其他線程關閉數據表。

Killed

發送了一個kill請求給某線程,那麼這個線程將會檢查kill標誌位,同時會放棄下一個kill請求。MySQL會在每次的主循環中檢查kill標誌 位,不過有些情況下該線程可能會過一小段才能死掉。如果該線程程被其他線程鎖住了,那麼kill請求會在鎖釋放時馬上生效。

Locked

被其他查詢鎖住了。

Sending data

正在處理 SELECT 查詢的記錄,同時正在把結果發送給客戶端。

Sorting for group

正在為 GROUP BY 做排序。

Sorting for order

正在為 ORDER BY 做排序。

Opening tables

這個過程應該會很快,除非受到其他因素的干擾。例如,在執 ALTER TABLE 或 LOCK TABLE 語句行完以前,數據表無法被其他線程打開。 正嘗試打開一個表。

Removing duplicates

正在執行一個 SELECT DISTINCT 方式的查詢,但是MySQL無法在前一個階段優化掉那些重複的記錄。因此,MySQL需要再次去掉重複的記錄,然後再把結果發送給客戶端。

Reopen table

獲得了對一個表的鎖,但是必須在表結構修改之後才能獲得這個鎖。已經釋放鎖,關閉數據表,正嘗試重新打開數據表。

Repair by sorting

修復指令正在排序以創建索引。

Repair with keycache

修復指令正在利用索引緩存一個一個地創建新索引。它會比 Repair by sorting 慢些。

Searching rows for update

正在講符合條件的記錄找出來以備更新。它必須在 UPDATE 要修改相關的記錄之前就完成了。

Sleeping

正在等待客戶端發送新請求.

System lock

正在等待取得一個外部的系統鎖。如果當前沒有運行多個 mysqld 服務器同時請求同一個表,那麼可以通過增加 –skip-external-locking參數來禁止外部系統鎖。

U pgrading lock

INSERT DELAYED 正在嘗試取得一個鎖表以插入新記錄。

Updating

正在搜索匹配的記錄,並且修改它們。

User Lock

正在等待 GET_LOCK()。

Waiting for tables

該線程得到通知,數據表結構已經被修改了,需要重新打開數據表以取得新的結構。然後,為了能的重新打開數據表,必須等到所有其他線程關閉這個表。以下幾種 情況下會產生這個通知:FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE, 或 OPTIMIZE TABLE。

waiting for handler insert

INSERT DELAYED 已經處理完了所有待處理的插入操作,正在等待新的請求。

大部分狀態對應很快的操作,只要有一個線程保持同一個狀態好幾秒鐘,那麼可能是有問題發生了,需要檢查一下。

還有其他的狀態沒在上面中列出來,不過它們大部分只是在查看服務器是否有存在錯誤是才用得着。

文章轉自:

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/186949.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-27 06:00
下一篇 2024-11-27 13:33

相關推薦

  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • Python爬取公交數據

    本文將從以下幾個方面詳細闡述python爬取公交數據的方法: 一、準備工作 1、安裝相關庫 import requests from bs4 import BeautifulSou…

    編程 2025-04-29
  • Python兩張表數據匹配

    本篇文章將詳細闡述如何使用Python將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

    編程 2025-04-29
  • Python數據標準差標準化

    本文將為大家詳細講述Python中的數據標準差標準化,以及涉及到的相關知識。 一、什麼是數據標準差標準化 數據標準差標準化是數據處理中的一種方法,通過對數據進行標準差標準化可以將不…

    編程 2025-04-29
  • 如何使用Python讀取CSV數據

    在數據分析、數據挖掘和機器學習等領域,CSV文件是一種非常常見的文件格式。Python作為一種廣泛使用的編程語言,也提供了方便易用的CSV讀取庫。本文將介紹如何使用Python讀取…

    編程 2025-04-29

發表回復

登錄後才能評論