Manual:SQLite/ru

This page is a translated version of the page Manual:SQLite and the translation is 67% complete.
Outdated translations are marked like this.
SQLite logo
SQLite logo

The purpose of this page is to collect information and experiences about running MediaWiki on SQLite.

MediaWiki supports SQLite since 1.17, but please note that this is second-class support, and you may likely run into some bugs. The database most commonly used with MediaWiki is MySQL . See Phabricator for a list of issues. MediaWiki requires SQLite 3.8.0 or later. Однако поддержка SQLite расширениями, которые вносят изменения в базу данных, разнообразна.

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

О SQLite

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

Использование SQLite в качестве базы данных для MediaWiki имеет свои плюсы и минусы:

Плюсы
  • Вам не нужно устанавливать и поддерживать автономный сервер базы данных, такой как MySQL; это значительно сокращает усилия, затрачиваемые на администрирование, и устраняет некоторые точки отказа.
  • Первое также означает, что SQLite гораздо больше подходит для переносных установок MediaWiki, запускаемых с USB-накопителя.
  • Вы не ограничены искусственными ограничениями базы данных на общих хостах.
  • Вся база данных хранится в виде одного кроссплатформенного файла, что упрощает резервное копирование и миграцию.
Минусы
  • SQLite не так масштабируем, поэтому если у вас большая и популярная вики, вам следует использовать MySQL.
  • Хотя у SQLite есть собственная поисковая система, она не поддерживается более продвинутыми решениями, такими как Lucene.
  • Известно, что несколько расширений имеют проблемы с обновлением базы данных или установкой с SQLite: AbuseFilter, Echo, Flow и LiquidThreads.

Установка SQLite

Требуется по крайней мере SQLite версии 3.8.0+. Кроме того, чтобы использовать полнотекстовый поиск, SQLite должен быть скомпилирован с включенным модулем FTS3 (в настоящее время в большинстве сборок он уже включен). SQLite3 работает посредством PDO functions|функции PHP PDO.

  • Чтобы установить SQLite3 в системе на базе Debian или Ubuntu, используйте apt install php-sqlite3.
  • Двоичные файлы Windows с php.net в порядке.
  • Модуль PHP PDO SQLite должен быть загружен. You should uncomment the following line in your php.ini
    • extension=pdo_sqlite
  • Куда вы должны поместить саму базу данных SQLite? Путь по умолчанию выглядит так: $IP/../data/$dbname.sqlite. Все, что находится за пределами webroot, должно быть безопасным; хорошо держать его рядом. Или, если вам так хочется, вы можете поместить его где-нибудь в корень веб-сайта и обязательно использовать конфигурацию веб-сервера, чтобы запретить доступ к нему.

Установка MediaWiki на бэкэнд SQLite

  • Если модуль SQLite для PHP установлен правильно, установщик MediaWiki (/mw-config/index.php) должен предложить вам вариант использования SQLite.
  • If you enter nothing into the "SQLite data directory" field, your $wgSQLiteDataDir will be left empty, which corresponds to data directory in the parent of the document root, however this directory might be different for web scripts and maintenance scripts run from command line, so specifying it explicitly is recommended.

Поисковый движок

Версия MediaWiki:
1.16

Возможности поиска для бэкенда SQLite были представлены в MediaWiki 1.16. Для них требуется SQLite с скомпилированным модулем FTS3, который обычно присутствует в большинстве современных сборок. If you've recently updated your SQLite support to a version that includes FTS3, run the updater as if you're upgrading MediaWiki. После того, как сценарий обновления создал таблицу поискового индекса, заполните ее файлом $reboottextindex. То же самое относится и к переключению обратно в среду без FTS3: повторный запуск средства обновления понизит таблицу, чтобы избежать ошибок SQL.

Резервное копирование

Если ваша вики в настоящее время отключена, ее базу данных можно сделать резервной копией, просто скопировав файл базы данных. В противном случае вам следует использовать сценарий обслуживания: php Maintenance/SqliteMaintenance.php --backup-to <имя файла резервной копии>, который обеспечит атомарность операции и отсутствие несоответствий. Если ваша база данных невелика и сервер не сильно загружен, пользователи, редактирующие вики, не заметят ничего, кроме короткого лага. Пользователи, которые просто читают, в любом случае ничего не заметят.

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.

Поиск проблемы

Не удается получить доступ к базе данных на терминале

Чтобы получить доступ к базе данных из командной строки, введите в терминале:

sqlite3 /var/data/имя_базы_данных.sqlite
sqlite3 /var/data/database_name.sqlite

заменив /var/data каталогом, который был задан как «каталог данных SQLite» в процессе установки. В качестве альтернативы найдите $wgSQLiteDataDir внутри LocalSettings.php .

Это может быть сложно, если вы не разбираетесь в SQLite и запускаете sqlite3 имя_базы_данных, потому что это откроет совершенно другую базу данных (создает её, если она не существует), поскольку SQLite интерпретирует аргумент не как общесистемное имя базы данных, а вместо этого как имя файла, содержащего db.

Проблемы

Об ошибках следует сообщать в систему отслеживания ошибок Викимедиа. Сначала проверьте, не сообщалось ли о вашей проблеме — проверьте зависимости тега #sqlite и воспользуйтесь поиском. Если вы не можете найти свою проблему, создайте новый запрос. В любом случае, пожалуйста, предпримите некоторые шаги, чтобы упростить поиск и отслеживание вашей ошибки: упомяните SQLite в его резюме и сделайте так, чтобы она зависела от тега sqlite.

Performance Tips

  • If possible, ensure you have the APCu php extension installed and $wgMainCacheType set to CACHE_ACCEL. If no cache is present, MediaWiki will use the database as a cache backend, which can lead to write contention. On Sqlite this can significantly slow down your wiki.
  • Make sure your SQLite database is in WAL mode (Write-Ahead Logging – WAL). This can have a major impact on performance when people are viewing and editing your site at the same time. You can do this by using the sqlite command line tool to open the DB, and run the command PRAGMA journal_mode=wal;.

См. также

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