Mysql
 sql >> база данни >  >> RDS >> Mysql

Задаване на конфигурационни променливи на MySQL – MySQL 5.7 срещу MySQL 8.0

Конфигурационните променливи на MySQL са набор от системни променливи на сървъра, използвани за конфигуриране на работата и поведението на сървъра. В тази публикация в блога ще обясним разликите в управлението на конфигурационните променливи между MySQL 5.7 и MySQL 8.0.

Ще обясним три различни начина за настройка на конфигурационните променливи въз основа на вашия случай на употреба. Конфигурационните променливи, които могат да бъдат зададени по време на изпълнение, се наричат ​​динамични променливи, а тези, които се нуждаят от рестартиране на MySQL сървъра, за да влязат в сила, се наричат ​​нединамични променливи.

1:Задайте конфигурацията за текущата продължителност на живота на работещ MySQL сървър

Повечето конфигурации на MySQL са динамични по природа и могат да бъдат зададени по време на изпълнение с помощта на командата SET. Това означава, че промените не са постоянни и ще бъдат загубени, ако MySQL сървърът се рестартира. Това е полезно за тестване на поведението на промяната на конфигурацията ви, преди да я направите постоянна.

И за MySQL 5.7, и за 8.0 можете да постигнете това, като използвате командата SET GLOBAL

Пример:

mysql> set global max_connect_errors=10000;

2:Задаване и запазване на промяната на конфигурацията при рестартиране на MySQL

След като сте доволни от настройките за промяна на конфигурацията, бихте искали да ги направите постоянни.

В MySQL 5.7 ще трябва да направите това в 2 стъпки:

  1. Задайте настройката за конфигурация на времето за изпълнение с помощта на командата SET GLOBAL
mysql> set global max_connect_errors=10000;
  1. Запазете тази промяна във вашия my.cnf файл, като актуализирате съществуващия запис за max_connect_errors или като добавите нов.

Това стана много по-лесно в MySQL 8.0. Можете да направите това в една стъпка, като използвате командата SET PERSIST

mysql> set persist max_connect_errors=10000;
Как да зададете конфигурационни променливи - MySQL 5.7 срещу MySQL 8.0 Щракнете, за да туитирате

Това ще зададе стойността по време на изпълнение за конфигурацията и също така ще запази промяната, като я запази във файла mysqld-auto.cnf, който съществува в директорията с данни. Това е json файл и сега ще видите следните записи във файла.

{

"Version": 1,

"mysql_server": {

"max_connect_errors": {

"Value": "10000",

"Metadata": {

"Timestamp": 1581135119397374,

"User": "sgroot",

"Host": "localhost"

}

}

}

}

Забележка: Настройките за конфигурация, налични в mysqld-auto.cnf, винаги отменят стойностите, присъстващи във файла my.cnf. Така че всички допълнителни промени, които правите във файла my.cnf за променливата “max_connect_errors” няма да влязат в сила. Това може да е объркващо за тези, които преминават от MySQL 5.7, тъй като може да се използват за съхраняване на всичките си настройки в my.cnf

3:Настройка на конфигурационни променливи, които не са динамични

Някои от конфигурационните променливи не могат да бъдат зададени по време на изпълнение и ще изисква рестартиране на MySQL, за да влезе в сила.

В MySQL 5.7 трябва да направите запис за тези променливи във вашия my.cnf файл и да рестартирате MySQL сървъра, за да влезе в сила. Пример за такава променлива е innodb_log_file_size.

В MySQL 8.0 можете да изпълните команда, наречена SET PERSIST ONLY, която ще направи запис в mysqld-auto.cnf.

Пример:

mysql> set persist_only innodb_log_file_size=134217728;

Възможно е също да рестартирате MySQL сървъра от командния ред с помощта на командата RESTART. Това ще доведе до влизане в сила на променената стойност на innodb_log_file_size.

Забележка: Командата RESTART работи само ако MySQL се управлява с помощта на външни програми като systemd или mysqld_safe. Моля, вижте повече подробности за това тук.

В противен случай командата RESTART се проваля със съобщение като следното.

mysql> RESTART;

ERROR 3707 (HY000): Restart server failed (mysqld is not managed by supervisor process).

Управление на конфигурацията на MySQL в множество сървъри

Управлението на конфигурацията на MySQL в среди на изходни реплики е досаден процес, ако трябва да управлявате множество клъстери, които работят с различни версии на MySQL. Това е мястото, където управлявано решение като ScaleGrid би било от полза.

Конзолата на потребителския интерфейс ScaleGrid може да се използва за преглед на текущите настройки на различни конфигурационни променливи или за задаване на техните стойности.

ScaleGrid може да разпознае кога дадена конфигурационна настройка е нединамична и ще предупреди потребителя, ако е необходимо рестартиране на MySQL, за да влезе стойността в сила. ScaleGrid също така ще направи резервно копие на текущия файл my.cnf, преди да приложи нови промени в конфигурацията.

В среди на изходни реплики, ScaleGrid променя конфигурационните настройки по непрекъснат начин един сървър в даден момент. Ако трябва да се зададе нединамична променлива, ScaleGrid извършва отказ на текущия главен код, за да сведе до минимум времето на престой, ако MySQL трябва да бъде рестартиран по друг начин.

Посетете връзката по-долу, за да разберете повече за различните функции на ScaleGrid MySQL хостинг решението.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. WEEKDAY() Примери – MySQL

  2. по-добър подход от съхраняването на mysql парола в обикновен текст в конфигурационния файл?

  3. Достъпът до MYSQL във външния файл е отказан - но моят потребител има ЦЯЛ достъп.. и папката е CHMOD 777

  4. Как да избягате от единични цитати, специални символи в MySQL

  5. Как да изпълня UPSERT, така че да мога да използвам както нови, така и стари стойности в частта за актуализиране