Konfigurace
Když budete mít štěstí, vystačíte si s defaultním nastavením DBMS. Pro případ, že byste štěstí neměli, zmíním tu alespoň pár věcí, se kterými můžete začít při řešení svých problémů. Kompletní konfigurační příručku v jedné kapitole ale nečekejte :-). Tu najdete v online tutoriálu v kapitole III. Server Administration.
PostgreSQL
V kaptiole Instalace PostgreSQL jsem probral jak spustit či vypnout server, případně zjistit jeho status. Dále jak vytvořit uživatele a databázi.
V kapitole Začínáme s PostgreSQL jsem se zmínil o programu pg_dump
, který se používá
k zálohování a obnově zálohy.
V kapitole o přistupových právech je část věnovaná konfiguračnímu souboru pg_hba.conf, který řídí možnosti připojení k DBMS.
V kapitole Datum a čas jsem probral konfiguraci časových zón a nastavení formátu času.
V kapitole o Vytváření uživatelských funkcí jsem popsal, jak přidat do Postgresu jazyk PL/Python.
Příkaz pro zjištění umístění konfiguračního souboru je SHOW config_file
. Musíte mít ale příslušná práva,
aby se vám jméno souboru ukázalo:
Všechno co v konfiguračním souboru začíná znakem #
je komentář.
V souboru je spoustu příkladů toho, co můžete nastavit. Naprostou většinu věcí nebudete muset měnit :-).
Co která volba znamená se pak dočtete v dokumentaci.
Pokud byste chtěli vědět, kde se data fyzicky ukládají, tak to vám řekne příkaz SHOW data_directory;
.
Log level
Log level, přesněji proměnná client_min_messages
určuje, jaké všechny zprávy se vám při spouštění SQL příkazů budou zobrazovat.
Například od verze Postgresu 9.3 se nezobrazují NOTICE o vytvoření implicitních indexech a sequencích (např. při použití typu serial),
pokud nenastavíte hodnotu client_min_messages
alespoň na DEBUG1.
Možnosti nastavení jsou: DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, LOG, FATAL, a PANIC.
Příkaz SET client_min_messages TO DEBUG1;
můžete zapsat do souboru ~/.psqlrc, abyste jej
nemuseli zapisovat při každém spuštění klienta psql.
Konfigurace psql
Klient psql
se obvykle snaží při startu spustit soubory /etc/psqlrc
a
~/.psqlrc
. Uživatelé Linuxu určitě vědí, kde tyto soubory najít, uživatelům Windows úplně neporadím,
ale soubor psqlrc
hledá klient psql v %APPDATA%\postgresql\psqlrc.conf
.
Pokud vás, stejně jako mě, obtěžuje v psql
stránkování při výpisu,
vložte si do ~/.psqlrc
tuto řádku:
\pset pager off
V Linuxu se označuje vlnovkou ~
domovský adresář. Soubor ~/.psqlrc
má pro uživatele
petr reálnou cestu /home/petr/.psqlrc
.
V Linuxu také platí, že všechny soubory začínající tečkou jsou skryté (defaultně je nevypíše příkaz ls
).
Proto začínají konfigurační soubory v Linux obvykle tečkou. We Windows jsou bez tečky.
Historie SQL příkazů se ukládá do souboru ~/.psql_history
(ve Windows %APPDATA%\postgresql\psql_history
).
Upgrade
Po upgrade Linuxu se někdy může stát, že se vám postgres odmítne nastartovat (a příkaz systemctl status postgresql
ani neukáže žádnou chybu).
To může být způsobeno nekompatibilitou mezi novou verzí postgresu a binárním formátem, ve kterém je uložená databáze (z předchozí verze).
Jak tomu předejít
Před upgradem dumpněte všechny své databáze pomocí programu pg_dump
a po upgradu starý adresář s postgesql daty
smažte, znovu inicializujte a databázi ze zálohy znovu nahrajte.
Smazání staré databáze a inicializace nové může vypadat nějak takto:
bash$ mkdir /var/lib/pgsql
bash$ chown -R postgres: /var/lib/pgsql/
bash$ su postgres
bash$ initdb /var/lib/pgsql/
Teď už by měl postgres nastartovat (ie. příkazem systemctl start postgresql
).
Budou vytvořené pouze systémové databáze, takže dalším krokem je nahrát dumpnuté zálohy.
Upgrade pomocí pg_upgrade
Pokud máte nainstalovný starý i nový postgres v jednom okamžiku, můžete upgradovat databázi
pomocí programu pg_upgrade
. Toto je pravděpodobnější ve Windows, takže ukáži
příklad příkazu pro ně:
--old-datadir "C:/Program Files/PostgreSQL/8.4/data"
--new-datadir "C:/Program Files/PostgreSQL/9.0/data"
--old-bindir "C:/Program Files/PostgreSQL/8.4/bin"
--new-bindir "C:/Program Files/PostgreSQL/9.0/bin"
V Linuxu najdete program pg_upgrade
v balíčku postgresql96-contrib
(nebo nějak podobně pojmenovaném). V příkazu samozřejmě budete muset změnit cesty k
adresáři s novými a starými daty a binárkami nového a starého postgresu.
MySQL
Spuštění / vypnutí / restartování serveru MySQL se dělá stejně jako Postgresu. Jen místo Postgres napíšete mysql :).
V kapitole o přístupových právech jsem se zmínil o tom, kde najít informace o
zjišťování nastavených přístupových právech a o volbě bind-address
.
V kapitole o datu a času se dočtete, jak v MySQL nainstalovat časové zóny.
Nevím jak v MySQL zjistit, z jakého konfiguračního souboru načetl sever své volby, protože konfigurační soubor můžete serveru nastavit při spuštění na příkazové řádce. Můžete ale zjistit defaultní umístění souborů, ze kterých mysqld čte konfiguraci:
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
Další informace můžete zjistit pomocí skriptu my_print_defaults
.
--default-character-set=utf8mb4
--user=petr
bash$ sudo my_print_defaults mysqld
root's password:
--port=3306
--socket=/var/run/mysql/mysql.sock
--datadir=/var/lib/mysql
--skip-external-locking
--key_buffer_size=32M
--max_allowed_packet=16M
--table_open_cache=128
--sort_buffer_size=512K
--net_buffer_length=16K
--read_buffer_size=256K
--read_rnd_buffer_size=512K
--myisam_sort_buffer_size=8M
--log-bin=mysql-bin
--binlog_format=mixed
--server-id=1
Všiměte si, že defaultní hodnoty pro server (mysqld) zjišťuji jako root.
Kde jsou data fyzicky uložená zjistíte následujícím příkazem:
Soubor ~/.my.cnf
Soubor ~/.my.cnf
se používá pro nastavení konfigurace hned několika programů. Můžete tam nastavit
konfiguraci pro server (mysqld). Server čte soubor ~/.my.cnf
toho uživatele, který serve spouští (přesněji řečeno,
pod kterým uživatelem je server spouštěn).
V tomto souboru si spíš budete nastavovat konfiguraci pro klienta mysql
a pro program pro dumpování databáze myqsldump
.
Každý program má v souboru svou sekci, která začíná názvem programu uzavřeným v hranatých závorkách:
V příkladu se nastavuje pro klienta defaultní kódování na UTF-8, uživatel na petr a ještě volba "i-am-a-dummy", která vám zabrání například ve spuštění příkazu DELETE bez podmínky WHERE (a v dalších „nebezpečných“ příkazech).
Pro program mysqldump je nastaveno jen defaultní uživatelské jméno na petr. (Vzhledem k tomu, že defaultní uživatelské jméno je jméno uživatele operačního systému, asi to nastavovat nebudete muset).
Do tohoto souboru můžete uložit i heslo, ale pak si ho bude moci přečíst každý, kdo získá přístup k vašemu počítači, takže se to nedoporučuje.
O programu mysqldump
jsem psal už v kaptiole Začínáme s PostgreSQL.
Historie příkazů se ukládá do ~/.mysql_history
.
SQLite
Program SQLite čte konfiguraci ze souboru ~/.sqliterc
. Můžete do něj zapsat všechny metapříkazy,
které v sqlite3
zobrazíte metapříkazem .help
.
.mode column
PRAGMA foreign_keys = ON;
Historie SQL příkazů se ukládá do souboru ~/.sqlite_history
.
Zálohu (dumpování) databáze můžete provést metapříkazem .dump
.
Oracle
V kaptiole Začínáme s PostgreSQL se dočtete o dumpování a nahrávání dat.
V kaptiole Datum a čas se dozvíte něco o tom, jak nastavit defaultní formát času.
Pokud potřebujete rekonfigurovat Oracle XE, můžete to zkusit takto:
- Smažte soubor
/etc/sysconfig/oracle-xe
nebo v/etc/default/oracle-xe
změňteCONFIGURE_RUN=true
naCONFIGURE_RUN=false
- Spusťte (jako administrátor):
/etc/init.d/oracle-xe configure
Možná se tím připravíte o všechny data v databázi, takže si je raději nejdříve zálohujte.
Každopádně vám přeji hodně štěstí :-).