Руководство:Резервное копирование вики

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:Backing up a wiki and the translation is 68% complete.

Outdated translations are marked like this.
Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎dansk • ‎español • ‎français • ‎italiano • ‎magyar • ‎polski • ‎português • ‎português do Brasil • ‎русский • ‎தமிழ் • ‎සිංහල • ‎中文 • ‎日本語 • ‎한국어

Важно регулярно делать резервные копии данных в вашей Вики. В этом разделе описывается обзор процесса резервного копирования для типичной Вики на движке MediaWiki. Возможно, вы захотите разработать свой собственный скрипт резервного копирования или график резервного копирования в зависимости от размеров вашей Вики и ваших индивидуальных потребностей.

Обзор

MediaWiki хранит важные данные в двух местах:

База данных
страницы и их содержимое, пользователи и их настройки, метаданные, индекс поиска и другое
Файловая система
файлы конфигурации, файлы тем, расширения, изображения (включая удаленные изображения) и другое

Необходимо перевести MediaWiki в режим read-only прежде, чем создавать резервную копию — смотри раздел $wgReadOnly . Это будет гарантией того, что все части вашей резервной копии непротиворечивы (некоторые из установленных дополнений могут записывать данные в базу).

Передача файлов

Вам нужно выбрать способ для передачи файлов с сервера, где они находятся:

  • Неконфиденциальные данные вы можете просто опубликовать на archive.org или в каталог dumps/ вашего веб-сервера.
  • SCP (или WinSCP), SFTP/FTP или любой другой протокол передачи, который вы привыкли использовать.
  • Хостинг компания может предоставлять интерфейс файлового менеджера при помощи веб-браузера; свяжитесь с вашим провайдером.

База данных

Большинство критических данных Вики хранятся в базе данных, которая обычно проста для резервного копирования. При использовании MySQL-бэкэнда по-умолчанию, база данных может быть задамплена в скрипт файл, который может быть использован позже, чтобы восстановить базу данных и все данные в ней с нуля.

MySQL

Automysqlbackup

Смотри пакет в 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.
[...]

Установка пакета:

# apt install automysqlbackup

Все ваши базы данных будут сохранены в /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

Резервное копирование вручную:

# automysqlbackup

Восстановление базы данных:

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

Другие версии смотри на SourceForge.

Получение Mysqldump из командной строки

Наиболее удобный способ для создания файла дампа базы данных — это использовать стандартный инструмент MySQL dump tool. Оно является приложением командной строки. Убедитесь, что используете правильные параметры, в противном случае могут возникнуть трудности при восстановлении базы данных. В зависимости от размера базы данных, создание дампа может занять значительное количество времени.

Сначала вставьте следующую строку в LocalSettings.php

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

это можно удалить после того, как только создание дампа будет завершено.

Пример команды для запуска на Linux/Unix оболочке:

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

Substituting hostname, userid, whatever, and dbname as appropriate. All four may be found in your LocalSettings.php (LSP) file. hostname may be found under $wgDBserver ; by default it is localhost. userid may be found under $wgDBuser , whatever may be found under $wgDBTableOptions , where it is listed after DEFAULT CHARSET=. If whatever is not specified mysqldump will likely use the default of utf8, or if using an older version of MySQL, latin1. While dbname may be found under $wgDBname . After running this line from the command line mysqldump will prompt for the server password (which may be found under Manual:$wgDBpassword in LSP).

Смотри страницу mysqldump для того, чтобы узнать все параметры командной строки.

На выходе можно сразу создать архив Wikipedia:ru:gzip, чтобы уменьшить размер

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

Похожая команда может быть использована для создания XML файла, если добавить параметр --xml.

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

и сжать файл используя gzip

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

Необходимо помнить, что некоторые системные компоненты в виде файлов необходимы всегда, например, изображения, лого и расширения.

Запуск mysqldump при помощи Cron

Cron — классический демон выполнения заданий в unix-подобных ОС. Cron позволяет пользователям создавать задания (на выполнение команд или скриптов), которые нужно выполнять в определённое время или даты.

Пример команды которую вы можете запустить через crontab выглядит так:

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

nice -n 19 понижает приоритет процесса.

Установите правильные значения для переменных $USER, $PASSWORD, $DATABASE. Будет создан файл ежедневной копии базы данных. Если вы сохраняете файлы и расширения таким образом то вы можете использовать метод предложенный на другой странице.

Внимание Внимание: Не используйте для резервного копирования mysqlhotcopy. Табличный формат, используемый MediaWiki не может быть скопирован этой программой, поэтому она сломает резервную копию!

Если Вы хотите добавить задание сохранения базы в планировщик Cron через Cpanel, то вы должны экранировать символ «%»

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

В противном случае, Вы получите ошибку:

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

Таблицы

В случае если фактор скорости восстановления для вас является основным резервные копии отдельных таблиц tables позволяют экономить дисковое пространство. So to save disk space (beyond just gziping), although those tables need to be present in a proper dump, their data does not. However, under certain circumstances the disadvantage of having to rebuild all this data may outweigh the saving in disk space (for example, on a large wiki where restoration speed is paramount).

Обратитесь в список рассылки — раздел «mysql5 binary schema» по данному вопросу.

Преобразование кодировки Latin-1 в UTF-8

Смотри раздел страницы обновления для того, чтобы узнать, как это делается. Также смотри страницу обсуждения для того, чтобы узнать, как работать с кодировками в целом.

PostgreSQL

Вы можете использовать утилиту pg_dump для резервного копирования MediaWiki на PostgreSQL. Например:

pg_dump mywiki > mywikidump.sql

