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


閱讀排行
本欄相關
- 04-02怎么忽略mysql密碼 mysql怎么取消密碼
- 04-02mysql文字亂碼怎么辦 mysql中文亂碼怎樣
- 04-02怎么把數(shù)組導入mysql 把數(shù)據(jù)放入數(shù)組
- 04-02mysql配置怎么解決 mysql配置失敗怎么重
- 04-02mysql企業(yè)版怎么安裝 mysql數(shù)據(jù)庫企業(yè)版
- 04-02怎么更改mysql到d盤 mysql怎么移到d盤
- 04-02mysql怎么看表大小寫 mysql表大小查詢
- 04-02Mysql怎么關聯(lián)多個表 mysql 關聯(lián)
- 04-02mysql怎么查語句 mysql數(shù)據(jù)查詢語句
- 04-02怎么關閉mysql的自啟 關閉mysql自啟動
隨機閱讀
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 01-10C#中split用法實例總結(jié)
- 01-11ajax實現(xiàn)頁面的局部加載
- 04-02jquery與jsp,用jquery