我想以这样一种方式转储 MySQL 数据库,即为每个表的定义创建一个文件,并为每个表中的数据创建另一个文件。我希望通过在转储期间锁定整个数据库来保证数据库完整性的方式来完成此操作。做这个的最好方式是什么?同样,在恢复一组这些转储文件时锁定数据库的最佳方法是什么?
编辑
我不能假定 mysql 将具有写入文件的权限。
最佳答案
如果您正在使用 InnoDB 表并因此具有事务支持,则根本不需要锁定数据库,您只需添加 --single-transaction
命令行选项。这为您提供了一致的快照,而无需使用事务机制锁定任何内容。
如果您没有交易支持,您可以获得您在 --lock-tables
中描述的内容命令行选项,这将锁定数据库。
还值得注意的是,READ LOCK 并不像听起来那么好,因为任何写入操作都会锁定,这将锁定后续的读取操作,请参阅 this article更多详情
编辑:
我认为在没有文件写入权限和 --tab
的情况下,不可能单独转储格式和数据。选项。我认为您唯一的选择是推出您自己的 mysqldump
脚本,该脚本使用 mysqldump 使用的一种事务或 READ LOCK 机制。否则,将单个转储文件后处理成您想要的格式可能会更容易。
关于sql - 以保证数据库一致性的方式生成一组包含单个表转储的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2762565/