Handleiding:Een wiki met een back-up herstellen

From mediawiki.org
This page is a translated version of the page Manual:Restoring a wiki from backup and the translation is 42% complete.

Men moet regelmatig een back-up maken van zijn wiki, zelfs als men het nooit hoeft terug te zetten: het hebben van back-ups geeft gemoedsrust. Een back-up is echter nutteloos als men niet kan herstellen door het terug te zetten, en oefenen met het gebruiken van een back-up voorkomt later leed. Daarom deze instructies.

Versies en upgraden

De instructies op deze pagina moeten min of meer gelijk zijn voor elke versie van MediaWiki. U kunt de database herstellen naar een meer recente versie van MediaWiki, maar zorg ervoor dat u het updatescript uitvoert. Het gebruiken van een back-up van een database van een nieuwere versie in een oudere versie van de software wordt niet ondersteund.

File transfer

Tenzij u rechtstreeks toegang heeft tot de server die de wiki host, (en zelfs dan) moet u een methode kiezen voor het overzetten van bestanden:

Overzicht

  1. Opnieuw aanmaken van de database, gebruikers en rechten
  2. Importeren van de database back-up
  3. Importeren de MediaWiki-bestanden
  4. Het configuratiebestand controleren
  5. Testen

Opnieuw aanmaken van de database, gebruikers en rechten

Op de server waarop u MediaWiki herstelt, zorg ervoor dat u

  1. een correct werkende instantie van MySQL heeft
  2. een MySQL-gebruiker heeft met passende rechten, als u MySQL-user root niet kunt gebruiken

Als u vanwege databasecorruptie een back-up wilt herstellen, overweeg dan MySQL opnieuw te installeren! Zodra MySQL goed werkt, maak een nieuwe MySQL-database aan en geef uw gebruikersaccount rechten op de onderstaande database. Mogelijk moet u de MySQL-documentatie, de documentatie van het configuratiescherm van uw hostingprovider of de documentatie van andere hulpprogramma's die u gebruikt raadplegen voor informatie over hoe u dit kunt doen. Vanuit de MySQL-prompt als MySQL-gebruikersroot kunt u:

CREATE DATABASE wikidb;
CREATE USER wikidb_user IDENTIFIED BY 'wikidb_userpassword';

USE wikidb;
GRANT SELECT, UPDATE, INSERT, DELETE, ALTER, CREATE, INDEX, DROP, LOCK TABLES, USAGE ON wikidb.* TO wikidb_user;
Het maakt niet uit of de database niet dezelfde naam heeft; In een commerciële hostingomgeving, waar databasenamen meestal worden voorafgegaan door een gebruikersnaam voor een hostingaccount, is een andere databasenaam bijna gegarandeerd. Bovendien kan de gebruikersnaam en het wachtwoord van die gebruiker verschillen. U zult het bestand LocalSettings.php op de nieuwe locatie dienovereenkomstig moeten aanpassen.

Een back-up van de database importeren

See also Manual:Importing XML dumps

Importeer vervolgens uw database back-up. Hiermee worden de tabellen in de database gemaakt en gevuld met gegevens. Het importeren neemt een hoeveelheid tijd in beslag, die afhankelijk is van het aantal pagina's, gebruikers, bewerkingen, enz. in uw wiki.

Methoden

Vanaf de opdrachtregel met behulp van mysqladmin

Als er een database bestaat en u deze volledig wilt vervangen door de back-up. Om de oude database te verwijderen:

mysqladmin -u wikidb_user -p drop wikidb

Aanpassen van wikidb_user en wikidb. De parameter -p vraagt u om het wachtwoord.

Om een nieuwe database te maken:

mysqladmin -u wikidb_user -p create wikidb

Bijvoorbeeld na het maken van een back-up met mysqldump:

