Handleiding:Back-up maken van een wiki
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.
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.
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.
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";
- Open in een webbrowser uw phpadmin, log in, kies de wiki-database.
- 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.
- Kies bij Compressie voor gezipt.
- Klik onderaan op EXPORTEN en bewaar het back-upbestand.[1]
- 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.
Externe links
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).
:*?"<>|
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
- 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-uprestore.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
- Extension:DumpsOnDemand – Staat gebruikers toe om database dumps te genereren en te downloaden
- Extension:DataDump – Staat gebruikers toe om XML- en bestands-/afbeeldingsdumps te genereren en te downloaden
Zie ook
- Help:Export is een snelle en gemakkelijke manier om alle pagina's op uw wiki op te slaan.
- Handleiding:Een wiki met een back-up herstellen
- Handleiding:Een wiki verplaatsen
- Handleiding:Upgraden
- Manual:Restoring wiki code from cached HTML — Als u geen succesvolle back-up heeft
- Exporting all the files of a wiki
Referenties
- ↑ Manual talk:Backing up a wiki#Ubuntu 10.10 - Step by Step Instructions
- ↑ XML-dumps zijn onafhankelijk van de databasestructuur en kunnen worden geïmporteerd in toekomstige (en zelfs eerdere) versies van MediaWiki.