Manual:Backing up a wiki/id

Melakukan backup wiki Anda pada MediaWiki menjadi penting untuk dilakukan apabila Anda tidak ingin kehilangan data. Pada laman ini akan dijelaskan secara umum bagaimana melakukan backup data wiki Anda pada MediaWiki; Untuk kebutuhan yang lebih spesifik misalnya backup secara periodik, Anda perlu melakukan penyesuaian tersendiri.

Tinjauan
MediaWiki menyimpan data pada dua lokasi, yaitu:


 * Database : Halaman berikut isinya, pengguna berikut preferensinya, metadata, indeks pencarian, dsb.
 * File System : Berkas konfigurasi perangkat lunak, skin kustomisasi, ekstensi, gambar (termasuk di dalamnya gambar yang dihapus), dsb.

Pertimbangkan untuk membuat konfigurasi Wiki menjadi read-only saja sebelum melakukan backup - lihat Manual:$wgReadOnly. Hal ini akan memastikan data-data dalam proses backup akan konsisten.

MySQL

 * Untuk tutorial yang telah tertulis rapi, bisa melihat: MySQL Export: Bagaimana melakukan backup database phpMyAdmin

Mayoritas data kritikal wiki tersimpan di dalam database, berarti dapat disimpulkan bahwa umumnya proses backup akan cukup sederhana. Saat menggunakan basisdata MySQL, terdapat beragam perkakas yang tersedia yang dapat membantu melakukan "dumping" database ke dalam sebuah berkas. Jika merasa dibutuhkan, dapat dibuat script yang berfungsi untuk melakukan backup secara periodik.

Contoh perkakas adalah MySQL dump tool yang merupakan aplikasi command-line. Aplikasi ini dapat menghasilkan sebuah berkas dump dari sebuah database. Kustomisasi dapat dilakukan dengan menambahkan opsi. Misalnya kustomisasi format karakter encoding berkas keluaran.

Contoh perintah yang dapat Anda jalankan dari crontab adalah sebagai berikut:

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

Gunakan variabel yang valid untuk $USER, $PASSWORD, $DATABASE. Perintah ini akan menghasilkan berkas backup yang disertai dengan timestamp saat dilakukan backup. Hal ini akan memudahkan untuk melakukan pemeriksaan kapan proses backup dilakukan.

Jika Anda ingin menyimpan berkas dan ekstensi, Anda dapat mempertimbangkan untuk menggunakan this one.

Tabel
Berdasarkan pengamatan yang mendalam, seseorang menemukan bahwa beberapa tables yang didump memilik beragam tingkat kesementaraan (temporariness). Jadi untuk menghemat ruang disk (tidak hanya melakukan gzip), walaupun tabel tersebut perlu ada dalam dump yang baik, data mereka tidak. Namun, dalam kondisi tertentu kerugian dari harus membangun ulang semua data ini adalah dapat lebih penting daripada menghemat ruang disk (misalnya, pada wiki yang besar kecepatan restorasi menjadi penting).

Lihat arsip diskusi pada milis thread mengenai topik ini.

Character set
You can see which character set your tables are using with a mysql statement like  (including the semicolon). The last line will include a DEFAULT CHARSET clause.

If the last line does not include a DEFAULT CHARSET clause then there is another way if you know that nobody has changed the character set of the database server since it was installed and the wiki's database was created using the default character set of the database. The STATUS command displays the database server's default character set next to Server characterset:. Here is an example output:

mysql> status - - - - - - - - - mysql Ver 12.22 Distrib 4.0.20a, for Win95/Win98 (i32) Connection id:         13601 Current database: Current user:          root@localhost SSL:                   Not in use Server version:        4.0.20a-nt Protocol version:      10 Connection:            localhost via TCP/IP Client characterset:   latin1 Server characterset:   latin1 TCP port:              3306 Uptime:                27 days 4 hours 58 min 26 sec

Use the option --default-character-set=latin1</tt> on the mysqldump</tt> command line to avoid the conversion if you find it set to "latin1</tt>".

Like this: <pre style="white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;overflow:auto;"> /usr/bin/nice -n 19 /usr/bin/mysqldump -u $USER -p$PASSWORD --default-character-set=$CHARSET $DATABASE -c | /usr/bin/nice -n 19 /bin/gzip -9 > ~/backup/wiki-sql-$(date '+%a').sql.gz

Also one can try --default-character-set=binary. “Convert latin1 to UTF-8 in MySQL” on Gentoo Linux Wiki has more information.

Latin-1 to UTF-8 conversion
When you want to upgrade from a rather old Mediawiki installation with Latin-1 to UTF-8 which might be tricky depending on your operating system and MySQL settings - in my example from Mediawiki 1.5 (2004) to 1.15.1 (2009) - perform the following steps as found in the article Convert a MySQL DB from latin1 to UTF8 and further adapted to Mediawiki specialities (DBNAME is the name of your wiki database): mysqldump -u root -p --opt --default-character-set=latin1 --skip-set-charset DBNAME > DBNAME.sql

Then use sed to change character settings latin1 to utf8: <pre style="white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;overflow:auto;"> sed -e 's/character set latin1 collate latin1_bin/character set utf8 collate utf8_unicode_ci/gi' -e 's/CHARSET=latin1/CHARSET=utf8/g' DBNAME.sql > DBNAME2.sql

Every character in UTF-8 needs up to 3 bytes, thus it is necessary to decrease one key which is done with the following command Relevant sources: A further problem which prevents reimporting the database was the math table (ERROR line 389: Duplicate entry  for key 1'' when trying to import the mysqldump). I solved it by simply deleting the math table content, as this is only a cache and need not to be imported when upgrading.
 * Bug 1322 "Specified key was too long" (MySQL error) during installation"
 * MediaWiki maintenance/tables.sql
 * I found different MediaWiki versions already using different cl_sortkey length and took this into account below
 * "Specified key was too long; max key length is 1000 bytes": "Truncate so that the cl_sortkey key fits in 1000 bytes"

