这是一个比听起来更棘手的问题。我在许多服务器上运行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访问生产web服务器,当我使用Webrick运行生产实例时(通过'rails s -e production')也不能访问它
关于为什么mysqldump会阻塞Rails(并且只有Rails)的任何想法?
所以这个东西有一个答案(来自上面的评论):
请使用mysqldump与params -single-transaction - Neo Apr 22 at14:59