这是一个比听起来更棘手的问题。我在许多服务器上运行 Ruby/MySQL 并使用 mysqldump 没有任何问题。但是,我使用的是 Ubuntu 设置,它的行为似乎与 Fedora 和 RHEL 大不相同。当我使用 mysqldump 备份生产服务器时,它导致 Rails 无法访问。 Apache 仍然能够提供图像并且 CPU/内存使用率很低,因此它似乎纯粹是与 RoR 和 MySQL 的竞争。我正在使用 InnoDB,它允许 mysqldump 在 Fedora 服务器上备份这个完全相同的数据库,而无需任何停机时间。但是,另一台服务器运行的是 Ruby 1.8.7 和 Rails 2.3。
这是完整的服务器规范:
Ubuntu 10
Rails 3
RVM
Ruby 1.9.2
Passenger
Apache
MySQL
额外的“线索”:
我可以很好地连接到生产数据库并使用 mysql 客户端访问记录
我可以使用 Rails 控制台加载生产环境并使用 ActiveRecord 查询表
我无法通过 Apache/Passenger 访问生产网络服务器,也无法在使用 Webrick 运行生产实例时访问它(通过“rails s -e production”)
关于为什么 mysqldump 会阻塞 Rails(而且只阻塞 Rails)有什么想法吗?
最佳答案
所以这个东西有一个答案(来自上面的评论):
please use mysqldump with params --single-transaction – Neo Apr 22 at 14:59
关于ruby-on-rails-3 - mysqldump 阻塞 Ruby on Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5756589/