Jump to content

Handleiding:Back-up maken van een wiki

From mediawiki.org
This page is a translated version of the page Manual:Backing up a wiki and the translation is 100% complete.

Het is belangrijk om regelmatig back-ups te maken van uw wiki (gegevens en bestanden). Deze pagina geeft een overzicht van het back-upproces voor een typische MediaWiki-wiki; u zult waarschijnlijk uw eigen back-upscripts of -schema willen ontwerpen, passend bij de grootte van uw wiki en uw individuele behoeften.

Help:Export is een snelle en gemakkelijke manier om alle pagina's op uw wiki op te slaan.

Overzicht

MediaWiki slaat belangrijke gegevens op twee plaatsen op:

Database
Pagina's en hun inhoud, gebruikers en hun voorkeuren, metadata, zoekindex, enz.
Bestandssysteem
Softwareconfiguratiebestanden, aangepaste skins, extensies, afbeeldingen (inclusief verwijderde afbeeldingen), enz.

Denk erover om de wiki voor read-only te maken voordat u de back-up maakt - zie $wgReadOnly . Dit zorgt ervoor dat alle delen van uw back-up consistent zijn (een aantal van uw geïnstalleerde extensies kunnen gegevens toch schrijven).

File transfer

U moet een methode kiezen voor het overbrengen van bestanden van de server waar ze zich bevinden:

  • Niet-privégegevens kunt u eenvoudig publiceren op archive.org en/of in een map dumps/ van uw webserver.
  • SCP (of WinSCP), SFTP/FTP of een andere overdrachtsprotocol die u kiest.
  • Het hostingbedrijf kan via een webbrowser een interface voor bestandsbeheer aanbieden; Neem contact op met uw provider.

Database

De meeste kritieke gegevens in de wiki worden opgeslagen in de database. Als uw wiki nu offline is, kan van de database een back-up worden gemaakt door eenvoudig het databasebestand te kopiëren.

Bij gebruik van het standaard MySQL of MariaDB backend, kan de database worden gedumpt in een scriptbestand dat later kan worden gebruikt om de database en alle gegevens erin helemaal opnieuw te maken.

MySQL

Automysqlbackup

Zie het package op Debian:

$ apt show automysqlbackup
[...]
Description: automysqlbackup creates backup every day, week and month for all of your MySQL database, to a configured folder. There's nothing to do but to install this package, and you'll rest assured that you have a way to go back in the history of your database.
[...]

Installeer het package:

# apt install automysqlbackup

Al uw databases worden opgeslagen in /var/lib/automysqlbackup/:

$ find /var/lib/automysqlbackup/
/var/lib/automysqlbackup/
/var/lib/automysqlbackup/weekly
/var/lib/automysqlbackup/weekly/my_wiki
/var/lib/automysqlbackup/weekly/my_wiki/my_wiki_week.18.2016-05-07_15h32m.sql.gz
/var/lib/automysqlbackup/monthly
/var/lib/automysqlbackup/daily
/var/lib/automysqlbackup/daily/my_wiki

Handmatig back-up:

# automysqlbackup

Een database terugzetten:

gunzip < /var/lib/automysqlbackup/weekly/my_wiki/my_wiki_week.18.2016-05-07_15h32m.sql.gz|mysql -uUSER -pPASSWORD my_wiki

Voor andere distributies, zie op Sourceforge.

Mysqldump via de commandoregel

De handigste manier om een dumpbestand te maken van de database waarvan u een back-up wilt maken, is door het standaardhulpmiddel MySQL-dump te gebruiken mysqldump vanaf de opdrachtregel. Zorg ervoor dat u de juiste parameters krijgt, anders kunt u problemen ondervinden bij het herstellen van de database. Afhankelijk van de grootte van de database kan mysqldump een aanzienlijke hoeveelheid tijd in beslag nemen.

Voer eerst de volgende regel in op LocalSettings.php

