Zmienne konfiguracyjne MySQL to zestaw zmiennych systemowych serwera używanych do konfigurowania działania i zachowania serwera. W tym poście na blogu wyjaśnimy różnice w zarządzaniu zmiennymi konfiguracyjnymi między MySQL 5.7 a MySQL 8.0.
Wytłumaczymy trzy różne sposoby ustawiania zmiennych konfiguracyjnych w zależności od przypadku użycia. Zmienne konfiguracyjne, które można ustawić w czasie wykonywania, nazywane są zmiennymi dynamicznymi, a te, które wymagają ponownego uruchomienia serwera MySQL, aby zadziałały, nazywane są zmiennymi niedynamicznymi.
1:Ustaw konfigurację dla aktualnej żywotności działającego serwera MySQL
Większość konfiguracji MySQL ma charakter dynamiczny i można je ustawić w czasie wykonywania za pomocą polecenia SET. Oznacza to, że zmiany nie są trwałe i zostaną utracone po ponownym uruchomieniu serwera MySQL. Jest to przydatne do testowania zachowania zmian w konfiguracji przed wprowadzeniem ich na stałe.
W przypadku MySQL 5.7 i 8.0 można to zrobić za pomocą polecenia SET GLOBAL
Przykład:
mysql> set global max_connect_errors=10000;
2:Ustaw i utrzymuj zmianę konfiguracji podczas ponownych uruchomień MySQL
Gdy będziesz zadowolony z ustawień zmiany konfiguracji, zechcesz, aby były one trwałe.
W MySQL 5.7 trzeba to zrobić w 2 krokach:
- Ustaw konfigurację czasu wykonywania za pomocą polecenia SET GLOBAL
mysql> set global max_connect_errors=10000;
- Zapisz tę zmianę w pliku my.cnf, aktualizując istniejący wpis dla max_connect_errors lub dodając nowy.
Stało się to znacznie łatwiejsze w MySQL 8.0. Możesz to zrobić w jednym kroku za pomocą polecenia USTAW UTRZYMAJ
mysql> set persist max_connect_errors=10000;Jak ustawić zmienne konfiguracyjne — MySQL 5.7 vs MySQL 8.0 Kliknij, aby tweetować
Spowoduje to ustawienie wartości czasu wykonywania konfiguracji, a także utrwalenie zmiany poprzez zapisanie jej w pliku mysqld-auto.cnf, który istnieje w katalogu danych. To jest plik json i teraz zobaczysz w nim następujące wpisy.
{ "Version": 1, "mysql_server": { "max_connect_errors": { "Value": "10000", "Metadata": { "Timestamp": 1581135119397374, "User": "sgroot", "Host": "localhost" } } } }
Uwaga: Ustawienia konfiguracyjne obecne w mysqld-auto.cnf zawsze zastępują wartości obecne w pliku my.cnf. Tak więc wszelkie dalsze zmiany wprowadzone w pliku my.cnf dla zmiennej „max_connect_errors” nie odnoszą skutku. Może to być mylące dla osób przechodzących z MySQL 5.7, ponieważ mogą być używane do przechowywania wszystkich swoich ustawień w my.cnf
3:Ustawianie zmiennych konfiguracyjnych, które nie są dynamiczne
Niektórych zmiennych konfiguracyjnych nie można ustawić w czasie wykonywania i wymagałoby to ponownego uruchomienia MySQL.
W MySQL 5.7 należy wprowadzić wpis dla tych zmiennych w pliku my.cnf i zrestartować serwer MySQL, aby odniósł skutek. Przykładem takiej zmiennej jest innodb_log_file_size.
W MySQL 8.0 możesz uruchomić polecenie o nazwie SET PERSIST ONLY, które utworzy wpis w mysqld-auto.cnf.
Przykład:
mysql> set persist_only innodb_log_file_size=134217728;
Możliwe jest również zrestartowanie serwera MySQL z wiersza poleceń za pomocą polecenia RESTART. Spowoduje to, że zmieniona wartość innodb_log_file_size zacznie obowiązywać.
Uwaga: Polecenie RESTART działa tylko wtedy, gdy MySQL jest zarządzany za pomocą zewnętrznych programów, takich jak systemd lub mysqld_safe. Więcej informacji na ten temat znajdziesz tutaj.
W przeciwnym razie polecenie RESTART kończy się niepowodzeniem z komunikatem podobnym do poniższego.
mysql> RESTART; ERROR 3707 (HY000): Restart server failed (mysqld is not managed by supervisor process).
Zarządzanie konfiguracją MySQL na wielu serwerach
Zarządzanie konfiguracją MySQL w środowiskach źródłowych replik to żmudny proces, jeśli musisz zarządzać wieloma klastrami z różnymi wersjami MySQL. W tym miejscu korzystne byłoby rozwiązanie zarządzane, takie jak ScaleGrid.
Konsoli ScaleGrid UI można używać do przeglądania bieżących ustawień różnych zmiennych konfiguracyjnych lub ustawiania ich wartości.
ScaleGrid może rozpoznać, kiedy ustawienie konfiguracyjne jest niedynamiczne i ostrzeże użytkownika, jeśli wymagane jest ponowne uruchomienie MySQL, aby wartość zaczęła obowiązywać. ScaleGrid wykona również kopię zapasową bieżącego pliku my.cnf przed zastosowaniem jakichkolwiek nowych zmian w konfiguracji.
W środowiskach źródłowych replik ScaleGrid zmienia ustawienia konfiguracyjne w sposób ciągły, jeden serwer na raz. Jeśli konieczne jest ustawienie zmiennej niedynamicznej, ScaleGrid wykonuje przełączanie awaryjne bieżącego mastera, aby zminimalizować przestoje związane z koniecznością ponownego uruchomienia MySQL.
Odwiedź poniższy link, aby dowiedzieć się więcej o różnych funkcjach rozwiązania hostingowego ScaleGrid MySQL.