我有一个使用mysql作为后端的java应用程序,每天晚上我们使用mysqldump备份mysql,应用程序会在这段时间内停止工作(应用程序20分钟)。
用于进行备份的命令。
$MYSQLDUMP -h $HOST --user=$USER --password=$PASS $database > \
$BACKDIR/$SERVER-mysqlbackup-$database-$DATE.sql
gzip -f -9 $BACKDIR/$SERVER-mysqlbackup-$database-$DATE.sql这是正常的,还是我做错了什么导致数据库在这段时间内停滞?
谢谢,K
发布于 2011-02-05 00:03:37
我怀疑您正在使用MyISAM,并且表正在锁定。我建议您切换到InnoDB并使用单事务标志。这将允许继续更新,并将保持一致的状态。
发布于 2011-02-04 23:54:16
mysqldump必须获得表的读锁定,并在备份期间保持该读锁定,以确保一致的备份。但是,如果写操作发生在两者之间(即read -> write -> read),读锁可以阻止后续的读操作:第一个读锁会阻塞写锁,写锁也会阻塞第二个读锁。
这在一定程度上取决于您的表类型。如果您使用的是MyISAM,则锁将应用于整个表,因此整个表将被锁定。我相信InnoDB中的锁是以不同的方式工作的,并且这不会锁定整个表。
发布于 2011-02-05 00:01:27
If tables are stored in the InnoDB storage engine, mysqldump provides a
way of making an online backup of these (see command below).
shell> mysqldump --all-databases --single-transaction > all_databases.sql这可能会有帮助..。特别是--单一事务选项,而不是--all-database选项...(来自mysqldump手册页)
https://stackoverflow.com/questions/4899935
复制相似问题