FWIW, here's how I upgrade WordPress MU (and some other piece of software):
- i use two different directories and two apache vhosts to manage both production and development versions of wpmu,
- all my websites live in /usr/local/www/sites/ under the name <service>.domain.tld, so in that case I have blogs.domain.tld and blogs-beta.domain.tld. Those are just symbolic links to actual wpmu directories (extracted snapshots, like wpmu-2006-xx-xx),
- get a list of files you need to keep absolutely when you want to upgrade (plugins, themes, configuration files, .htaccess files, ...) and write a simple shell script to make a backup (tar cfvz blogs-backup.tgz ${files}),
- at a certain time, you should at least have blogs.domain.tld pointing to a working wpmu installation, do the following:
- run the backup script,
- extract the development snapshot,
- do a ln -s wpmu-2006-xx-xx blogs-beta.domain.tld
, to create a symlink for the development version,
- drop development database with mysqladmin -u sqluser -p drop wordpressdb
- dump production database mysqldump -u sqluser -p wordpressdb > dump
- do some sed magic (eg. sed -i"" -e 's/blogs/blogs-beta/g' dump),
- import the modified dump with mysql -u sqluser -p wordpressdb < dump
- restore the backup in the development wpmu directory (eg. tar xfvz blogs-backup.tgz -C blogs-beta.domain.tld).
- adjust wp-config.php in the development version to use the development database rather than the production one,
- make sure permissions are correct (especially wp-config.php shouldn't be readable by non-owner or non-www account)
- at this point you should have a working blogs-beta.domain.tld
- test thoroughly
- once you made sure it worked, restore the production wp-config.php in blogs-beta.domain.tld/wp-inst/, remove the blogs.domain.tld symlink and create a new one with ln -s wpmu-2006-xx-xx blogs.domain.tld
- you're done!
I think I didn't forget anything. You can include the database dump in the backup as well, run the backup script at regular intervals, and send the backup archive to another box or just copy the archive to another hard drive, just to make sure you can recover your data in case the hard drive dies.