【发布时间】:2012-04-11 22:19:14
【问题描述】:
我即将将我们的生产数据库迁移到另一台服务器。它大约有 38GB 大,并且使用的是 MISAM 表。由于我无法物理访问新的服务器文件系统,我们只能使用 mysqldump。
我已经浏览了这个网站,看看mysqldump在线备份是否会导致我们的生产网站崩溃。来自这篇文章:Run MySQLDump without Locking Tables,它说显然 mysqldump 会锁定数据库并阻止插入。但是经过几次测试后,我很想知道它是否显示。
如果我使用
mysqldump -u root -ppassword --flush-logs testDB > /tmp/backup.sql
mysqldump 最终会默认执行一个 '--lock-tables',这是一个 READ LOCAL 锁 (refer to mysql 5.1 doc),其中并发插入仍然可用.我已经做了一个 for 循环,每秒插入一个表,而 mysqldump 需要一分钟才能完成。在此期间,每一秒都会插入一条记录。这意味着,mysqldump 不会中断生产服务器,INSERT 仍然可以继续。
有没有人有不同的经历?我想在继续我的生产服务器之前确保这一点,所以很高兴知道我是否做错了什么导致我的测试不正确。
[我的mysql-server版本是5.1.52,mysqldump是10.13]
【问题讨论】:
-
您应该获得对新服务器 FIRST 的访问权限,并且可能正在寻找 mysql 复制来解决迁移问题。 记住:您可以转储并安装到新服务器,但是在您转储数据后,将会有 MORE 新的写入,您如何将新写入同步到新服务器?
-
后续的新数据写入,我们将使用mysqlbinlog解决,请注意。现在我主要关心的是第一次使用 mysqldump 进行备份。我只是想确定 mysqldump 是否会阻止 INSERT。根据我的测试,它没有显示它会。只是想确定其他体验如何。