Konfigurační proměnné MySQL jsou sada serverových systémových proměnných používaných ke konfiguraci provozu a chování serveru. V tomto příspěvku na blogu vysvětlíme rozdíly ve správě konfiguračních proměnných mezi MySQL 5.7 a MySQL 8.0.
Vysvětlíme tři různé způsoby nastavení konfiguračních proměnných na základě vašeho případu použití. Konfigurační proměnné, které lze nastavit za běhu, se nazývají dynamické proměnné a ty, které vyžadují restart serveru MySQL, aby se projevily, se nazývají nedynamické proměnné.
1:Nastavte konfiguraci pro aktuální životnost běžícího serveru MySQL
Většina konfigurací MySQL je dynamická a lze je nastavit za běhu pomocí příkazu SET. To znamená, že změny nejsou trvalé a budou ztraceny, pokud se MySQL server restartuje. To je užitečné k otestování chování vaší změny konfigurace, než se změní na trvalou.
Pro MySQL 5.7 i 8.0 to můžete provést pomocí příkazu SET GLOBAL
Příklad:
mysql> set global max_connect_errors=10000;
2:Nastavení a trvání změny konfigurace při restartování MySQL
Jakmile budete spokojeni s nastavením změny konfigurace, měli byste je nastavit natrvalo.
V MySQL 5.7 byste to měli udělat ve 2 krocích:
- Nastavte konfiguraci doby běhu pomocí příkazu SET GLOBAL
mysql> set global max_connect_errors=10000;
- Uložte tuto změnu do souboru my.cnf aktualizací stávajícího záznamu pro max_connect_errors nebo přidáním nového.
To je v MySQL 8.0 mnohem jednodušší. To lze provést v jediném kroku pomocí příkazu SET PERSIST
mysql> set persist max_connect_errors=10000;Jak nastavit konfigurační proměnné – MySQL 5.7 vs MySQL 8.0 Click To Tweet
Tím se nastaví hodnota za běhu konfigurace a změna se také zachová uložením do souboru mysqld-auto.cnf, který existuje v datovém adresáři. Toto je soubor json a nyní v souboru uvidíte následující položky.
{ "Version": 1, "mysql_server": { "max_connect_errors": { "Value": "10000", "Metadata": { "Timestamp": 1581135119397374, "User": "sgroot", "Host": "localhost" } } } }
Poznámka: Nastavení konfigurace přítomná v mysqld-auto.cnf vždy přepíše hodnoty přítomné v souboru my.cnf. Takže žádné další změny, které provedete v souboru my.cnf pro proměnnou „max_connect_errors“, se neprojeví. To může být matoucí pro ty, kteří přecházejí z MySQL 5.7, protože mohou být zvyklí ukládat všechna svá nastavení do my.cnf
3:Nastavení konfiguračních proměnných, které nejsou dynamické
Některé z konfiguračních proměnných nelze nastavit za běhu a jejich účinek by vyžadoval restart MySQL.
V MySQL 5.7 byste udělali záznam pro tyto proměnné v souboru my.cnf a restartovali MySQL server, aby se projevil. Příkladem takové proměnné je innodb_log_file_size.
V MySQL 8.0 můžete spustit příkaz s názvem SET PERSIST ONLY, který provede záznam v mysqld-auto.cnf.
Příklad:
mysql> set persist_only innodb_log_file_size=134217728;
Je také možné restartovat MySQL server z příkazového řádku pomocí příkazu RESTART. To způsobí, že změněná hodnota innodb_log_file_size se projeví.
Poznámka: Příkaz RESTART funguje pouze v případě, že je MySQL spravováno pomocí externích programů, jako je systemd nebo mysqld_safe. Více podrobností naleznete zde.
V opačném případě se příkaz RESTART nezdaří a zobrazí se zpráva podobná následující.
mysql> RESTART; ERROR 3707 (HY000): Restart server failed (mysqld is not managed by supervisor process).
Správa konfigurace MySQL na více serverech
Správa konfigurace MySQL v prostředích zdrojových replik je zdlouhavý proces, pokud musíte spravovat více clusterů s různými verzemi MySQL. Zde by bylo přínosné spravované řešení, jako je ScaleGrid.
Konzolu uživatelského rozhraní ScaleGrid lze použít ke kontrole aktuálního nastavení různých konfiguračních proměnných nebo k nastavení jejich hodnot.
ScaleGrid dokáže rozpoznat, kdy je nastavení konfigurace nedynamické, a upozorní uživatele, pokud je vyžadován restart MySQL, aby se hodnota projevila. ScaleGrid také vytvoří zálohu aktuálního souboru my.cnf před použitím jakýchkoli nových změn konfigurace.
V prostředích zdrojových replik ScaleGrid mění nastavení konfigurace postupným způsobem jeden server po druhém. Pokud je třeba nastavit nedynamickou proměnnou, ScaleGrid provede převzetí služeb při selhání aktuálního hlavního serveru, aby se minimalizovaly prostoje, které by mohly nastat v případě, že je třeba MySQL jinak restartovat.
Navštivte níže uvedený odkaz a zjistěte více o různých funkcích hostovacího řešení ScaleGrid MySQL.