# Doe dit niet nu: zo had u eerder een back-up kunnen maken.
mysqldump --default-character-set=binary --user=wikidb_user --password=wikidb_userpassword wikidb > dump_of_wikidb.sql
# De wikidatabase wikidb waarvan u een back-up heeft gemaakt, kan een andere naam hebben
# dan de wikidatabase wikidb die u hierboven hebt aangemaakt. Natuurlijk kunnen wikidb_user en
# wikidb_userpassword ook anders zijn.

Zorg ervoor dat u de juiste karakterset vermeld of het restoren kan mislukken, controleer LocalSettings.php om te weten te komen welke karakterset het is.

Om dump_of_wikidb.sql te importeren via de commandolijn doet u gewoon:

mysql -u wikidb_user -p wikidb < dump_of_wikidb.sql

en doe daarna, indien nodig:

php wikifolder/maintenance/update.php
# De meeste mensen noemen hun wikimap gewoon "w", waardoor deze padnaam ontstaat 
# iets als "htdocs/w/maintenance/update.php"
Na het gebruik van dump, moet u niet mysqlimport gebruiken om uw wikidatabase te restoren, u moet sql gebruiken. Omdat mysqlimport vereist dat de gegevens worden geladen in een bepaald gedelimiteerd tekstformaat, bijvoorbeeld. CSV, terwijl de uitvoer van mysqldump een aantal SQL-statements is.
Als u de oude LocalSettings.php niet naar een nieuwe installatie kopieert, zorg er dan voor dat de databaseprefix is ingesteld op de vorige installatie in de nieuwe installatie voordat u php update.php uitvoert

Zie ook Executing SQL Statements from a Text File

Als uw site langzaam is na het importeren van een dump, moet u misschien de indexen opnieuw laten opbouwen. Zie Na het importeren van SQL-bestanden zijn indexen op hun plaats, maar niet daadwerkelijk geïndexeerd

Met de browser voor phpMyAdmin

