Backups

Miraheze has an internal and external backup procedure. Following the schedule below, certain critical parts of our infrastructure are automatically backed up to an external server (external meaning under our control but provided by a different server host and in a different country than all our current servers). These 'internal' backups include full database dumps, which include user account information and CheckUser information. These backups are only accessible by our Site Reliability Engineering team, and can be used in the event of a catastrophic site failure to quickly bring the entire site up to a recent state.

Backups of a wiki
In addition to these private backups, any wiki administrator is able to create an XML or image backup of their wiki by going to Special:DataDump on their wiki and selecting xml or image type. These backups can then be stored securely wherever you like. The XML backups do not include user account information or CheckUser information but contain wiki page text and logs that you can import to any MediaWiki site, the image dump contains all file types uploaded to the wiki but without descriptions or licensing type.

General backup Schedules
Miraheze runs two backup schedules in production:


 * The following are backed up in their entirety every sunday:
 * Our Private Git repository (stored on puppet1)
 * This includes configured passwords, private keys, and certificates for our domains
 * This includes the original source of private keys and certificates, and includes our account information for Let's Encrypt (the CA we use for free certificates)
 * The following are backed up completely on the first Sunday of every month. Changed files and new files are backed up on the third Sunday of the month:
 * Databases, including user information, for all wikis
 * Our static content (wiki images, user xml dumps)
 * Phabricator static (content used by our issue tracking software)

WikiTeam's dumpgenerator.py
Another method is to use WikiTeam's dumpgenerator.py Python script. This is simply run from the command line and requires Python 2.7.

Example usage: