我有一个 wordpress MU 数据库,其中包含用于各种用户博客的 10,000 多个表。我需要将 wordpress MU 升级到最新版本,但想事先备份数据库。
当我单击导出时,PHPMyAdmin 甚至无法加载页面。我试过进入服务器(windows)并使用dos命令行:
mysqldump -u USERNAME -p PASSWORD> BACKUP.sql
但它挂了一分钟并给了我错误:
error 23: out of resources when opinging file '.\USERNAME\wp_1037_links.MYD' (Errorcode: 24) when using LOCK Tables
我做错了什么,或者我应该做什么?PHPMyAdmin 适合这种大小的东西吗?有没有比我尝试过的两种方法更好的方法?
**请注意,这不是我的网站,因此有关数据库设置的任何建议都必须由所有者运行。我只是来找 WP 相关的废话,这超出了我被要求做的事情的范围。
尝试以下操作:mysqldump --lock-all-table -u USERNAME -p PASSWORD > BACKUP.sql
请注意,如果这是实时的,它可能会停止站点的运行。
该错误表明您的服务器上的资源不足;原因可能是由于锁定:mysqldump 在读取表时隐式锁定表。如果数据库上有很多活动,MySQL 将需要为 mysqldump 事务保留一份旧数据的副本;对于足够大的表,这可能是一个真正的问题。
如果您不太关心数据一致性,您可以使用
--skip-lock-tables
(-q
实际上不会起作用,它只会阻止输出缓冲。这可能有用,但不会解决您的问题) 和--single-transaction
.我遇到了同样的问题,我认为它是 my.cnf 的 open_files_limit 变量
只需更新您的 my.cnf
open_files_limit=20000
[& 重新开始]
该值应该是 2 * 您在数据库中拥有的表数。如果这不起作用,请尝试 3* 数量的表。如果那也没有,请不要增加,因为这不是您的问题。再次搜索解决方案;-)
您可以尝试mysql administrator,但 mysqldump 抛出这样的错误似乎很奇怪。
这听起来更像是服务器上的一般 RAM 或硬盘问题。那是虚拟机吗?首先检查你的硬盘
quota
。即使尝试访问表,mySQL 也可能空间不足——在这种情况下,即使是压缩备份也无济于事。您遇到的错误是:
shell>perror 23
错误代码 23: Too many open files in system
shell>perror 24
Error code 24: Too many open files
更多信息在这里:
forums.mysql.com/read.php?35,7639 ,7639#msg-7639
但是您可能已经知道 mysqldump 不是执行 mysql 备份的唯一方法,也不是最好的方法。
我假设您使用 Innodb 作为存储引擎,所以我建议使用 innodb 的“热”备份实用程序:ibbackup。
(它也可以为 myisam 执行备份,但与 mysqlhotcopy 相比没有优势)
但是对于真正的 Mysql 数据库保护,您可以建议激活 mysql 服务器上的二进制日志(他们说它只会降低 1% 的性能)所以你可以这样做——及时恢复如下所示:dev.mysql.com/doc/refman/5.0/en/point-in-time-recovery.html。
如果上述替代方案都不适合您,为什么不选择:
1. SELECT INTO ... OUTFILE
2. 考虑到您的提供商的环境,您可以做文件系统快照。
3. 或(我知道我在推它)Mysql 复制从属 :)
4. 如果使用 myisam,只需用读锁刷新表并复制文件
5. 请求将 mysql 服务器升级到 6.0(当它达到 GA 时)并执行备份像这样:
mysql> BACKUP DATABASE 'db-name' to 'c:\backups\whynotswitchtounix.bkp';
(注意潜意识信息:))
mysqldump -q -u 用户名 -ppassword 数据库 > file.sql
-q 避免在转储期间锁定表
事实上,InnoDB Hot Backup 实用程序是一个很棒的工具,但您可能更喜欢 Percona 最近发布的免费工具:XtraBackup。它执行 InnoDB 和 XtraDB 表的在线备份,并可以创建完整和增量备份。
尝试使用gzip压缩您的 sql 文件以进行备份http://www.gzip.org/
也许扩展你的虚拟内存......
让所有者联系托管公司进行快速备份