我有一个日常任务从 3 个 MySql 服务器收集数据,然后将聚合数据推送回每个服务器,删除前几天的数据。所有服务器都是MySql。我想把它放到一个存储过程中。
我一直在寻找一种从一个 MySql 服务器连接到另一个服务器、运行查询、下一个服务器的方法 - 冲洗并重复。除了没有找到连接到另一个 MySql 服务器的存储过程的任何示例之外,我的直接印象是这不是真正可以接受的,也不是有意的。
我可以选择一个创建 CSV 的输出文件。有没有办法强制使用 Xml 文档?我不想为了获取 Xml 而读入数据表。当然,Xml 不能与 Bulkload 方法一起使用,不是吗?
我有哪些现实的选择?选择到 outfile 的一个问题是使用奇怪的字符:' , \ \\ & @ `` / //
等等……这些字符将如何影响 Bulkload 过程?
由于三 (3) 个原因,我倾向于回避 FEDERATED 存储引擎:
该怎么办 ???
一种可能性是使用 mysqldump 并合并它们
示例
假设所有表具有相同的结构
假设所有表不使用 auto_increment ID
假设所有表都是 InnoDB
在将合并三个表的服务器上,创建四 (4) 个导入数据库(一次操作):
导入过程是这样的
mysqldump 三(3)张表
将 mysqldump 并行加载到单独的导入数据库中:
接下来,合并数据。
现在,针对 ImportCombined.tbname 表执行您已有的任务。
“你填写这些步骤”
然后,当表准备好导出时,mysqldump 并复制 2 次:
从这些步骤中可以看出,这些东西应该是 shell 脚本,也许是 crontab。
这是另一个策略:如果表是 MyISAM,您可以将 MyISAM 表(每个表的 .frm、.MYD 和 .MYI 文件)复制到其他文件夹(mysqld 眼中的数据库)中,而不是执行 mysqldumps,然后执行与前面提到的类似操作。确保在复制期间没有对表进行写入。
您是否考虑过为此使用诸如http://www.pentaho.com/之类的 ETL 工具?
听起来很理想。。