mysql Last_Error: Error 'File './sales.MYD' not found (Errcode: 24)

mysql主從同步拋出異常:


 Last_Error: Error 'File './law/sales.MYD' not found (Errcode: 24)' on query. Default database: 'law'. Query: 'UPDATE law.sales SET usertyp='6', qqnu='', mobil='', phon='', areacod=',150000,150100,150101,150102,150103,150104,150105,150106,150107,150108,150109,150110,150112,150113,150114,150115,150116,150117,150118,150200,150201,150202,150203,150204,150205,150206,150207,150208,150209,150210,150211,150212,150213,150214,150215,150300,150301,150302,150303,150304,150305,150306,150307,150308,150309,150310,150311,150312,150313,150314,150315,150316,150317,150700,150701,150702,150703,150704,150705,150706,150707,150708,150709,150800,150801,150802,150803,150804,150900,150901,150902,150903,150904,150905,150906,150907,150908,150909,150910,150911,150912,150913,150914,151100,151101,151102,151103,151104,151105,151106,151107,151108,151109,151110,210000,210500,210501,210502,210503,210504,210505,210506,210507,210508,210600,210601,210602,210603,210604,210800,210801,210802,210803,210804,210805,210806,
   

     Skip_Counter: 0


直接的處理方法:

    重啓從數據庫,這樣就可以執行過去。因爲剛啓動的時候是不會超過文件限制的。


系列分析命令:

用perror工具查看具體錯誤:

[root@workserv bin]# pwd
/usr/local/mysql/bin
[root@workserv bin]# ./perror 24
OS error code  24:  Too many open files


錯誤爲超出最大打開文件數限制。

查看系統的最大打開文件數: 65535不存在超出的可能。

[root@workserv1 bin]# ulimit -n
65535


查看數據庫的最大打開文件數的限制:

mysql> show variables like 'open_files_limit';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| open_files_limit | 4156  |
+------------------+-------+

如果這個值太小不夠用,可以設置足夠大 , 修改 my.cnf

open_files_limit = 8000


另外可以查看當前打開的文件數:

mysql> show status like '%Open_files%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Open_files    | 473   |
+---------------+-------+
1 row in set (0.00 sec)

mysql 引擎: myisam根據架構,每查詢一個表需要打開兩個文件及使用兩個文件句柄,類推查詢使用到多少個表就要使用2倍於多少個文件句柄。

*.frm   *.MYD   *.MYI


系統的修正限制打開文件數方法:使用 sysctl

[root@xxx]# sysctl -w fs.file-max=43621
[root@xxx]# sysctl -a | grep fs.file-max
fs.file-max = 43621





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章