我有一个在 MySQL 数据库后端运行的网站,该网站每天通过以下命令备份:
mysqldump -h server.com -uuser -ppass database > /home/directory/backup`date +"%Y%m%d"`.sql
我注意到,随着数据库变得越来越大,备份需要的时间越来越长(可能需要几分钟),网站在备份过程中无法正常运行。
需要在备份期间加载数据库的页面会在备份期间挂起,直到备份完成才能加载。它们通常似乎不会超时,直到备份完成后出现 MySql 超时 30 秒错误 - 尽管已经过去了 30 多秒。
我猜测 mysqldump 命令正在锁定对数据库某些部分的访问并阻止来自 Web 服务器的客户端连接,但找不到有关此内容的更多信息。
我在服务器上运行 mysql 5,并且表是 ISAM 格式。
答案1
您可以使用复制将数据库复制到另一个数据库,然后备份副本。
答案2
对于 MyISAM 表,您也可以使用 mysqlhotcopy。但是,这不会消除您的问题,因为这也使用表锁。因此,我还建议您查看复制。