скопирует базу mywiki в файл mywikdump.sql.

Чтобы восстановиться из копии:

psql mywiki -f mywikidump.sql

Вы можете также скопировать глобальную информацию, например, пользователей базы:

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/sqlite.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

Чтобы перевести вики в режим read-only, необходимо добавить строчку $wgReadOnly = 'Сайт недоступен'; в файл LocalSettings.php.

Open the browser to your phpadmin link, login, choose the wiki database. (Check LocalSettings.php if you're not sure). Select Export. Make sure all items under Export are highlighted, and make sure Structure is highlighted (it's important to maintain the table structure). Optionally check Add DROP TABLE to delete existing references when importing. Make sure Data is checked. Select zipped. Then click on GO and save the backup file.[1]

Необходимо удалить строку с $wgReadOnly из файла LocalSettings.php

Необходимо помнить, что некоторые системные компоненты в виде файлов необходимы всегда, например, изображения, лого и расширения.

Внешние ссылки

HeidiSQL

HeidiSQL — похожая на phpMyAdmin, но менее строгая версия бесплатного phpMyAdmin. HeidiSQL requires a direct database connection, where some hosts may only offer web interfaces (phpMyAdmin) to firewalled databases.

Файловая система

MediaWiki хранит другие компоненты Вики в виде файлов, что более удобно, чем вставка в базу данных. Например, конфигурационные файлы (LocalSettings.php, AdminSettings.php), файлы изображений (включая удалённые, иконки и отрендеренные SVG файлы), изменённые темы, файлы расширений и так далее.

Лучшим методом хранения таких файлов — архивы типа tar, которые могут быть сжаты. Для Windows можно использовать такие утилиты, как WinZip или 7-Zip.

Варианты для Linux, если вики хранится в директории /srv/www/htdocs/wiki

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

Должна быть резервная копия всей папки wiki в директории htdocs, если используется XAMPP.

Резервная копия содержимого вики (XML dump)

Для дополнения дампа базы данных рекомендуется выполнять XML дапм. В XML дамп входит содержимое wiki-страниц и всех их ревизий (информация о логинаx пользователей, журналы, метаданные изображений в xml дампе не хранятся).

XML dumps are less likely to cause problems with character encoding, as a means of transferring large amounts of content quickly, and are easily be used by third party tools, which makes XML dumps a good fallback should your main database dump become unusable.

XML дампы независимы от структуры базы данных, и могут быть импортированы в новые версии MediaWiki. Вероятные проблемы при переносе данных или миграции wiki (например проблемы кодировки) можно решить при использовании XML дампов, так же они могут понадобиться в случае если восстановление БД из дампа созданного средствами mysqldump невозможно

XML дампы создаются инструментом командной строки dumpBackup.php, расположенный в каталоге maintenance. инструмент имеет дополнительные опции и вызывается php dumpBackup.php без аргументов для вывода всех доступных опций.

Если при попытке использования dumpBackup.php возникают проблемы обратитесь в раздел AdminSettings.php для исправления ошибки.

Для импорта XML-дампа в wiki используйте инструмент коммандной строки importDump.php. для небольшого набора данных вы можете использовать Special:Import через браузер (по умолчанию эта функция доступна только sysop группе). Альтернативой dumpBackup.php и importDump.php, является MWDumper, это быстрый инструмент требующий Java runtime environment. Для получения дополнительной информации посмотрите Manual:Importing XML dumps.

Смотри Manual:Importing XML dumps для получения дополнительной информации.

Without shell access to the server

If you have no shell access, then use the WikiTeam Python script dumpgenerator.py from a DOS, Unix or Linux command-line. Requires Python v2 (v3 doesn't yet work).

To get an XML, with edit histories, dump and a dump of all images plus their descriptions. Without extensions and LocalSettings.php configs.

python dumpgenerator.py --api=http://www.sdiy.info/w/api.php --xml --images

Full instructions are at the WikiTeam tutorial.

See also Meta:Data dumps.

Скрипты

Внимание Внимание: Use these at your own risk. Check your wiki's LocalSettings.php for the correct character set to use, as you may need to edit the script to suit.
  • неофициальный скрипт резервного копирования User:Duesentrieb: [1]; создает резервную копию всех файлов, дамп базы данных, xml дамп.
  • неофициальный скрипт резервного копирования Flominator: User:Flominator/Backup MW; создает резервную копию всех файлов и базы данных с возможной ротацией резервных копий.
  • User:Darizotas/MediaWiki Backup Script for Windows - a script for backing up a Windows MediaWiki install. Note: Has no restore feature.
  • неофициальный скрипт резервного копирования с веб интерфейсом mw_tools от Wanglong (allwiki.com); вы можете использовать его как для бэкапа вашей базы данных так и для восстановления ее.
  • WikiTeam tools - if you do not have server access (e.g. your wiki is in a free wikifarm), you can generate an XML dump and an image dump using WikiTeam tools (see some saved wikis).
  • Fullsitebackup
  • Another backup script that: dumps DB, files, and XML; puts the site into read-only mode; timestamps backups; and reads the charset from LocalSettings. Script does not need to be modified for each site to be backed up. Does not (yet) rotate old backups. Usage: backup.sh -d backup/directory -w installation/directory
  • Another unofficial MediaWiki backup script for Windows by Lanthanis that: exports the pages of specified namespaces as an XML file; dumps specified database tables; and adds further specified folders and files to a ZIP backup file. Can be used with Windows task scheduler.
  • Script to make periodical backups mw_backup. This script will make daily, weekly and monthly backups of your database and images directory when run as a daily cron job.

См. также

Примечания