$wgReadOnly = 'Dumping Database, Access will be restored shortly';

Deze kan worden verwijderd zodra de dump is voltooid.

Voorbeeld van het commando om uit te voeren op de Linux/UNIX shell:

mysqldump -h hostname -u userid -p --default-character-set=charset dbname > backup.sql

Vervang hostname, userid, charset en dbname door de juiste waarden. Alle vier kunnen in uw LocalSettings.php (LSP) bestand worden gevonden. hostname kan worden gevonden onder $wgDBserver ; standaard is het localhost. userid kan gevonden worden onder $wgDBuser , charset onder $wgDBTableOptions , waar het na DEFAULT CHARSET= wordt vermeld. Als charset niet is gespecificeerd, zal mysqldump waarschijnlijk de standaard utf8 gebruiken, of als u een oudere versie van MySQL gebruikt, latin1. dbname kan gevonden worden onder $wgDBname . Na het uitvoeren van deze regel op de commandoregel zal mysqldump het wachtwoord van de server vragen (dat onder Manual:$wgDBpassword in LSP kan worden gevonden).

Zie mysqldump voor een volledige lijst met opdrachtregelparameters.

De uitvoer van mysqldump kan in plaats daarvan worden doorgesluisd naar gzip, voor een kleiner uitvoerbestand, als volgt

mysqldump -h hostname -u userid -p dbname | gzip > backup.sql.gz

Sommige nieuwere versies van MySQL kunnen een fout tonen over tabelspaties en PROCESS-privileges. MediaWiki gebruikt geen tabelspaties (tablespaces). De oplossing is om de optie --no-tablespaces toe te voegen aan het commando:

mysqldump --no-tablespaces -h hostname -u userid -p dbname | gzip > backup.sql.gz

Een vergelijkbare mysqldump opdracht kan gebruikt worden om in plaats daarvan XML output te produceren, door de --xml parameter op te nemen.

mysqldump -h hostname -u userid -p --xml dbname > backup.xml

en om het bestand met 'pipe' te comprimeren naar gzip

mysqldump -h hostname -u userid -p --xml dbname | gzip > backup.xml.gz

Aanvullende opties die u kunt overwegen met mysqldump voor een back-up zijn de volgende.

Aanvullende Mysqldump opties
Optie Beschrijving
--default-character-set Standaardtekenset opgeven
--no-tablespaces Schrijf geen CREATE LOGFILE GROUP of CREATE TABLESPACE statements in de uitvoer
--single-transaction Gebruik een statement BEGIN SQL voordat u gegevens van de server dumpt
--triggers Dump triggers voor elke gedumpte tabel
--routines Stored routines (procedures en functies) dumpen uit gedumpte databases
--events Dump events van gedumpte databases
--add-drop-table Voeg statement DROP DATABASE toe voor elk statement CREATE DATABASE
--create-options MySQL-specifieke tabelopties opnemen in statements CREATE TABLE
--extended-insert Multiple-row INSERT syntaxis gebruiken

Als u geen --single-transaction gebruikt, kunt u overwegen de opties --lock-tables en --add-locks te gebruiken.

Vanwege een onverwachte wijziging in MySQL-versies 5.7.41 en 8.0.32 in februari 2023, vereist de optie --single-transaction dat de back-upgebruiker privilege RELOAD of FLUSH_TABLES heeft. Het probleem is opgelost in MySQL-versies 5.7.42 en 8.0.33. Details: MySQL Bug 109685 en Ubuntu Bug 2003866.

Vergeet niet om een back-up te maken van de extra bestandssysteemcomponenten die door de wiki worden gebruikt en die nodig kunnen zijn tijdens een herstelbewerking, zoals afbeeldingen, logo's, skins en extensies.

Mysqldump uitvoeren met Cron

Cron is de op tijd gebaseerde taakplanner in Unix-achtige computerbesturingssystemen. Cron stelt gebruikers in staat om taken (opdrachten of shellscripts) te plannen die periodiek op bepaalde tijden of datums worden uitgevoerd.

