mysql配置怎么解決 mysql配置失敗怎么重新配置
解決Mysql錯(cuò)誤Too many connections的方法
MySQL數(shù)據(jù)庫(kù) Too many connections
出現(xiàn)這種錯(cuò)誤明顯就是 mysql_connect 之后忘記 mysql_close;
當(dāng)大量的connect之后,就會(huì)出現(xiàn)Too many connections的錯(cuò)誤,mysql默認(rèn)的連接為100個(gè),而什么情況下會(huì)出現(xiàn)這種錯(cuò)誤呢?
正常的mysql_connect 之后調(diào)用 mysql_close()關(guān)閉連接
但在連接錯(cuò)誤時(shí),會(huì)者mysql_real_query()出現(xiàn)錯(cuò)誤退出時(shí),可能忘記mysql_close();
所以在程序return 之前一定要判斷是否close(),最穩(wěn)妥的方法就是在寫任何函數(shù)時(shí)都只有一個(gè)出口!
還有可以通過(guò)修改mysql配置文件來(lái)加大允許連接的數(shù)量!
有時(shí)你的服務(wù)器是經(jīng)常出現(xiàn)這樣的錯(cuò)誤呢:
錯(cuò)誤信息如下:
Can not connect to MySQL server
Error: Too many connections
Errno.: 1040
Similar error report has beed dispatched to administrator before.
從官方文檔知道Linux上面編譯安裝的mysql默認(rèn)的連接為100個(gè)
文檔:
mysql官方告訴我們需要修改max_connections的值,那么我們?cè)趺慈バ薷哪??有兩種方法
1、修改配置文件文件
修改/etc/my點(diǎn)吸煙f這個(gè)文件,在[mysqld] 中新增max_connections=N,如果你沒(méi)有這個(gè)文件請(qǐng)從編譯源碼中的support-files文件夾中復(fù)制你所需要的*點(diǎn)吸煙f文件為到 /etc/my點(diǎn)吸煙f。我使用的是my-medium點(diǎn)吸煙f,中型服務(wù)器配置。例如我的[mysqld]的內(nèi)容如下
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 160M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
max_connections=1000
由于對(duì)mysql還不是很熟悉,所以很多參數(shù)沒(méi)有修改。哈哈。。
2、非使用mysqld腳本自動(dòng)啟動(dòng)的用戶。
修改MYSQLHOME/bin/mysqldsafe文件例如:/usr/local/mysql/bin/mysqldsafe這個(gè)文件grep?n‘maxconnection′
MYSQLHOME/bin/mysqldsafe文件例如:/usr/local/mysql/bin/mysqldsafe這個(gè)文件grep?n‘maxconnection′MYSQL_HOME/bin/mysqld_safe
修改對(duì)應(yīng)行號(hào)的max_connections參數(shù)值
3、服務(wù)器登錄mysql : mysql -u root -p
百分之九十進(jìn)不去,進(jìn)不去的執(zhí)行重啟命令 :/etc/init.d/mysql restart(centos系統(tǒng))
此時(shí)重啟mysql就能連接mysql了,如果還有時(shí)間,可以繼續(xù)下一步,治病要治本
打開(kāi)配置文件 添加一下配置 vi /etc/my點(diǎn)吸煙f
wait_timeout = 600
interactive_timeout = 600
再次重啟mysql即可
原理解答
mysql 默認(rèn)100 連接數(shù),超過(guò)則連不上,實(shí)際工作的連接數(shù)遠(yuǎn)遠(yuǎn)沒(méi)有100,大部分在sleep
所以要么增大連接數(shù),要么殺掉無(wú)用連接,推薦后者。
我的MYSQL是5.0版本的,運(yùn)行總是會(huì)報(bào)錯(cuò),請(qǐng)問(wèn)如何解決?
1、可能是/opt/mysql-master/data/數(shù)據(jù)目錄mysql用戶沒(méi)有權(quán)限(修改數(shù)據(jù)目錄的權(quán)限)
解決方法 :給予權(quán)限,執(zhí)行 "chown -R mysql.mysql /opt/mysql-master/data" 然后重新啟動(dòng)mysqld
2、可能進(jìn)程里已經(jīng)存在mysql進(jìn)程
解決方法:用命令“ps -ef|grep mysqld”查看是否有mysqld進(jìn)程,如果有使用“kill -9 進(jìn)程號(hào)”殺死,然后重新啟動(dòng)mysqld!
3、可能是第二次在機(jī)器上安裝mysql,有殘余數(shù)據(jù)影響了服務(wù)的啟動(dòng)。
解決方法:去mysql的二進(jìn)制日志目錄看看,如果存在mysql-binlog.index,就趕快把它刪除掉吧
4、mysql在啟動(dòng)時(shí)沒(méi)有指定配置文件時(shí)會(huì)使用/etc/my點(diǎn)吸煙f配置文件,請(qǐng)打開(kāi)這個(gè)文件查看在[mysqld]下有沒(méi)有指定數(shù)據(jù)目錄(datadir)。
解決方法:請(qǐng)?jiān)赱mysqld]下設(shè)置這一行:datadir = /opt/mysql-master/data
5、skip-federated字段問(wèn)題
解決方法:檢查一下/etc/my點(diǎn)吸煙f文件中有沒(méi)有沒(méi)被注釋掉的skip-federated字段,如果有就立即注釋掉吧。
6、錯(cuò)誤日志目錄不存在
解決方法:使用“chown” “chmod”命令賦予mysql所有者及權(quán)限
7、selinux惹的禍,如果是centos系統(tǒng),默認(rèn)會(huì)開(kāi)啟selinux
解決方法:
先臨時(shí)改為警告模式:[[email protected] php]# setenforce 0然后打開(kāi)/etc/sysconfig/selinux,把SELINUX=enforcing改為SELINUX=disabled
8、可以試著把mysql點(diǎn)吸煙f默認(rèn)文件開(kāi)啟,排查是不是配置文件的錯(cuò)誤。
常見(jiàn)配置錯(cuò)誤有:
查看配置文件/etc/my點(diǎn)吸煙f里有沒(méi)有innodb_buffer_pool_size這個(gè)參數(shù)
innodb_buffer_pool_size:主要作用是緩存innodb表的索引,數(shù)據(jù),插入數(shù)據(jù)時(shí)的緩沖;
默認(rèn)值:128M;專用mysql服務(wù)器設(shè)置此值的大?。?系統(tǒng)內(nèi)存的70%-80%最佳。如果你的系統(tǒng)內(nèi)存不大,查看這個(gè)參數(shù),把它的值設(shè)置小一點(diǎn)吧
溫馨提示:記得開(kāi)啟mysql錯(cuò)誤日志,方便自己排錯(cuò)。
vim /etc/my點(diǎn)吸煙f 各位可以根據(jù)自己的my點(diǎn)吸煙f文件編輯[mysql_safe]
log-error = /data/mysql-master/logs/error.log
mysql配置過(guò)大內(nèi)存導(dǎo)致無(wú)法啟動(dòng)怎么辦 如何解決
查看 /proc/meminfo
Tips:
“大內(nèi)存頁(yè)”也稱傳統(tǒng)大頁(yè)、大頁(yè)內(nèi)存等有助于 Linux 進(jìn)行虛擬內(nèi)存的管理,標(biāo)準(zhǔn)的內(nèi)存頁(yè)為 4KB,這里使用“大內(nèi)存頁(yè)”最大可以定義 1GB 的頁(yè)面大小,在系統(tǒng)啟動(dòng)期間可以使用“大內(nèi)存頁(yè)”為應(yīng)用程序預(yù)留一部分內(nèi)存,這部分內(nèi)存被占用且永遠(yuǎn)不會(huì)被交換出內(nèi)存,它會(huì)一直保留在那里,直到改變配置。(詳細(xì)介紹請(qǐng)看下面鏈接官方解釋)
那么這么大頁(yè)內(nèi)存是分配給誰(shuí)的呢?
查詢一下:
shell /proc/sys/vm/hugetlb_shm_group
27
shell id 27
uid=27(mysql) gid=27(mysql) groups=27(mysql)
hugetlb_shm_group 文件里填的是指定大頁(yè)內(nèi)存使用的用戶組 id,這里查看到是 MySQL 組 id,那既然是給 MySQL 的為什么 free 等于 total,并且 mysql 還只有 20 多 G 實(shí)際使用內(nèi)存呢?
原來(lái)在 MySQL 中還有專門啟用大內(nèi)存頁(yè)的參數(shù),在 MySQL 大內(nèi)存頁(yè)稱為 large page。
查看 MySQL 配置文件
發(fā)現(xiàn)配置文件中確實(shí)有 large-page 配置,但出于禁用狀態(tài)。
后與業(yè)務(wù)確認(rèn),很早之前確實(shí)啟用過(guò) mysql 的 large page,不過(guò)后面禁用了。排查到這基本就有了結(jié)論。
結(jié)論
這套環(huán)境之前開(kāi)啟了 20000 的大內(nèi)存頁(yè),每頁(yè)大小為 2MB,占用了 40G 內(nèi)存空間,給 MySQL 使用,并且 MySQL 開(kāi)啟了 large page,但后來(lái)不使用的時(shí)候,只關(guān)閉了 MySQL 端的 large page 參數(shù),但沒(méi)有實(shí)際更改主機(jī)的關(guān)于大內(nèi)存頁(yè)的配置,所以導(dǎo)致,實(shí)際上主機(jī)上的還存在 20000 的大內(nèi)存頁(yè),并且沒(méi)在使用,這一部分長(zhǎng)期空閑,并且其他程序不能使用。
所以 MySQL 在使用 20G 內(nèi)存左右,整個(gè)主機(jī)內(nèi)存就飽和了,然后在部分條件下,就觸發(fā)了 OOM,導(dǎo)致 mysqld 被 kill,但主機(jī)上又有 mysqld_safe 守護(hù)程序,所以又再次給拉起來(lái),就看到了文章初的偶爾連接不上的現(xiàn)象。
解決Docker Mysql無(wú)法正確加載配置文件
使用-v映射宿主機(jī)下的文件作為mysql的配置文件時(shí),可能出現(xiàn)mysql無(wú)法正確讀取文件中配置項(xiàng)的問(wèn)題
該問(wèn)題的主要原因?yàn)樗拗鳈C(jī)的文件權(quán)限不對(duì),由于docker的mysql鏡像啟動(dòng)使用的是mysql這個(gè)用戶,而非root用戶,mysql用戶的id和gid都為999
通過(guò)修改宿主機(jī)文件的權(quán)限可以解決該問(wèn)題
上一篇:怎么把數(shù)組導(dǎo)入mysql 把數(shù)據(jù)放入數(shù)組
欄 目:Mysql
下一篇:mysql文字亂碼怎么辦 mysql中文亂碼怎樣用代碼解決
本文標(biāo)題:mysql配置怎么解決 mysql配置失敗怎么重新配置
本文地址:http://mengdiqiu.com.cn/a1/Mysql/17186.html
您可能感興趣的文章
- 04-02怎么忽略mysql密碼 mysql怎么取消密碼
- 04-02mysql文字亂碼怎么辦 mysql中文亂碼怎樣用代碼解決
- 04-02怎么把數(shù)組導(dǎo)入mysql 把數(shù)據(jù)放入數(shù)組
- 04-02mysql企業(yè)版怎么安裝 mysql數(shù)據(jù)庫(kù)企業(yè)版
- 04-02怎么更改mysql到d盤 mysql怎么移到d盤
- 04-02mysql怎么看表大小寫 mysql表大小查詢
- 04-02Mysql怎么關(guān)聯(lián)多個(gè)表 mysql 關(guān)聯(lián)
- 04-02怎么關(guān)閉mysql的自啟 關(guān)閉mysql自啟動(dòng)
- 04-02mysql怎么查語(yǔ)句 mysql數(shù)據(jù)查詢語(yǔ)句


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02怎么忽略mysql密碼 mysql怎么取消密碼
- 04-02mysql文字亂碼怎么辦 mysql中文亂碼怎樣
- 04-02怎么把數(shù)組導(dǎo)入mysql 把數(shù)據(jù)放入數(shù)組
- 04-02mysql配置怎么解決 mysql配置失敗怎么重
- 04-02mysql企業(yè)版怎么安裝 mysql數(shù)據(jù)庫(kù)企業(yè)版
- 04-02怎么更改mysql到d盤 mysql怎么移到d盤
- 04-02mysql怎么看表大小寫 mysql表大小查詢
- 04-02Mysql怎么關(guān)聯(lián)多個(gè)表 mysql 關(guān)聯(lián)
- 04-02mysql怎么查語(yǔ)句 mysql數(shù)據(jù)查詢語(yǔ)句
- 04-02怎么關(guān)閉mysql的自啟 關(guān)閉mysql自啟動(dòng)
隨機(jī)閱讀
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開(kāi)原生自帶讀寫NTFS功能(圖文
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-10C#中split用法實(shí)例總結(jié)
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 04-02jquery與jsp,用jquery