MySQL je databázový systém. 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).
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).
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…
1), restartovat mysql a potom log soubory smazat.
apt-get install mysqltuner mysqltuner