gpt4 book ai didi

mysql - Perl:如何将远程 MYSQL 表复制/镜像到另一个数据库?可能结构也不同?

转载 作者:行者123 更新时间:2023-11-29 02:36:19 25 4
gpt4 key购买 nike

我对此很陌生,我的一个好 friend 陷入困境。我不知道该怎么做。我曾使用 gui 之类的 navicat 和 sqlyog 来执行此操作,但只能手动操作。

他的乐队信息数据(日程表等)在服务器(管理服务器)上的 MYSQL 数据库中。

我正在为他建立一个用 Perl 编写的基本网站,该网站从驻留在我的服务器(公共(public)服务器)上的数据库中获取数据,并显示日程安排信息、以前的演出时事通讯和一些粉丝互动。

他使用他喜欢并希望保留的管理界面来管理管理服务器上的数据。

管理服务器数据库有一堆表,甚至公共(public)数据库不需要的表数据。

因此,我在公共(public)端创建了只包含相关数据的表。

我基本上使用图形用户界面来导出数据,然后在他对管理数据库进行更新(复制和粘贴)时插入到公共(public)端。

(仅供引用,我正在使用 DBI 模块访问/通过我的公共(public)数据库 perl 脚本中的数据。)

我可以直接访问管理服务器以仅获取我需要的数据,但是,这样做的全部目的是“镜像”数据,而不是在每次查询时都访问管理服务器。此外,有些表有数千行,并且在循环中解析每一行对我来说似乎太“庞大”了。然而,有一个“时间”列可用于比较。

由于结构不同,我无法“同步”,我只需要来自三个表的相关表数据。

所以......我想要自动化!

我读到“复制”是一种快速的方法,但我发现对于我的水平来说,如何实现太高级了。

我没有在管理服务器上放置一个脚本来在有更新时发出通知的奢侈。

1- 我想设置一个脚本来检查表以查看管理服务器数据库上是否更新或添加了一行。然后我希望将新的或更改的数据更新或插入到公共(public)服务器数据库。

这个“检查”可以在我猜想的 cron 作业中设置,或者在公共(public)端加载特定页面时触发。 (我假设由 cron 调用的相同子例程)。

此数据不需要是“实时”的,但是,如果他更新了某些内容,最好让它尽快显示。

我已经做了很多阅读、模块研究和实验,但是,我又回到了 stackoverflow,在那里我总能得到很好的建议和示例。

很多术语仍然让我难以理解,因此带有解释的详细示例确实可以帮助我更快地学习。

提前致谢。

最佳答案

您要查找的两个术语是“replication”或“ETL”。

首先,复制方法。

假设您的管理服务器有表 T1、T2、T3,您的公共(public)服务器有表 TP1、TP2。

所以,你想要做的(因为你有不同的表结构)是:

  1. 从公共(public)服务器获取表,并在管理服务器(TP1 和 TP2)上创建这些表的精确副本。

  2. 在管理服务器的原始表上创建触发器,以将数据从 T1/T2/T3 填充到管理服务器的 TP1/TP2 副本中。

  3. 您还需要将初始数据从 T1/T2/T3 填充到管理服务器的 TP1/TP2 副本中。呸。

  4. 设置从管理服务器的 TP1/TP2 到公共(public)服务器的 TP1/TP2 的“replication

另一种方法是编写一个程序(此类程序称为 ETL - Extract-Transform-Load),它将从管理服务器(“ETL”的“E”部分)上的 T1/T2/T3 中提取数据,将数据按摩成适合加载到 TP1/TP2 表(“ETL”的“T”部分)的格式,将这些文件传输(通过 ftp/scp/whatnot)到公共(public)服务器,然后程序的后半部分(“L") 部分会将文件加载到公共(public)服务器上的表 TP1/TP2 中。程序的两半都将由 cron 或您选择的调度程序启动。

有一篇文章提供了如何开始构建 Perl/MySQL ETL 的非常好的示例:http://oreilly.com/pub/a/databases/2007/04/12/building-a-data-warehouse-with-mysql-and-perl.html?page=2

如果您不想构建自己的系统,这里有一个开源 ETL 系统列表,您从未使用过其中任何一个,因此对它们的可用性/质量没有意见:http://www.manageability.org/blog/stuff/open-source-etl

关于mysql - Perl:如何将远程 MYSQL 表复制/镜像到另一个数据库?可能结构也不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4570877/

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