Een opdracht die u kunt uitvoeren vanuit een crontab kan er als volgt uitzien:

nice -n 19 mysqldump -u $USER --password=$PASSWORD $DATABASE -c | nice -n 19 gzip -9 > ~/backup/wiki-$DATABASE-$(date '+%Y%m%d').sql.gz

De nice -n 19 verlaagt de prioriteit van het proces.

Gebruik geldige waarden voor Gebruik geldige waarden voor $USER, $PASSWORD en $DATABASE. Hiermee wordt een back-upbestand geschreven met de weekdag in de bestandsnaam, zodat u een doorlopende set back-ups hebt. Als u de bestanden en extensies ook wilt opslaan, kunt u deze gebruiken.

Waarschuwing Waarschuwing: Probeer niet een back-up te maken van uw MediaWiki-database met behulp van mysqlhotcopy. Het tabelformaat dat door MediaWiki wordt gebruikt, kan niet worden geback-upt met dit hulpmiddel, en het zal geruisloos mislukken!

Als u deze taak in Cron via Cpanel wilt toevoegen, moet u het karakter "%" escapen

/usr/bin/mysqldump -u $USER --password=$PASSWORD $DATABASE -c | /bin/gzip > ~/backup/wiki-$DATABASE-$(date '+\%Y\%m\%d').sql.gz

Of u krijgt de fout:

