gpt4 book ai didi

php - 在mysql中将选定的数据从一个数据库转储到另一个数据库

转载 作者:行者123 更新时间:2023-11-29 03:43:53 24 4
gpt4 key购买 nike

情况是这样的:

我在远程服务器上有一个 mySQL 数据库。我需要其中 4 个表中的数据。有时,这些表的架构会更改(添加新字段,但不会删除)。目前,这些表有超过 300,000 条记录。

此数据需要导入到本地主机 mySQL 实例中。这些相同的 4 个表存在(具有相同的名称),但所需的字段是远程数据库表中字段的子集。这些本地表中的数据被认为是只读的,永远不会被写入。一切都需要在一个事务中运行,所以本地表中总是有一些数据,即使它是一天前的。 localhost 表由事件网站使用,因此整个过程需要尽快完成以最大限度地减少停机时间。

此过程每天运行一次。

我看到的选项:

  1. 获取远程表的结构/数据的 mysqldump 并保存到文件。删除 localhost 表,然后运行转储的 sql 脚本。然后在 4 个表上重新创建所需的索引。

  2. 截断本地主机表。在 PHP 中对远程数据库运行 SELECT 查询,只检索需要的字段而不是整行。然后遍历结果并从该数据创建 INSERT 语句。

我的问题:

  • 就性能而言,哪个是我的最佳选择?
  • 哪个最快完成?
  • 任何一个都会给服务器带来更重的负载吗?
  • 会索引表格在两种选择中花费相同的时间?

最佳答案

如果没有充分的理由让本地 d/b 成为远程的子集,请使结构相同并启用 database replication在需要的 table 上。复制工作由主跟踪所做的所有更改,并管理每个从 d/b 的指向更改的指针。每个奴隶都说给我自上次请求以来的所有变化。对于一个相当大的数据库,这比您选择的任何替代方案都要有效得多。它的成本不高。

至于架构更改,我认为 alter 信息由主服务器记录,因此从服务器也可以复制这些信息。该机制肯定会复制 drop table ... if existscreate table ... select , 所以 alter 逻辑上应该遵循,但我没有尝试过。


这是:confirmation that alter is properly replicated .

关于php - 在mysql中将选定的数据从一个数据库转储到另一个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9336478/

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