在一年多的时间里,我运行一个内部的PostGIS服务器,里面充满了OSM数据,用于基于Mapnik的tile生成和基于Nominatim的地理编码,并且使用日复制更新。 这工作得很好。
但是,随着使用量呈指数级增长,我希望通过添加额外的PostgreSQL服务器来实现更好的可靠性和性能。 而我有点失落。
由于PostgreSQL似乎不能自行处理复制,所以我会考虑使用像PgPool-II这样的中间件来保持服务器的同步。 但是恐怕这种用法是没有什么必要的:非常高的读写比,所有的写操作都是在每天相同的时间完成的。
我的问题很简单:你将如何保持这些服务器同步? 而且,在OpenStreetMap Foundation,MapQuest,Mapbox或CloudMade上做了什么呢?
谢谢。
首先,Postgres 9和更高版本的内置复制支持,这就是我们(OpenStreetMap操作团队)现在正在使用PostgreSQL 9.1(主要是90分钟前)在主数据库上运行的。
要回答你的问题,关于什么OSM做的,到目前为止,我们不做任何forms的复制 – 有一个大的Postgres数据库作为网站后面的主数据库,并保存原始数据。 然后是用于渲染和地理编码的二级Postgres + Postgis数据库,这两个数据库都使用星球转储和差异进行填充以进行更新。
我可以在这里看到两个选项: