时间:2021-07-01 10:21:17 帮助过:36人阅读
--single-transaction
该选项在导出数据之前提交一个 BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于事务表,例如 InnoDB 和 BDB。
本选项和 --lock-tables 选项是互斥的,因为 LOCK TABLES 会使任何挂起的事务隐含提交。
要想导出大表的话,应结合使用 --quick 选项
--skip-opt
遇到过好几次mysqldump出来的备份不能导入,同样的库如果mysqldump --skip-opt是可以导入的,分析两个不同的备份文件,发现--skip-opt是一条条的insert语句,但是--opt一个表只有1条insert语句,这样有可能表数据太多导致溢出,可以适当调整
my.cnf中的table_cache值尽量避免这种情况,生产服务器中我设置的是table_cache=512,内存2G,问题解决。--opt导入的速度比--skip-opt要快点,毕竟是优化的,呵呵。table_cache还涉及到mysql的优化,要结合实际应用来调整。
--opt
这只是一个快捷选项,等同于同时添加 --add-drop-tables --add-locking --create-option
--disable-keys --extended-insert --lock-tables --quick --set-charset
选项。本选项能让 mysqldump 很快的导出数据,并且导出的数据能很快导回。该选项默认开启,但可以用 --skip-opt
禁用。注意,如果运行 mysqldump 没有指定 --quick 或 --opt
选项,则会将整个结果集放在内存中。如果导出大数据库的话可能会出现问题。
在开始导出之前,提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭 --single-transaction 和 --lock-tables 选项。
--lock-tables
它和 --lock-all-tables 类似,不过是锁定当前导出的数据表,而不是一下子锁定全部库下的表。本选项只适用于 MyISAM 表,如果是 Innodb 表可以用 --single-transaction 选项。
本文出自 “运维邦” 博客,谢绝转载!
MySQL mysqldump 原理浅析
标签:mysqldump single master