异常信息
mysqldump -uroot -p database > database.sql报错:
mysqldump: Got error: 1066: Not unique table/alias: ‘grc_remarks’ when using LOCK TABLES
解决方法
添加参数–single-transaction 代替 –lock-tables:
mysqldump –single-transaction -uroot -p database > database.sql
相关参数详解
--single-transaction
通过将导出操作封装在一个事务(Repeatable Read)内来使得导出的数据是一个一致性快照。只有当表使用支持MVCC的存储引擎(目前只有InnoDB)时才可以工作;其他引擎不能保证导出是一致的。当导出开启了–single-transaction选项时,要确保导出文件有效(正确的表数据和二进制日志位置),就要保证没有其他连接会执行如下语句:ALTER TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE,这会导致一致性快照失效。这个选项开启后会自动关闭lock-tables。并且在mysql5.7.11之前,--default-parallelism大于1的时候和此参也互斥,必须使用--default-parallelism=0。5.7.11之后解决了--single-transaction和--default-parallelism的互斥问题。
--lock-all-tables ,-x
锁定所有库中所有的表。这是通过在整个dump的过程中持有全局读锁来实现的。会自动关闭–single-transaction 和 –lock-tables。
--lock-tables,-l
备份某个库就锁该库的所有表,用READ LOCAL来锁表。MyISAM允许并发写入,因为锁表只针对指定的数据库,不能保证物理上的一致性,不同库的表备份完成时会有不同的状态。用–skip-lock-tables来关闭。