Board logo

标题: [已解决] 数据库自动备份脚本sh,无法备份原因! [打印本页]

作者: zyojl    时间: 2017-4-27 20:39     标题: 数据库自动备份脚本sh,无法备份原因!

今天在使用数据库自动备份的时候无法备份!
自动备份http://wdlinux.cn/bbs/thread-7809-1-1.html
运行数据库导出命令出现如下错误(数据库表数量不多的能备份,表多的出现如下错误!)
mysqldump: Got error: 1016: Can't open file: './sq_tlwx/ims_  mon_house.frm' (errno: 24) when using LOCK TABLES


3.png
2017-4-27 20:30



于是在网上找资料:


因为在默认情况下mysqdump是将 lock-tables设置为true,即默认时锁定当前表(没有加lock-all-tables参数,lock-all-tables是全局读锁,锁定库下的所有表保证数据的一致性,加上这个参数为自动关闭single-transaction 和 lock-tables 选项)。虽然说这样以来解决了问题,但用同样的语句(mysqldump -uroot -pmypass test1 > d:\test1.sql)在master上备份成功了,所以针对那个”can’t open file“,感觉还应该有其他的问题存在或是解决方法(可能是真正的解决方法),用show status like ‘%open%’;查看open_tables值,当前打开表的数量

+------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | Com_ha_open | 0 | | Com_show_open_tables | 0 | | Open_files | 462 | |Open_streams | 0 | | Open_tables | 256 | | Opened_tables | 4 | |Slave_open_temp_tables | 0 | +------------------------+-------+

用show variables like ‘%open%’;查看open_files_limit的值,操作系统允许 mysqld打开文件的数量

+-------------------+----------+ | Variable_name | Value | +-------------------+----------+ | have_openssl | DISABLED | | innodb_open_files | 300 | | open_files_limit | 622| +-------------------+----------+

open_files_limit的系统默认值为max_connections*5 或 max_connections + table_cache*2。
看来应该是open_files_limit设置过小,造成打开的文件过多,导致’xxx.frm’无法打开,open_files_limit的值很明显是默认值,并为手设置过。
打开my.ini文件(我的是windows系统。linux为my.cnf),在mysqld中添加:open_files_limit=4500,保存并重启动mysql数据库,然后再用同样的mysqldump语句备份数据库,成功执行!





推荐使用方法:在my.cnf中的mysqld中添加:open_files_limit=4500,保存并重启动mysql数据库

图片附件: 3.png (2017-4-27 20:30, 3.48 KB) / 下载次数 5443
http://www.wdlinux.cn/bbs/attachment.php?aid=7245&k=8e07cc07a90bb9140a348ee572e973eb&t=1709300883&sid=JUSjjM






欢迎光临 WDlinux官方论坛 (http://www.wdlinux.cn/bbs/) Powered by Discuz! 7.2