分享一下Mysql常見的幾個錯誤問題及解決方法
1.問題: mysql DNS反解:skip-name-resolve
錯誤日志有類似警告:
1.120119 16:26:04 [Warning] IP address '192.168.1.10' could not be resolved: Name or service not known
2.120119 16:26:04 [Warning] IP address '192.168.1.14' could not be resolved: Name or service not known
3.120119 16:26:04 [Warning] IP address '192.168.1.17' could not be resolved: Name or service not known
通過show processlist發(fā)現(xiàn)大量類似如下的連接:
1.|592|unauthenticated user|192.168.1.10:35320|NULL|Connect| |login|NULL|
2.|593|unauthenticated user|192.168.1.14:35321|NULL|Connect| |login|NULL|
3.|594|unauthenticated user|192.168.1.17:35322|NULL|Connect| |login|NULL|
skip-name-resolve 參數(shù)的作用:不再進行反解析(ip不反解成域名),這樣可以加快數(shù)據庫的反應時間。
修改配置文件添加并需要重啟:
[mysqld]
skip-name-resolve
2.問題錯誤日志:Error: Can't create a new thread (errno 12)
數(shù)據庫服務器問題,數(shù)據庫操作無法創(chuàng)建新線程。一般是有以下3個方面的原因:
1)、MySQL 線程開得太多。
2)、服務器系統(tǒng)內存溢出。
3)、環(huán)境軟件損壞或系統(tǒng)損壞。
【問題解決】
1.1)進入 phpmyadmin 的 mysql 數(shù)據庫中的 user 表,對數(shù)據庫的用戶進行編輯,修改 max_connections 的值。適當?shù)母男∫稽c。
2.2)聯(lián)系服務器管理員檢查服務器的內存和系統(tǒng)是否正常,如果服務器內存緊張,請檢查一下哪些進程消耗了服務器的內存,同時考慮是否增加服務器的內存來提高整個系統(tǒng)的負載能力。
3.3)mysql版本更改為穩(wěn)定版本
4.4)優(yōu)化網站程序的sql等等
3. 操作報錯:ERROR 1010 (HY000): Error dropping database
1.mysql> drop database xjtrace;
2.ERROR 1010 (HY000): Error dropping database (can't rmdir './xjtrace/
在做數(shù)據庫刪除時出現(xiàn)這種提示,其原因是在database下面含有自己放進去的文件,譬如*.txt文件或*.sql文件等,只要進去把這個文件刪了在執(zhí)行。
1.mysql>drop database xjtrace;
2.Query OK, 0 rows affected (0.00 sec)
果斷刪除即可??!
4.導出數(shù)據很快,導入到新庫時卻很慢:
MySQL導出的SQL語句在導入時有可能會非常非常慢,經歷過導入僅400萬條記錄,竟用了近2個小時。在導出時合理使用幾個參數(shù),可以大大加快導入的速度。
-e 使用包括幾個VALUES列表的多行INSERT語法;
--max_allowed_packet=XXX 客戶端/服務器之間通信的緩存區(qū)的最大大小;
--net_buffer_length=XXX TCP/IP和套接字通信緩沖區(qū)大小,創(chuàng)建長度達net_buffer_length的行
注意:max_allowed_packet和net_buffer_length不能比目標數(shù)據庫的配置數(shù)值大,否則可能出錯。
首先確定目標庫的參數(shù)值
mysql> show variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)
mysql> show variables like 'net_buffer_length';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| net_buffer_length | 16384 |
+-------------------+-------+
1 row in set (0.00 sec)
根據參數(shù)值書寫mysqldump命令,如:
mysql>mysqldump -uroot -p 數(shù)據庫名 -e --max_allowed_packet=1048576 -net_buffer_length=16384 > SQL文件
例如:
1.mysql> mysqldump -uroot -p xjtrace -e --max_allowed_packet=1048576 --net_buffer_length=16384 >xjtrace_data_`date +%F`.sql
之前2小時才能導入的sql現(xiàn)在幾十秒就可以完成了。
相關文章
Mysql使用sum()函數(shù)返回null的問題詳解
MySQL的Sum()函數(shù)是用來找出所有記錄的一個字段的總和,下面這篇文章主要給大家介紹了關于Mysql使用sum()函數(shù)返回null的問題,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-01-01
mysql優(yōu)化小技巧之去除重復項實現(xiàn)方法分析【百萬級數(shù)據】
這篇文章主要介紹了mysql優(yōu)化小技巧之去除重復項實現(xiàn)方法,結合實例形式分析了mysql去除重復項的方法,并附帶了隨機查詢優(yōu)化的相關操作技巧,需要的朋友可以參考下2020-01-01