/bin/sh: -c: line 0: unexpected EOF while looking for matching `''
/bin/sh: -c: line 1: syntax error: unexpected end of file

Mysqldump uitvoeren met Systemd

Systemd verenigt de configuratie en besturing van de services. Timers zijn systemd-eenheidbestanden die servicebestanden of -gebeurtenissen beheren. Timers kunnen als een alternatief voor cron worden gebruikt. Een voorbeeld van systemd-bestanden en een back-up-script is hieronder te zien.

wiki-backup.timer

De volgende timer draait elke ochtend om 5:10 uur als de service back-up van wiki.

$ cat /etc/systemd/system/wiki-backup.timer

[Unit]
Description=Run the backup service once a day
Documentation=...

[Timer]
OnCalendar=*-*-* 05:10:00
RandomizedDelaySec=600
Persistent=true

[Install]
WantedBy=timers.target
wiki-backup.service

Wanneer de wiki-backup timer afgaat, wordt de service aangeroepen. De service draait een script dat zich in /sbin bevindt.

$ cat /etc/systemd/system/wiki-backup.service

[Unit]
Description=Run the backup service once a day
Documentation=...

[Service]
Type=oneshot
User=root
ExecStart=/sbin/wiki-backup
wiki-backup script
$ cat /sbin/wiki-backup

#!/usr/bin/env bash

# Systemd adds random paths at times. Take full control of PATH.
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH

# Read the backup password from conf or ini Failed
wiki_password=...

# Fix the wiki tables just in case. This step produces a lot of noise,
# so send stdout to /dev/null.
if MYSQL_PWD="${wiki_password}" \
   mysqlcheck my_wiki --auto-repair --user=mwuser 1>/dev/null;
then
    echo "Repair wiki database ok"
else
    echo "Failed to repair wiki database"
    echo "Continuing anyways"
fi

# Disable the connection from Apache to MySQL for the dump
if ! systemctl stop apache2.service ;
then
    echo "Failed to stop Apache service"
    echo "Continuing anyways"
fi

# Lock option choice due to MySQL change at versions 5.7.41 and 8.0.32 in
# February 2023. See https://bugs.mysql.com/bug.php?id=109685 and
# https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/2003866.
if mysql --version 2>&1 | grep -q -E 'mysql[[:space:]]+Ver 8\.0\.32'; then
   echo "Using MySQL --lock-tables --add-locks options"
   mysql_lock_opt="--lock-tables --add-locks"
else
   echo "Using MySQL --single-transaction option"
   mysql_lock_opt="--single-transaction"
fi

if MYSQL_PWD="${wiki_password}" \
   mysqldump --no-tablespaces \
     ${mysql_lock_opt} \
     --events --triggers --routines \
     --add-drop-table --create-options \
     --extended-insert \
     --default-character-set=utf8 \
     -u mwuser -h localhost my_wiki | gzip -q -v9 > /backup/wiki-backup.sql.gz ;
then
    echo "Dump wiki database ok"
else
    echo "Failed to dump wiki database"
    echo "Continuing anyways"
fi

# Re-enable connection from Apache to MySQL for the dump
if ! systemctl start apache2.service ;
then
    echo "Failed to start Apache service"
    echo "Continuing anyways"
fi

exit 0

Tabellen

Sommige van de tabellen die zijn gedumpt, hebben verschillende gradaties van tijdelijkheid. Dus om schijfruimte te besparen (meer dan alleen gzippen), hoewel die tabellen in een goede dump aanwezig moeten zijn, doen hun gegevens dat niet. Onder bepaalde omstandigheden kan het nadeel van het opnieuw moeten opbouwen van al deze gegevens echter opwegen tegen de besparing van schijfruimte (bijvoorbeeld op een grote wiki waar herstelsnelheid van het grootste belang is).

Zie mailinglijst thread mySQL5 binair schema over het onderwerp.

Latin-1 naar UTF-8 conversie

Zie het relevante gedeelte van de upgradepagina voor informatie over dit proces. Zie ook de overlegpagina voor meer informatie over het werken met tekensets in het algemeen.

PostgreSQL

U kunt het hulpmiddel pg_dump gebruiken om een MediaWiki PostgreSQL database back-up te maken. Bijvoorbeeld:

pg_dump mywiki > mywikidump.sql

zal de mywiki database in mywikidump.sql dumpen.

Om de dump in de database te zetten:

psql mywiki -f mywikidump.sql

U kunt ook de globale informatie, bijvoorbeeld de gebruikers van de database, verwijderen:

pg_dumpall --globals > postgres_globals.sql

SQLite

If your wiki is currently offline, its database can be backed up by simply copying the database file. Otherwise, you should use a maintenance script: php maintenance/SqliteMaintenance.php --backup-to <backup file name>, which will make sure that operation is atomic and there are no inconsistencies. If your database is not really huge and server is not under heavy load, users editing the wiki will notice nothing but a short lag. Users who are just reading will not notice anything in any case.

phpMyAdmin

Maak uw wiki alleen lezen door $wgReadOnly = 'Site Maintenance'; aan LocalSettings.php toe te voegen.

Zoek de wiki-database in LocalSettings.php. Hier is een voorbeeld van hoe dit eruit ziet in LocalSettings.php:

## Database settings
$wgDBtype           = "mysql";
$wgDBserver         = "localhost";
$wgDBname           = "sashtmax_mw19999";
$wgDBuser           = "sashtmax_mw19999";
$wgDBpassword       = "S7[88p]jJJ";
  1. Open in een webbrowser uw phpadmin, log in, kies de wiki-database.
  2. Kies Exporteren. Zorg ervoor dat alle onder Exporteren vermelde items (bij Uitgebreid) zijn aangevinkt en zorg ervoor dat Structuur is geselecteerd (het is belangrijk om de tabelstructuur te behouden). Voeg eventueel de optie DROP TABEL toe om bestaande referenties bij het importeren te verwijderen. Zorg dat Data geselecteerd is.
  3. Kies bij Compressie voor gezipt.
  4. Klik onderaan op EXPORTEN en bewaar het back-upbestand.[1]
  5. Verwijder $wgReadOnly = 'Site Maintenance'; uit LocalSettings.php

Vergeet niet om ook een back-up te maken van de bestandssysteemcomponenten van de wiki die mogelijk nodig zijn, zoals afbeeldingen, logo's en extensies.

HeidiSQL (alternative to phpMyAdmin)

HeidiSQL is vergelijkbaar met phpMyAdmin, maar zonder enige beperkingen van de gratis versie van phpMyAdmin. HeidiSQL vereist een directe databaseverbinding, waarbij sommige hosts alleen webinterfaces (phpMyAdmin) aanbieden voor databases met een firewall.

Bestandssysteem

MediaWiki slaat andere onderdelen van de wiki op in het bestandssysteem.

De belangrijkste zijn:

  • LocalSettings.php
  • geüploade bestanden in de map images/ (inclusief verwijderde bestanden, miniaturen en opgebouwde wiskundige en SVG-afbeeldingen, indien van toepassing).

De beste methode om hiervan een back-up te maken is om ze in een archief bestand te plaatsen, zoals een tar-bestand, dat vervolgens desgewenst kan worden gecomprimeerd. Op Windows kunnen applicaties als WinZip of 7-zip worden gebruikt.

Voor Linux-varianten, met de aanname dat de wiki in /srv/www/htdocs/wiki wordt opgeslagen

tar zcvhf wikidata.tgz /srv/www/htdocs/wiki

Het moet mogelijk zijn om de hele map "wiki" in "htdocs" te back-uppen als u XAMPP gebruikt.

Configuratie-bestanden

LocalSettings.php is het belangrijkste hiervan, maar een wiki kan ook zaken hebben als .htaccess of andere webserver configuratie-bestanden die in een back-up moeten worden opgenomen.

Geüploade bestanden

De bestanden die op de wiki worden geüpload worden standaard in de map images/ geplaatst, gescheiden in submappen zoals images/8/8f. Er zijn ook andere mappen zoals images/archive/ en images/deleted/. Deze moeten allemaal worden meegenomen in een back-up.

De images/thumb/ kan worden meegenomen in een back-up samen met al het andere, maar kan optioneel worden uitgesloten om back-upruimte te besparen. Deze map bewaart de afgeleide miniaturen van afbeeldingen en andere bestanden; over het algemeen meerdere miniaturen per wiki-bestand. Na het terugzetten van de back-up worden deze miniaturen naar behoefte opnieuw gemaakt (hoewel dit afhankelijk van $wgGenerateThumbnailOnParse een handmatig proces kan zijn).

Back-up de inhoud van de wiki (XML dump)

Het is ook een goed idee om naast de databasedump ook een XML-dump te maken. XML-dumps bevatten de inhoud van de wiki (wiki-pagina's met al hun revisies), zonder de site-gerelateerde gegevens (ze bevatten geen gebruikersaccounts, afbeeldingsmetadata, logs, enz.).[2]

XML-dumps veroorzaken minder snel problemen met tekencodering, als een middel om grote hoeveelheden inhoud snel over te dragen, en kunnen gemakkelijk worden gebruikt door hulpmiddelen van derden, waardoor XML-dumps een goede terugval zijn als uw hoofddatabasedump onbruikbaar wordt.

Gebruik de het commandoregel hulpmiddel dumpBackup.php , in de map maintenance van uw MediaWiki-installatie. Zie Manual:dumpBackup.php voor meer details.

U kunt ook een XML-dump maken voor een specifieke set pagina's online, met behulp van Special:Export, hoewel een poging om grote hoeveelheden pagina's via deze interface te dumpen meestal een time-out zal geven.

Om een XML-dump in een wiki te importeren, gebruikt u het hulpmiddel importDump.php . Voor een klein aantal pagina's kunt u ook de Special:Import pagina gebruiken via uw browser (standaard is dit beperkt tot de sysop-groep).

Zie Manual:Importing XML dumps voor meer informatie.

Zonder toegang tot de shell van de server

See m:Data dumps about Wikimedia database dumps.

WikiTeam3

Als u geen toegang heeft tot de shell op de server, gebruik dan het WikiTeam3 Python 3-script van Save the Web Project (de volledige instructies staan op die link).

Windows: When using --images, because NTFS does not allow characters such as :*?"<>| in filenames, some files may not be downloaded, please check the errors.log file.
Example usage
  • --curonly dumps only the latest revision of pages
  • --xml exports an XML dump, uses Special:Export by default when no other xmldump method is specified.
  • --xmlrevisions uses API:Allrevisions (MediaWiki 1.27+) xmldump method. Recommended as it's quicker and puts almost no pressure on the MediaWiki backend compared to Special:Export.
  • --images generates an image dump
  • --force generates a dump even if there is one already at Internet Archive
Public wikis
wikiteam3dumpgenerator <WIKI_URL> --xml --xmlrevisions
Private wikis
To dump a private wiki you will have to use a login that has at least read permission on the wiki.
wikiteam3dumpgenerator <WIKI_URL> --xml --xmlrevisions --force --user <USER> --pass <PASSWORD>
If that doesn't work. Login with a web browser, save the site cookies in Netscape format to cookies.txt, and add option --cookies cookies.txt

Scripts

With server shell access

Waarschuwing Waarschuwing: Gebruik deze op eigen risico. Controleer de LocalSettings.php van uw wiki om de juiste tekenset te gebruiken, want het kan zijn dat u het script moet bewerken.
  • Onofficieel back-up script door Flominator; Maakt een back-up van alle bestanden en de database, met optionele back-up rotatie. Shell script - last updated 2012.
  • Een ander back-up script dat: Database en bestanden (standaard slechts afbeeldingen dumpt, optie om alle bestanden in de installatie te omvatten) en XML; de site in read-only modus zet; tijdstempels back-up; en de charset leest uit LocalSettings. Het script hoeft niet te worden gewijzigd om elke site te back-uppen. Het roteert (nog) niet de oude back-ups. Gebruik: backup.sh -d backup/directory -w installation/directory. Het biedt ook een script om een back-up restore.sh -a backup/directory/dated_archive.tar.gz -w installation/directory terug te zetten. Shell script - laatste update 2013.
  • User Darizotas/MediaWiki Back-up script voor Windows - een script voor het maken van een back-up van een Windows MediaWiki-installatie. Opmerking: Heeft geen terugzetfunctie. Shell script - laatste update 2015.
  • Onofficieel back-up script door User:Duesentrieb. Shell script - laatste update 2016.
  • Script om periodieke back-ups te maken mw_backup. Dit script maakt dagelijkse, wekelijkse en maandelijkse back-ups van uw database en map met afbeeldingen wanneer het wordt uitgevoerd als een dagelijkse cron-taak. PHP script - laatste update 2017.
  • Nog een onofficieel MediaWiki back-up script voor Windows met Lanthanis dat: de pagina's van gespecificeerde namesapces exporteert als een XML-bestand; gespecificeerde databasetabellen dumpt; en verder gespecificeerde mappen en bestanden toevoegt aan een ZIP-bestand als een back-up. Kan worden gebruikt met Windows-taakplanner. Laatste update 2019.

Without server shell access

For example your wiki is in a wikifarm , using the MediaWiki API .

  • WikiTeam's dumpgenerator Python 2 script can generate an XML dump and an image dump - last updated 2023.
  • Mediawiki Client Tools' MediaWiki Dump Generator dumpgenerator Python 3 script can generate an XML dump and an image dump - last updated 2023.
  • See above: Save the Web Project's WikiTeam3 wikiteam3dumpgenerator Python 3 script can generate an XML dump and an image dump - actively maintained in 2024.

Extensies

Zie ook

Referenties

  1. Manual talk:Backing up a wiki#Ubuntu 10.10 - Step by Step Instructions
  2. XML-dumps zijn onafhankelijk van de databasestructuur en kunnen worden geïmporteerd in toekomstige (en zelfs eerdere) versies van MediaWiki.