I've gone through the code, and altered about 200 instances of wfQuery() to
specify whether it is reading or writing. No warranty expressed or implied.
It's in CVS.
Reading:
wfQuery( $sql, DB_READ, $fname );
Writing:
wfQuery( $sql, DB_WRITE, $fname );
Currently, wfQuery doesn't do anything with this information, but the idea
is to have a list of database servers in LocalSettings.php. Using 0 for the
extra parameter would connect to the first server on the list, and send the
query. DB_WRITE (-2) would use whatever the current master is, presumably
this can be changed if the master goes down. DB_READ (-1) would invoke some
sort of load balancer to decide where to send the query.
I haven't really looked into the synchronisation issues yet, but I have a
feeling it won't be a big problem.
-- Tim Starling.