使用mysqldump选项--single-transaction

时间:2015-05-07 09:03:19

标签: mysqldump

InnoDBMyISAM等引擎中。 当我们使用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} ;

请解释一下!感谢名单!

1 个答案:

答案 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