sed -e 's/`cl_sortkey` varchar(255)/`cl_sortkey` varchar(70)/gi' DBNAME2.sql > DBNAME21.sql sed -e 's/`cl_sortkey` varchar(86)/`cl_sortkey` varchar(70)/gi' DBNAME21.sql > DBNAME22.sql sed -e 's/`cl_sortkey`(128)/`cl_sortkey`(70)/gi' DBNAME22.sql > DBNAME23.sql sed -e '/^INSERT INTO `math/d' DBNAME23.sql > DBNAME3.sql

From here I then created a new database DBNEW and then imported the dumpfile mysql -u root -p -e "create database DBNEW" mysql -u root -p --default-character-set=utf8 DBNEW < DBNAME3.sql

Now start a fresh MediaWiki installation and use your new wiki database name DBNEW - actually the UTF-8 converted copy of your untouched old DBNAME wiki - and the database copy will be automatically upgraded to the recent MediaWiki database scheme. Several successful conversions from MediaWiki 1.5 to MediaWiki 1.15.1 under PHP 5.2.12 (apache2handler) and MySQL 4.1.13 have been made.

Latin-1 to UTF-8 conversion under Windows
--LouisCyphre 10:38, 1 February 2010 (UTC) Tested under WindowsXP. Mediawiki 1.13.2 dumped under EasyPHP 1.8.0.1. Converted with Chargo 0.8.1. Imported to XAMPP 1.7.3. Updated to Mediawiki 1.15.1.
 * 1) Dump your DB as usual.
 * 2) Convert your DB using the character set conversion utility Charco
 * 3) Replace all latin1 thru utf8 inside the dump.
 * 4) Import the dump into a new DB or overwrite the old.
 * 5) Ready

PostgreSQL
You can use the pg_dump</tt> tool to back up a MediaWiki PostgreSQL database. For example: pg_dump mywiki > mywikidump.sql will dump the mywiki</tt> database to mywikidump.sql.

To restore the dump: psql mywiki < mywikidump.sql

SQLite
See Manual:SQLite

File system
MediaWiki menyimpan komponen lain dari wiki di dalam sistem berkas. Contohnya adalah berkas konfigurasi situs (LocalSettings.php</tt>, AdminSettings.php</tt>), berkas gambar (termasuk gambar yang dihapus, thumbnail gambar, gambar SVG, dan rendered math, kustomisasi skin, berkas ekstensi, dsb.

Metode yang terbaik untuk membackup berkas-berkas ini adalah dengan menempatkan mereka sebagai berkas archive seperti .tar</tt>. Bagi pengguna sistem operasi Windows, dapat menggunakan aplikasi WinZip atau 7-zip.

Jika menggunakan XAMPP, backup seluruh folder "wiki" di dalam "htdocs".

Dump XML
Merupakan ide yang bagus untuk membuat dump XML selain melakukan dump basisdata. Di dalam XML terdapat isi dari wiki (halaman wiki berikut dengan revisinya), tanpa data-yang-terkait (tidak terdapat akun user, metadata gambar, log, dsb). Dump XML independen terhadap struktur basisdata, dan dapat diimport ke versi MediaWiki yang lebih baru atau lebih lama. Dump XML cenderung tidak menyebabkan permasalahan dengan character encoding, dan dapat diproses oleh perkakas pihak ketiga yang membuatnya menjadi fallback yang baik saat dump basisdata tidak bisa digunakan. Hal ini juga berarti cara yang baik meredistribusi secara massal.

To create an XML dump, use the command-line tool dumpBackup.php</tt>, located in the maintenance</tt> directory of your MediaWiki installation. Run the command as php dumpBackup.php</tt> without any arguments to display a brief description of the syntax. You need to specify whether you want a full dump of the complete history of every page, or just the current contents of each page. Prior to MediaWiki 1.16: If an attempt to use  fails with a message about insufficient  permissions, ensure that you have a properly configured   file. Instructions on creating the file are at Manual:AdminSettings.php.

You can also create an XML dump for a specific set of pages online, using the Special:Export, although attempting to dump large quantities of pages through this interface will usually time out.

To import an XML dump into a wiki, use the command-line tool importDump.php</tt>. For a small set of pages, you can also use the Special:Import page via your browser (per default, this is restricted to the sysop group). As an alternative to dumpBackup.php</tt> and importDump.php</tt>, you can use MWDumper, which is faster, but requires a Java runtime environment. See Manual:Importing XML dumps for more information.

Script

 * Unofficial backup script oleh [User:Duesentrieb]]; membackup semua berkas, dump basis data, dan dump xml.
 * Unofficial backup script oleh User:Duesentrieb, namun dimodifikasi oleh User:Kaotic.
 * Unofficial backup script oleh Flominator; membackup semua berkas berikut basisdata dengan opsi rotasi backup.
 * Unofficial web-based backup script, mw_tools, oleh Wanglong (allwiki.com); Anda dapat menggunakannya untuk membackup database, atau gunakan berkas backup untuk me-recover basisdata.
 * User:Darizotas/MediaWiki Backup Script for Windows - script untuk backup pada instalasi MediaWiki di Windows. Catatan: tidak memiliki fitur restore.

Lihat pula

 * Manual:Moving a wiki
 * Manual:Restoring wiki code from cached HTML (if you don't have a successful backup)

Pranala luar

 * Siteground: MySQL Export: How to backup phpMyAdmin database
 * Mediawiki-l mailinglist thread "mysql5 binary schema" 25.03.2009