Hi!
Wikimedia uses a single master and multiple slaves in a replication environment. Our biggest wiki, the English Wikipedia, has a separate master to that of the other wikis, and a separate slave cluster, I believe.
Indeed, there's no better example of scaled out mediawiki than Wikipedia. Even for single wiki, say English Wikipedia we use following distribution:
- Multiple tiers of Squids - Multiple Apache/PHP servers, running MediaWiki - Multiple memcached servers for object cache and various not-very- persistent storage - Multiple Lucene hosts serving search - Multiple clusters (groups) of external storage nodes, each consisting of small master-slaves replication system carrying a subset of texts - Master database - Slave databases for general DB use ( can be promoted to master, if needed) - Slave databases allocated for specific DB use (as Ariel serves watchlists) - Slave databases extended/built for specific DB use (extended indexing on db6 to allow faster contributions access) - Multiple hosts running job queue (delayed tasks) - Multiple load balancers between various components.
Once you need to scale more than English wikipedia, we can discuss about additional possibilities to split some of the tasks. All the code for above load balancing is inside mediawiki.
Cheers,