gpt4 book ai didi

mysql - 从数据库复制一些数据并保持引用完整性

转载 作者:行者123 更新时间:2023-11-29 15:57:37 24 4
gpt4 key购买 nike

要求是将一些数据从事件数据库(目前有 159 个表)提取到另一个数据库中,以便复制的数据具有完全的引用完整性,同时数据处于变化状态(它是实时数据库)。这并不是转储整个数据库(接近 50GB),只是将我们从整个数据库中识别出的一些行提取到单独的数据库中。

我们当前根据初始架构和后续 DDL 迁移以及可重复项( View 、存储过程等)创建一个新数据库,然后复制适当的行。这通常需要 10 分钟以上,但不到 1 小时,具体取决于要提取的集合的大小。

有没有办法告诉 mysql 我想忽略在开始运行提取后提交的任何事务,无论是添加新行、删除行还是更新行,但与数据库的任何其他连接都会正常工作,就好像我没有提出任何要求。

我不希望发生的情况是,我从表 1 复制数据,当我到达表 159 时,表 1 已更改,表 159 中的一行引用表 1 中的新行。

最佳答案

使用mysqldump --single-transaction。这会在开始转储数据之前启动可重复读取事务,因此在转储数据时发生的任何并发事务都不会影响事务转储的数据。

<小时/>

回复您更新的问题:

您可以在事务中执行自己的自定义查询。

在开始运行提取查询之前,以可重复读取模式启动事务。您可以对许多表运行许多查询,并且您提取的所有数据将与您启动该事务时当前提交的数据完全相同。

您可能想阅读https://dev.mysql.com/doc/refman/8.0/en/innodb-transaction-isolation-levels.html

关于mysql - 从数据库复制一些数据并保持引用完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56364301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com