天天看點

Mysql常見的幾個錯誤問題及解決方法:

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發現大量類似如下的連接配接:

  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 參數的作用:不再進行反解析(ip不反解成域名),這樣可以加快資料庫的反應時間。

修改配置檔案添加并需要重新開機:

  1. [mysqld]
  2. skip-name-resolve

2.問題錯誤日志:Error: Can't create a new thread (errno 12)

資料庫伺服器問題,資料庫操作無法建立新線程。一般是有以下3個方面的原因:

1)、MySQL 線程開得太多。

2)、伺服器系統記憶體溢出。

3)、環境軟體損壞或系統損壞。

【問題解決】

  1. 1)進入 phpmyadmin 的 mysql 資料庫中的 user 表,對資料庫的使用者進行編輯,修改 max_connections 的值。适當的改小一點。
  2. 2)聯系伺服器管理者檢查伺服器的記憶體和系統是否正常,如果伺服器記憶體緊張,請檢查一下哪些程序消耗了伺服器的記憶體,同時考慮是否增加伺服器的記憶體來提高整個系統的負載能力。
  3. 3)mysql版本更改為穩定版本
  4. 4)優化網站程式的sql等等

3.  操作報錯:ERROR 1010 (HY000): Error dropping database

  1. mysql> drop database xjtrace;
  2. ERROR 1010 (HY000): Error dropping database (can't rmdir './xjtrace/

在做資料庫删除時出現這種提示,其原因是在database下面含有自己放進去的檔案,譬如*.txt檔案或*.sql檔案等,隻要進去把這個檔案删了在執行。

  1. mysql>drop database xjtrace;
  2. Query OK, 0 rows affected (0.00 sec)

果斷删除即可!!

4.導出資料很快,導入到新庫時卻很慢:

MySQL導出的SQL語句在導入時有可能會非常非常慢,經曆過導入僅400萬條記錄,竟用了近2個小時。在導出時合理使用幾個參數,可以大大加快導入的速度。

-e 使用包括幾個VALUES清單的多行INSERT文法;

--max_allowed_packet=XXX 用戶端/伺服器之間通信的緩存區的最大大小;

--net_buffer_length=XXX TCP/IP和套接字通信緩沖區大小,建立長度達net_buffer_length的行

注意:max_allowed_packet和net_buffer_length不能比目标資料庫的配置數值大,否則可能出錯。

首先确定目标庫的參數值

  1. mysql> show variables like 'max_allowed_packet';
  2. +--------------------+---------+
  3. | Variable_name | Value |
  4. | max_allowed_packet | 1048576 |
  5. 1 row in set (0.00 sec)
  6. mysql> show variables like 'net_buffer_length';
  7. +-------------------+-------+
  8. | net_buffer_length | 16384 |

根據參數值書寫mysqldump指令,如:

mysql>mysqldump -uroot -p   資料庫名 -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現在幾十秒就可以完成了。

繼續閱讀