在InnoDB
,MyISAM
等引擎中。
当我们使用mysqldump与选项--single-transaction
等时,使用该选项是什么?
即,请参阅此处的代码。
/usr/bin/mysqldump -h ${HOST} -u${SOURCEUSER} -p${SOURCEPASS} \
--skip-add-drop-table -t --skip-lock-tables --single-transaction --skip-add-locks --complete-insert -q -e --skip-disable-keys \
--where="ID=${ID}" \
${SOURCEDB} ${SOURCETABLE} | sed -e "s/INSERT INTO/REPLACE INTO/" | sed -e "s/${SOURCETABLE}/${TARGETTABLE}/g" | /usr/bin/mysql -u${TARGETUSER} -p${TARGETPASS} ${TARGETDB} ;
请解释一下!感谢名单!
答案 0 :(得分:0)
直接从dev.mysql.com报价
此选项将事务隔离模式设置为REPEATABLE READ,并在转储数据之前向服务器发送START TRANSACTION SQL语句。它仅对InnoDB等事务表有用,因为它在发出START TRANSACTION时转储了数据库的一致状态,而没有阻塞任何应用程序。
如果您需要阅读更多内容:
使用此选项时,应记住只有InnoDB表以一致状态转储。例如,使用此选项时转储的任何MyISAM或MEMORY表仍可能更改状态。
虽然正在进行--single-transaction转储,但为了确保有效的转储文件(正确的表内容和二进制日志坐标),其他任何连接都不应使用以下语句:ALTER TABLE,CREATE TABLE,DROP TABLE,RENAME表,TRUNCATE表。一致读取不会与这些语句隔离,因此在要转储的表上使用它们会导致mysqldump执行的SELECT检索表内容以获取不正确的内容或失败。
--single-transaction选项和--lock-tables选项是互斥的,因为LOCK TABLES会导致隐式提交任何挂起的事务。
要转储大型表,请将--single-transaction选项与--quick选项结合使用。
以下是网址:link