MySQL 命令行工具之 mysqldump 深入研究(8)

12> 导出单个库中库结构、表结构、表数据,排除某个表:mysqldump -uxxx -p --databases db1 --ignore-table=db1.test > db1.sql

4. mysqldump 事务 和 数据一致性(锁) 的相关选项

在使用mysqldump逻辑备份时,事务和数据一致性的选项时至关重要的。

1) --single-transaction
      Creates a consistent snapshot by dumping all tables in a single transaction. Works ONLY for tables stored in storage engines which

support multiversioning (currently only InnoDB does); the dump is NOT guaranteed to be consistent for other storage engines.

While a --single-transaction dump is in process, to ensure a valid dump file (correct table contents and binary log position), no other

connection should use the following statements: ALTER TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE, as consistent

snapshot is not isolated from them. Option automatically turns off --lock-tables.

--single-transaction 可以得到一致性的导出结果。他是通过将导出行为放入一个事务中达到目的的。

它有一些要求:只能是 innodb 引擎;导出的过程中,不能有任何人执行 alter table, drop table, rename table, truncate table等DDL语句

--single-transaction 会自动关闭 --lock-tables 选项;上面我们说到mysqldump默认会打开了--lock-tables,它会在导出过程中锁定所有表。

    因为 --single-transaction 会自动关闭--lock-tables,所以单独使用--single-transaction是不会使用锁的。与 --master-data 合用才有锁。

2)--lock-tables

该选项默认打开的,上面已经说到了。它的作用是在导出过程中锁定所有表。--single-transaction 和 --lock-all-tables 都会将该选项关闭。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/38784cef23fd1f12966185d2cc51010a.html