我有一个项目,需要我们维护多台计算机上的几个MySQL数据库。它们将具有相同的模式。
每个数据库都必须定期将其内容发送到主服务器,主服务器将聚合所有传入的数据。内容应该被转储到一个文件中,该文件可以通过闪存驱动器传送到支持互联网的计算机上发送。
键将是命名空间的,所以应该不会有任何冲突,但我不是完全确定一个优雅的方法来设计它。我正在考虑为每一行加上时间戳,并在每个表上运行查询"SELECT * FROM [table] WHERE timestamp > last_backup_time",然后将其转储到一个文件中,并在主服务器上进行大容量加载。
分布式计算机将不能访问互联网。我们在第三世界国家的一个非常农村的地方。
有什么建议吗?
发布于 2010-07-19 17:04:59
你的
SELECT * FROM [table] WHERE timestamp > last_backup_time将错过DELETEed行。
您可能希望通过U盘使用MySQL复制。也就是说,在源服务器上启用binlog,并确保binlog不会自动丢弃。将binlog文件复制到U盘,然后清除主日志到...在源服务器上擦除它们。
在聚合服务器上,使用mysqlbinlog命令将binlog转换为可执行脚本,然后将该数据作为SQL脚本导入。
聚合服务器必须拥有每个源服务器数据库的副本,但只要您的SQL all使用非限定表名(从不使用schema.table语法引用表),该副本就可以位于不同的模式名下。导入mysqlbinlog生成的脚本(带有正确的使用命令前缀)将反映聚合服务器上的源服务器更改。
然后,可以使用完全限定的表名(即,在JOIN或INSERT中使用schema.table语法...SELECT语句)。
https://stackoverflow.com/questions/3279589
复制相似问题