Skip to content

Как работает конфигурация MySQL?

Пересказ статьи Lukas Vileikis. How Does MySQL Configuration Work?


Если вы хоть немного времени работали с MySQL, то вероятно слышали об одном из её хорошо известных файлов: my.cnf. my.cnf - это конфигурационный файл, специфичный для MySQL и всех ее вариантов, и это то место, куда нужно обращаться всякий раз, когда возникают ошибки конфигурации MySQL. Конечно, мы можем установить пару настроек при запуске MySQL с помощью опций "--", но это не так много, более эффективно установить параметры конфигурации в самом файле.

Почему MySQL необходим конфигурационный файл?


Прежде всего мы рассмотрим, почему MySQL вообще нуждается в конфигурационном файле. В конце концов, MySQL мощный зверь сам по себе, не так ли? Ну, не совсем. Вы видите, что в настоящее время MySQL выполняется в широком диапазоне инфраструктуры и серверов баз данных - некоторые серверы могут иметь диски объемом 20Тб и 256Гб RAM, другие - небольшие виртуальные частные серверы или типа того - могут иметь только диски объемом 2Гб и 256Мб памяти. Разница огромна, и главное назначение файлов конфигурации в этом сценарии - предоставить "конечную точку" администраторам и разработчикам MySQL для конфигурирования его в соответствии с их требованиями.

Как работает конфигурация MySQL?


Вот как выглядит исходный конфигурационный файл MySQL - my.ini - на Windows (заметим, что такой файл на Linux называется my.cnf, и он не содержит комментариев, так что вы увидите там меньше вариантов.)



Не слишком расстраивайтесь - как говорилось, файл my.ini содержит массу комментариев, поскольку он выполняется в среде Windows. Файлы my.chf, ориентированные на Linux, не имеют их - там у вас есть только пара настроек, относящихся к одному из механизмов хранения MySQL - InnoDB - и это все; вам придется определять все остальное самостоятельно.

Однако вернемся к конфигурационному файлу. Вы можете увидеть, что конфигурация имеет много уникальных для него настроек - большинство файлов конфигурации будут иметь следующие настройки, и хотя некоторые из этих настроек (детализация журналов ошибок и т. д.) могут быть не видны в my.cnf, они всегда доступны и могут быть добавлены в любое время.

  1. Настройки, относящиеся к клиенту MySQL - можно видеть по умолчанию порт и сокет, плагин авторизации и, конечно, изменить их при желании, и.т.п.

  2. Далее имеются определения каталогов, которые необходимы MySQL для корректного функционирования. Настройки, определяющие каталоги, задают местонахождение журналов ошибок и прочих журналов, где размещается каталог данных MySQL и т.д.

  3. Затем следуют настройки, относящиеся к различным используемым движкам хранилища. Здесь MySQL определяет настройки флагманских движков хранилища - InnoDB.

  4. Мы сможем также установить детализацию журналов ошибок. Другими словами, определить, какие ошибки будут отображаться и т.д.

  5. Мы можем установить язык по умолчанию, который используется MySQL, наблюдая или изменяя параметр "lc-messages".

  6. Чтобы избежать предупреждающих сообщений, мы можем установить каталог secure_file_priv. Этот каталог используется, когда выполняются запросы LOAD DATA INFILE - мы сможем выполнять только запросы, которые запрашивают файлы из этого каталога.

  7. Мы сможем заставить MySQL избегать определенных механизмов хранения. Например, используя параметр "skip-federated", мы можем сделать так, чтобы MySQL пропускал движок хранилища Federated по умолчанию.

  8. Мы сможем настроить репликацию и изменить поведение скриптов по умолчанию MySQL типа mysqldump и т.п.

  9. Последний, но не менее значимый. Мы также сможем немного поиграть с режимами SQL; это означает, что мы можем заставить наш сервер MySQL работать по-разному в разных сценариях. Некоторые режимы базы данных могут сделать MySQL совместимым со "стандартными" операциями SQL (например, режим ANSI изменит поведение MySQL так, что он сможет соответствовать стандартным операциям SQL), а другие режимы используются для того, чтобы обойти или игнорировать определенные ошибки, и т.п.: установка режима "ALLOW_INVALID_DATES" не будет выполнять полную проверку дат, режим ANSI_QUOTES будет трактовать символ (") как символ (`), ERROR_FOR_DIVISION_BY_ZERO будет вызывать ошибку при попытке деления на нуль и т.д.


Конфигурационные опции MySQL также могут быть установлены во время выполнения с использованием параметров "--". Например, если мы хотим установить определенный параметр без перезапуска MySQL, не указывая его в файле my.cnf, мы могли бы выполнить MySQL с указанием опций после mysqld:
mysqld --ansi - запустит MySQL в режиме ANSI,
mysqld --innodb-write-io-threads=# - задаст количество потоков ввода/вывода, которое InnoDB сможет использовать.
Опции типа --unique-checks=0|1 разрешат или запретят проверку уникальности для вторичных индексов в InnoDB (один из флагманских движков хранилища). И, наконец, mysqld --help отобразит все доступные нам опции. Имеется много других опций, и все они приведены в документации MySQL, в которой также отслеживаются происходящие изменения.

Заключение


Короче говоря, конфигурация MySQL позволяет изменить способ взаимодействия системы управления базами данных с приложениями, определить, как она работает в целом, и даже позволяет нам изменить ее поведение. Файл конфигурации MySQL действительно является мощным инструментом, который не следует недооценивать ни при каких обстоятельствах. Способ, каким сконфигурированы ваши экземпляры MySQL, могут оказаться жизненно важными для ваших баз данных, как нынешних, так и будущих.

Категории: MySQL

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Нет комментариев.

Автор не разрешил комментировать эту запись

Добавить комментарий

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Добавленные комментарии должны будут пройти модерацию прежде, чем будут показаны.