Příručka:SQLite
![Logo SQLite](http://178.128.105.246/content-http-upload.wikimedia.org/wikipedia/commons/thumb/3/38/SQLite370.svg/200px-SQLite370.svg.png)
Účelem této stránky je shromažďovat informace a zkušenosti s provozováním MediaWiki na SQLite.
MediaWiki podporuje SQLite od 1.17, ale mějte na paměti, že se jedná o podporu druhé třídy a pravděpodobně narazíte na nějaké chyby. Nejčastěji používaná databáze s MediaWiki je MySQL . Seznam problémů naleznete v Phabricatoru. MediaWiki vyžaduje SQLite 3.8.0 nebo novější. Podpora SQLite pomocí rozšíření, která provádějí změny v databázi, je různá.
Je SQLite dobrou volbou pro MediaWiki?
Existují dvě důležitá upozornění na používání SQLite pro MediaWiki. Za prvé, zatímco mnoho rozšíření podporuje SQLite, existují některá populární rozšíření, která jej dodnes nepodporují. Za druhé, SQLite se neškáluje nad rámec jednoho serveru. V případě, že se vaše wiki rozroste a bude mít mnoho souběžných uživatelů a velké množství obsahu, bylo by lepší použít databázový systém, který podporuje model primární repliky, jako je MySQL. V důsledku toho, pokud vaše wiki může záviset na používání těchto rozšíření nebo může potřebovat použít primární replikovaný databázový systém, je nejlepší použít pro vaši wiki databázi MySQL. Rozhodnutí použít SQLite, MySQL nebo jiný databázový systém by mělo být v ideálním případě učiněno před vytvořením wiki, protože je obtížné převést z databáze SQLite na databázi MySQL, jakmile začnete používat svou wiki.
O SQLite
SQLite je open-source databázová knihovna uvolněná do veřejné domény. Na rozdíl od client-server systémů pro správu databází je SQLite knihovna propojená s PHP a stává se tak nedílnou součástí procesu serveru. MediaWiki využívá funkčnost SQLite prostřednictvím jednoduchých volání funkcí, což snižuje latenci v přístupu k databázi, protože volání funkcí jsou efektivnější než meziprocesová komunikace.
Použití SQLite jako databázového backendu pro MediaWiki má své výhody a nevýhody:
- Klady
- Nemusíte instalovat a udržovat samostatný databázový server, jako je MySQL. To výrazně snižuje úsilí vynaložené na administraci a odstraňuje některé body selhání.
- První také znamená, že SQLite je mnohem vhodnější pro přenosné instalace MediaWiki běžící z USB klíče.
- Nejste omezeni umělými omezeními databáze na sdílených hostitelích.
- Celá databáze je uložena jako jeden multiplatformní soubor, což zjednodušuje zálohování a migraci.
- Zápory
- SQLite není tak škálovatelné, takže pokud máte velkou a populární wiki, měli byste používat MySQL.
- Přestože má SQLite svůj vlastní vyhledávač, není podporován pokročilejšími řešeními, jako je Lucene.
- Je známo, že několik rozšíření má problémy s aktualizací databáze nebo instalací s SQLite: AbuseFilter, Echo, Flow a LiquidThreads.
Instalace SQLite
Je vyžadována alespoň verze SQLite 3.8.0+. Aby bylo možné používat fulltextové vyhledávání, musí být SQLite zkompilován s povoleným modulem FTS3 (většina sestavení jej má v dnešní době již po vybalení). SQLite3 funguje přes PHP PDO funkce.
- Chcete-li nainstalovat SQLite3 na systém založený na Debianu nebo Ubuntu, použijte
apt install php-sqlite3
. - Binární soubory Windows z php.net jsou v pořádku.
- Je třeba načíst modul PHP PDO SQLite. Následující řádek byste měli odkomentovat ve svém
php.ini
extension=pdo_sqlite
- Kam byste měli umístit samotnou databázi SQLite? Výchozí cesta se zdá být $IP/../data/$dbname.sqlite. Cokoli mimo webroot by mělo být bezpečné. Je dobré ho mít poblíž. Nebo, pokud se vám to líbí, můžete to vložit někam do webového kořenového adresáře a ujistěte se, že k odepření přístupu k němu použijete konfiguraci webového serveru.
Instalace MediaWiki na SQLite backend
- Pokud je správně nainstalován modul SQLite pro PHP, měl by vám instalační program MediaWiki (
/mw-config/index.php
) nabídnout možnost používat SQLite. - Pokud do pole "SQLite data directory" nic nezadáte, vaše $wgSQLiteDataDir zůstane prázdné, což odpovídá adresáři
data
v nadřazeném kořenovém adresáři dokumentu, avšak tento adresář se může lišit pro webové skripty a skripty údržby spouštět z příkazového řádku, takže je doporučeno jej explicitně specifikovat.
Vyhledávač
Verze MediaWiki: | ≥ 1.16 |
Možnosti vyhledávání pro backend SQLite byly představeny v MediaWiki 1.16. Vyžadují SQLite se zkompilovaným modulem FTS3, který je obvykle přítomen ve většině moderních sestavení. Pokud jste nedávno aktualizovali podporu SQLite na verzi, která obsahuje FTS3, spusťte aktualizátor, jako byste upgradovali MediaWiki. Poté, co aktualizační skript vytvořil tabulku indexu vyhledávání, naplňte ji rebuildtextindex.php . Totéž platí pro přepnutí zpět do prostředí bez FTS3: Opětovné spuštění aktualizačního programu sníží verzi tabulky, aby se předešlo chybám SQL.
Zálohování
Pokud je vaše wiki v současné době offline, může být její databáze zálohována jednoduše zkopírováním souboru databáze.
V opačném případě byste měli použít skript údržby: php maintenance/SqliteMaintenance.php --backup-to <backup file name>
, který zajistí, že operace je přesná a neexistují žádné nesrovnalosti.
Pokud vaše databáze není opravdu obrovská a server není pod silným zatížením, uživatelé editující wiki si nevšimnou ničeho jiného než krátkého zpoždění.
Uživatelé, kteří právě čtou, si v žádném případě nic nevšimnou.
Řešení problémů
Nelze získat přístup k databázi na terminálu
Chcete-li získat přístup k databázi z příkazového řádku, zadejte na terminálu:
sqlite3 /var/data/database_name.sqlite
nahrazením /var/data
adresářem, který byl během procesu instalace nastaven jako "SQLite data directory".
Případně vyhledejte $wgSQLiteDataDir v LocalSettings.php .
To může být složité, pokud nemáte zkušenosti s SQLite a spouštíte sqlite3 database_name
- protože to otevře úplně jinou databázi (vytvoří ji, pokud neexistuje), protože SQLite interpretuje argument ne jako systém -wide název databáze, ale místo toho jako název souboru, který obsahuje db.
Problémy
Chyby by měly být hlášeny Wikimedia's bug tracker. Nejprve zkontrolujte, zda byl váš problém již nahlášen – zkontrolujte závislosti tagu #sqlite a použijte vyhledávání. Pokud nemůžete najít svůj problém, vytvořte nové číslo. V každém případě prosím udělejte několik kroků, aby bylo snadné najít a sledovat vaši chybu. Zmiňte SQLite v jeho souhrnném poli a udělejte mu značku projektu SQLite.
Výkonnostní tipy
- Pokud je to možné, ujistěte se, že máte nainstalované rozšíření APCu php a $wgMainCacheType nastaveno na CACHE_ACCEL. Pokud není přítomna žádná mezipaměť, MediaWiki použije databázi jako backend mezipaměti, což může vést ke sporům o zápis. Na Sqlite to může výrazně zpomalit vaši wiki.
- Ujistěte se, že je vaše databáze SQLite v režimu WAL (Write-Ahead Logging – WAL). To může mít velký dopad na výkon, když si lidé prohlížejí a upravují váš web zároveň. Můžete to udělat pomocí nástroje příkazového řádku sqlite k otevření DB a spuštění příkazu
PRAGMA journal_mode=wal;
.
Související odkazy
- Nastavení konfigurace specifické pro SQLite:
- sqlite.php - MediaWiki 1.35 a starší
- SqliteMaintenance.php MediaWiki 1.36+