❤️ Новая функция MySQL 8: сохранение глобальных параметров!

задняя часть база данных MySQL
❤️ Новая функция MySQL 8: сохранение глобальных параметров!

Эта статья участвовала в "Проект «Звезда раскопок»”, чтобы выиграть творческий подарочный пакет и бросить вызов творческим поощрительным деньгам.

предисловие

С момента выхода первого издания в 2018 г.MySQL 8.0.11Начиная с официальной версии, версия MySQL была обновлена ​​и итерирована до8.0.26, по сравнению со стабильной версией 5.7 улучшение производительности 8.0 не вызывает сомнений!

Поскольку все больше и больше предприятий начинают использовать версию MySQL 8.0, это вызов и возможность для администраторов баз данных! 💪🏻

В этой статье в основном обсуждаются новые возможности версии MySQL 8.0:Постоянство глобального параметра

Постоянство глобального параметра

Версия MySQL 8.0 поддерживает онлайн-модификацию глобальных параметров и постоянство, добавляяPERSISTключевое слово, вы можете сохранить измененные параметры в новом файле конфигурации (mysqld-auto.cnf), а при перезапуске MySQL вы сможете получить последние параметры конфигурации из этого файла конфигурации!

Соответствующий рабочий журнал [WL#8688]:Dev.MySQL.com/work log/ Он сказал...

Чтобы включить эту функцию, используйте специальный синтаксисSET PERSISTустановить любую динамически изменяемую глобальную переменную!

  • SET PERSIST

Операторы могут изменять значения переменных в памяти и записывать измененные значения в mysqld-auto.cnf в каталоге данных.

  • SET PERSIST_ONLY

Оператор не изменяет значение переменной в памяти, он просто записывает измененное значение в mysqld-auto.cnf в каталоге данных.

кmax_connectionsПараметры например:

mysql> select * from performance_schema.persisted_variables;
Empty set (0.00 sec)

mysql> show variables like '%max_connections%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| max_connections        | 151   |
| mysqlx_max_connections | 100   |
+------------------------+-------+
2 rows in set (0.00 sec)

mysql> set persist max_connections=300;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from performance_schema.persisted_variables;
+-----------------+----------------+
| VARIABLE_NAME   | VARIABLE_VALUE |
+-----------------+----------------+
| max_connections | 300            |
+-----------------+----------------+
1 row in set (0.00 sec)

Система сгенерирует файл, содержащийjsonОтформатированный файл mysqld-auto.cnf отформатирован, как показано ниже: Когда существуют и my.cnf, и mysqld-auto.cnf, последний имеет более высокий приоритет.

{
    "Version": 1, 
    "mysql_server": {
        "max_connections": {
            "Value": "300", 
            "Metadata": {
                "Timestamp": 1632575065787609, 
                "User": "root", 
                "Host": "localhost"
            }
        }
    }
}

📢 Примечание:даже если ты пройдёшьSET PERSISTИзменение значения конфигурации ничего не меняет и также записывается в файл mysqld-auto.cnf. Но вы можете сделать это, установивDEFAULTvalue способ восстановить исходное значение по умолчанию!

Если вы хотите восстановитьmax_connectionsПараметры являются начальными значениями по умолчанию, просто выполните:

mysql> set persist max_connections=DEFAULT;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from performance_schema.persisted_variables;
+-----------------+----------------+
| VARIABLE_NAME   | VARIABLE_VALUE |
+-----------------+----------------+
| max_connections | 151            |
+-----------------+----------------+
1 row in set (0.00 sec)

Если вы хотите удалить все глобальные постоянные параметры, просто выполните:

mysql> RESET PERSIST;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from performance_schema.persisted_variables;
Empty set (0.00 sec)

Конечно, вы можете перезапустить MySQL после удаления файла mysqld-auto.cnf!

напиши в конце

Основной код: Commit f2bc0f89b7f94cc8fe963d08157413a01d14d994

Основная функция входа (8.0.0):

接口函数大多定义在sql/persisted_variable.cc文件中:
启动时载入mysqld-auto.cnf的内容: Persisted_variables_cache::load_persist_file(); 通过json解析合法性,并存入内存
将文件中读取的配置进行设置: Persisted_variables_cache::set_persist_options
 
运行SET PERSIST命令时,调用Persisted_variables_cache::set_variable 更新内存中存储的值
写入mysqld-auto.cnf文件中: Persisted_variables_cache::flush_to_file

Справочная документация:


Этот обмен заканчивается здесь~

Если вы считаете, что статья полезна для вас,Нравится, Избранное, Следите, Комментируйте, Поддержка четырех ссылок одним щелчком мыши, ваша поддержка является самой большой движущей силой для моего творчества.

❤️ Для технических обменов, пожалуйста, подпишитесь на официальный аккаунт:Люцифер думает дважды❤️