====== MySQL/MariaDB ======
MySQL je databázový systém. [[mariadb|MariaDB]] je fork MySQL, v časech MySQL 5.1 až 5.5 byla jeho binární kopií (tzn. vnitřnosti byly jiné, ale jinak se zdálo, že je to MySQL ve všech ohledech).
===== Verze =====
==== MySQL 5.5 ====
==== MySQL 5.6 ====
=== Nové vlastnosti ===
* **Geometrické / Spatial funkce** - Do MySQL 5.5 to fungovalo pitomě, funkce Contains udělala polygonu udělalo obdelník - nepřesné a defacto nepoužitelné. MySQL 5.6 to implementuje už správně. V MariaDB to fungovalo správě už od verze 5.3.3
* **Mikrosekundy** - umí pracovat i s jemnějším rozlišením času než na sekundy, pokud se to takto v typu specifikuje.
=== Problémy při aktualizaci ===
== Nevytvávření funkcí z dumpů ==
je to problém lešího zabezpečení v novější verzi MySQL. Funkce musí být uvedené, že jsou DETERMINISTIC (nebo nějakou obdobnou deklaraci) jinak MySQL vyhodí chybu a funkci nevytvoří. Vyřešit se to dá následujícím příkazem nebo předefinováním funkcí.
SET GLOBAL log_bin_trust_function_creators = 1; # POZOR! neideální řešení.
Lepší bude možná zvážit, **vypnout binární logování úplně** (viz další kapitola).
== Binární log ==
Po aktualizaci db je v základní konfiguraci změna v tom, že zapne **binární log**. Jak název napovídá, mysql vytváří soubory obsahující (v binární podobě) všechny prováděné změny. Soubory jsou předvídatelně umístěné ''/var/log/mysql/mariadb-bin.*''. Jejich obsah lze prohlédnout příkazem ''mysqlbinlog''. Binární log má nastavenou expirační dobu a umí se rychle rozrůst.
Binární log se užívá k **zálohování** (občas si provedu mysqldump a když vím v jakém stavu se dump provedl, můžu nejnovější stav "dopočítat" z binárního logu) a/nebo k **replikaci**, kdy slave si z masteru tahá právě informace z binárního logu a u sebe je aplikuje (takže klidně může na nějakou dobu vypadnout spojení a pak se vše umí dát do pořádku).
Z výše uvedených je pak namístě, aby MySQL se funkce (jejichž volání je v binárním logu) nechovaly nedeterministicky. Proto při zapnutém binárním logu si databáze umí stěžovat, že procedury/funkce nejsou deterministické.
Binární logování se zapíná v my.cnf. Bohužel ji nelze vypnout v debianím duchu, je nutné editovat my.cnf a zakomentovat řádky ''log_bin...'' a ''expire_logs_days...''((Zdroj: http://dba.stackexchange.com/questions/72770/disable-mysql-binary-logging-with-log-bin-variable)), restartovat mysql a potom log soubory smazat.
===== Nástroje =====
==== MySQL Tuner ====
apt-get install mysqltuner
mysqltuner