Open the browser to your phpMyAdmin, login, choose the wiki database. (Check LocalSettings.php if you're not sure). Follow the instructions in the phpMyAdmin documentation.

From an XML dump

To import an XML dump into a wiki, use the command-line tool importDump.php . Do:

php wikifolder/maintenance/importDump.php --dbpass wikidb_userpassword --quiet --wiki wikidb path-to-dumpfile/dumpfile.xml
php wikifolder/maintenance/rebuildrecentchanges.php

Substitute wikidb_userpassword, wikidb and path-to-dumpfile/dumpfile.xml as appropriate.

Afterwards use ImportImages.php to import the images:

php wikifolder/maintenance/importImages.php wikifolder_backup/images

Import the MediaWiki files

See also Manual:importImages.php

Next, restore your backup of the MediaWiki filesystem: this is the final "large" step in the restore process.

  • If you followed the backup manual instructions, and backed up the entire directory, this will include the images and extensions directories, plus custom skins, etc. and the configuration file.
  • If you backed up only portions of the directory, e.g. images, extensions, etc. then you will need to first upload/copy a fresh install of the MediaWiki files, then transfer the backed-up directories and files into the correct locations in the new filesystem.
To wipe and restore the wiki file system

Remember to also restore the file system components of the wiki that might be required, eg. images, logo, and extensions. Especially to edit LocalSettings.php to check everything is correct. A sequence of Linux commands to wipe and restore the wiki file system could look like this:

wget http://download.wikimedia.org/mediawiki/1.41/mediawiki-1.41.1.tar.gz
tar -xvzf mediawiki-1.41.1.tar.gz
rm mediawiki-1.41.1.tar.gz
rm -fR wikifolder/
mv mediawiki-1.41.1 wikifolder
rm -fR wikifolder/extensions/
cp -R wikifolder_backup/extensions wikifolder/extensions

Open the wiki from the browser and click on the Set up the wiki first link. See Handleiding:Configuratie script for details. If needed, you can run the command-line installer php wikifolder/maintenance/install.php. After this is done edit LocalSettings.php to suit the fresh install, restoring lines for extensions, etc. Restore from backup any other files, such as a custom logo and favicon to the correct paths.

If you've not installed as a root Linux/Unix user and the images and thumbnails don't work, you'll need to fix the owner or permissions recursively on the folder that has the uploaded images, usually in wikifolder/images.

Notes

  • If following the latter process, ensure that your "fresh install" consists of the same version of MediaWiki as the old one did
  • Check that the upload directory (e.g. images in version 13) has the correct permissions set if using uploads; it needs to be writable by the web server.
  • Make sure any extension directories have the correct permissions as well (e.g. if linux: chmod -R o=rx extensions or chmod -R o=rx includes)
  • The best method to use when manually transferring a wiki from a windows platform to a Linux platform involves:
    1. Manually installing MediaWiki on the Linux platform from a tar file as outlined here: Manual Install of Wiki (i.e. try not to use install from a automated package)
    2. Replacing the newly installed MediaWiki folder (e.g. /var/www/mediawiki...) on your Linux machine with the MediaWiki base folder from your windows machine
    3. Updating your Linux machine's MySQL Database (e.g. wikidb) with the wiki database from your windows machine (i.e. use the backup and restore features of mysql as outlined above)
  • After importing a wiki database, even if the database can work, some minor problems may arise:
    1. Searchindex may need to be repaired: In phpMyAdmin, enter REPAIR TABLE wikidb.searchindex; for rebuilding the search index. wikidb is your database's name.
    2. The collation of some rows may be changed. Cross check it with the original database.

Check the configuration file

The final task involves verification of, and possibly modifying, the LocalSettings.php file.

  • If you are restoring onto the same server from which you backed up, you probably need not change anything.
  • If you are restoring onto a new server (i.e., if you are moving or duplicating the MediaWiki), certain entries will almost undoubtedly require changing, and you may need to change the database connection information as well.

Check the following configuration options:

Configuration option Action required Default/Example
$IP Needs to be correct for the paths on the new server

(Usually remains the same, so change is not required)

Default:
 if( defined( 'MW_INSTALL_PATH' ) ) {
 	$IP = MW_INSTALL_PATH;
 } else {
 	$IP = dirname( __FILE__ );
 }
$wgScriptPath Needs to be correct for the path on the new server

$wgScriptPath = "wikifolder";
Example:
$wgScriptPath = "/w";

$wgArticlePath Needs to be correct for the path on the new server

Examples:
$wgArticlePath = "$wgScriptPath/$1";
$wgArticlePath = "/wiki/$1";

$wgDBserver Check the database server name is correct

Example:
$wgDBserver = "localhost";

$wgDBname This might have changed in a shared hosting environment

$wgDBname = "wikidb";

$wgDBuser This might have changed in a shared hosting environment

$wgDBuser = "wikidb_user";

$wgDBpassword Check this is correct for the new user

$wgDBpassword = "wikidb_userpassword";

You might also need to check the paths to diff3, ImageMagick, etc.

Test

At this point, attempt to access the wiki on the new server and use it. Log in as a sysop and a regular user and check that viewing, creating and editing pages and uploading files still works. You will need to fix any problems reported either by PHP or MediaWiki itself.

Frequent problems

After your move you might see PHP warnings stating that certain files could not be accessed. This is most likely caused by phabricator:T37472: The column md_deps in the module-deps table contains absolute file paths, which are used to locate the images and LESS files that CSS depends on. These paths will break when the wiki is e.g. moved to another folder or to another server.

Until this bug is solved, you can use this workaround to manually fix wrong entries in the module_deps table:

SET @old='wiki.old-domain.org';
SET @new='wiki.new-domain.org';

UPDATE `module_deps` SET `md_deps` = REPLACE( `md_deps`, @old, @new );

This can be used to update wrong path segments and to fix the error.

See also

References