聚合多个分布式MySQL数据库

聚合多个分布式MySQL数据库,mysql,innodb,mysqldump,Mysql,Innodb,Mysqldump,我有一个项目,需要我们在多台计算机上维护几个MySQL数据库。它们将具有相同的模式 每个数据库都必须定期将其内容发送到主服务器,主服务器将聚合所有传入数据。内容应该转储到一个文件中,该文件可以通过闪存驱动器传送到一台支持互联网的计算机上进行发送 键将被命名为名称空间,因此不应该有任何冲突,但我不完全确定是否有一种优雅的方式来设计它。我正在考虑给每一行加上时间戳,并在每个表上运行查询“SELECT*FROM[table]WHERE timestamp>last\u backup\u time”,然

我有一个项目,需要我们在多台计算机上维护几个MySQL数据库。它们将具有相同的模式

每个数据库都必须定期将其内容发送到主服务器,主服务器将聚合所有传入数据。内容应该转储到一个文件中,该文件可以通过闪存驱动器传送到一台支持互联网的计算机上进行发送

键将被命名为名称空间,因此不应该有任何冲突,但我不完全确定是否有一种优雅的方式来设计它。我正在考虑给每一行加上时间戳,并在每个表上运行查询
“SELECT*FROM[table]WHERE timestamp>last\u backup\u time”
,然后将其转储到一个文件并在主服务器上批量加载

分布式计算机将无法访问internet。我们在第三世界国家的一个非常偏远的地区

有什么建议吗?

SELECT * FROM [table] WHERE timestamp > last_backup_time
将丢失删除的行

您可能想做的是通过U盘使用MySQL复制。也就是说,在源服务器上启用binlog,并确保binlog不会自动丢弃。将binlog文件复制到U盘,然后将主日志清除到。。。在源服务器上删除它们

在聚合服务器上,使用mysqlbinlog命令将binlog转换为可执行脚本,然后将该数据作为SQL脚本导入

聚合服务器必须有每个源服务器数据库的副本,但只要SQL all使用非限定表名(从不使用schema.table语法引用表),就可以在不同的架构名称下拥有该副本。然后,导入mysqlbinlog生成的脚本(前缀为“正确使用”命令)将镜像聚合服务器上的源服务器更改


然后,可以使用完全限定的表名(即在联接或INSERT…SELECT语句中使用schema.table语法)完成所有数据库的聚合。

这真是太巧妙了。我会调查的。谢谢