Глава
№16.
Системные
переменные MySQL и mSQL
Для настройки
работы MySQL и mSQL могут использоваться некоторые переменные. Многие из них
являются переменными окружения, которые наследуются от оболочки пользователя,
в то время как другие устанавливаются с помощью командной строки и файлов конфигурации.
Переменные
окружения MySQL
Следующие
переменные являются специальными переменными MySQL. Они могут быть определены
в текущей оболочке или задаваться как часть сценария оболочки. Чтобы установить
переменную для демона MySQL (mysqld), определите переменную в используемом
для запуска демона сценарии safe_mysqld или определите значения переменных
в файле конфигурации MySQL (мы расскажем о нем дальше в этой главе).
MY_BASEDIR
MY_BASEDIR_VERSION
Корневой
каталог, содержащий подкаталоги 'bin', 'var' и 'libexec' программы
и данные MySQL. Если этой переменной не существует, используется значение по
умолчанию (обычно записанное в MySQL как /usr/local). Эти настройки влияют
только на программу mysqld.
MYSQL_DEBUG
Уровень отладки
программы (отладочный уровень). Эта переменная может быть использована с любой
программой MySQL. Отладочная библиотека MySQL имеет множество настроек. Список
всех доступных опций находится по адресу: http://www.turbolift.com/
туsql/appendixC.html. Самый обычный набор параметров - d: t: о, / tmp/debugfile.
MYSQL_HOST
Имя хоста,
используемое для связи с удаленным сервером MySQL. Опция может быть использована
с любой из клиентских программ MySQL (mysql, mysqlshow, mysqladmin и
т. д.).
MYSQL_PWD
Пароль, используемый
для связи с сервером MySQL. Переменная может быть использована с любой из клиентских
программ MySQL.
Будьте
внимательны при вводе ваших паролей. Обычно при использовании переменных окружения
их значение устанавливают в скриптах. Разумеется, использование переменной MYSQL_PWD
в скрипте сделает ваш пароль доступным для всех, кто сумеет запустить этот скрипт.
Даже установка этой переменной вручную через командную строку делает ее доступной
суперпользователю и всем тем, кто может исследовать содержимое системной памяти.
MYSQL_TCP_PORT
При использовании
вкупе с клиентской программой это будет TCP-порт на удаленной машине, предназначенной
для связи с сервером MySQL. Когда используется с программой mysqld, это
- номер TCP-порта, прослушивающего входящие соединения.
MYSQL_UNIX_PORT
При использовании
с клиентской программой - это файл сокета Unix, используемый для связи с сервером
MySQL. При использовании с программой mysqld - файл сокета Unix для локальных
подключений.
Кроме того,
программы MySQL используют следующие переменные окружения, которые обычно устанавливаются
как часть среды Unix.
EDITOR VISUAL
Путь к заданному
по умолчанию редактору. Программа mysql будет использовать его для редактирования
SQL-операторов, если ей встретится команда edit или \е.
HOME
Домашний
каталог текущего пользователя. LOGIN LOGNAME USER
Имя текущего пользователя.
PATH
Список каталогов, используемых при поиске программ.
POSIXLY_CORRECT
Если эта
переменная определена, не происходит никакой обработки опций программной строки.
В противном случае параметры программной стоки переупорядочиваются таким образом,
чтобы сделать возможным использование расширенных опций. Эта переменная может
использоваться с любой программой MySQL.
ТМР TMPDIR
Каталог,
в котором сохраняются временные файлы. Если эта переменная не определена, используется
'/tmp '.
TZ
Часовой пояс локальной машины.
UMASK
Маска, используемая
при создании новых файлов.
Переменные
командной строки
Данные параметры
определяются через опции командной строки -0 или -set-variable, которые доступны
в большинстве программ MySQL.
back_log
Число подключений
TCP, которые могут быть поставлены в очередь за один раз. Значение по умолчанию
- 5. Эта опция доступна только для mysqld.
connect
_timeout
Время (в
секундах), в течение которого сервер mysqld ожидает пакет подключения,
прежде чем ответить сообщением об ошибке соединения (bad handshake).
decode-bits
Число бит,
используемое для генерирования некоторых внутренних таблиц. Число должно находиться
в диапазоне от 4 до 9 (между 4 и 6 в 16-разрядных операционных системах). Значение
по умолчанию - 9. Эта опция доступна только для isamchk. Используйте
ее лишь при условии, что вы хорошо понимаете структуру таблицы ISAM.
delayed_insert_limit
Заставляет
обработчик INSERT DELAYED проверять наличие команд SELECT, задержанных при вставке
числа записей, указанного в delayed _insert_limit. Если таковые есть,
обработчик позволяет выполнить эти команды перед продолжением работы.
delay
ed_insert_timeout
Как долго
поток INSERT DELAYED должен ожидать операцию INSERT перед завершением.
delayed_queue_size
Размер очереди
(в записях) для обработки INSERT DELAYED. Если очередь переполняется, все клиенты,
выполнившие INSERT DECAYED, снова будут ждать, пока появится место в очереди.
dritebuffer
Размер буфера,
используемый для хранения исходящих данных. Значение по умолчанию - 260 Кбайт.
Эта переменная доступна только для isamchk.
flush_time
Если переменная
определена, все таблицы закрываются каждые flush_time секунд, для того чтобы
освободить ресурсы и синхронизировать изменения на диск.
join_buffer
Размер буфера
при выполнении соединения таблиц. Увеличение параметра может повысить производительность
запросов, использующих соединение таблиц. Значение по умолчанию — 130 Кбайт.
Эта опция доступна только для mysqld.
key_buffer_size
Размер буфера,
выделенного для хранения ключей (индексов), к которым недавно осуществлялся
доступ. Увеличение этого значения может привести к увеличению скорости работы
запросов, осуществляющих повторное использование одних и тех же индексов. Эта
опция доступна только для isamchk (где значение по умолчанию равно 0.5
Мбайт) и mysqld (значение по умолчанию 1 Мбайт).
long_query_time
Если значение
установлено, то slow_queries увеличивается всякий раз, когда запрос занимает
больше времени, чем определено в переменной long_query_time (в секундах).
max_allowed_packet
Максимальный
размер буфера, используемого для хранения входящих данных. Каждое клиентское
подключение имеет собственный буфер. Значение по умолчанию 64 Кбайт. Опция доступна
только для mysqld.
max_connect_errors
Если значение
установлено, сервер блокирует дальнейшие подключения с удаленного хоста, когда
количество прерванных подключений с удаленного хоста превышает max_connect_errors.
Возможно разблокирование хоста с помощью команды FLUSH HOSTS.
max_Connections
Максимальное
число одновременных клиентских подключений. Значение по умолчанию - 90. Эта
опция может использоваться только с mysqld.
max_delayed_threads
Количество
потоков, обрабатывающих INSERT DELAYED, должно быть не больше значения этой
переменной. Если после исчерпания этого лимита клиент попытается использовать
INSERT DATA для ввода новых данных, запрос будет обработан, как если бы атрибут
DELAYED не был указан?
max_join_size
Максимальный
размер временной таблицы, создаваемой при соединении таблиц. Значение по умолчанию
- 4 Гбайт. Эта опция может использоваться только с mysqld.
max_sort_length
Максимальное
число символов, используемое при сортировке полей BLOB либо VARCHAR. Значение
по умолчанию 1 Кбайт.
max_tmp_tables
(Будет реализовано
позднее в версии 3.23.) Максимальное количество временных таблиц, которое клиент
может открыть одновременно.
net_buffer_length
Начальный
размер буфера для хранения входящих данных. Каждое клиентское подключение имеет
собственный отдельный буфер.
По умолчанию
его размер равен 8 Кбайт. Опция доступна для mysql, mysqld и mysqldump.
readbuffer
Размер буфера,
используемого для хранения читаемых из файла данных. Значение по умолчанию 260
Кбайт. Опция доступна только для isamchk.
record_buffer
Размер буфера,
используемого при чтении данных прямо из таблиц, (то есть без использования
ключей). Увеличение этого значения может повысить скорость выполнения запросов,
не использующих индексы (ключи). По умолчанию значение равно 130 Кбайт. Этот
параметр доступен только для mysqld.
sortbuffer
Размер буфера,
используемого при сортировке данных из таблиц. Значение по умолчанию 1 Мбайт.
Опция доступна только для isamchk.
sort_buffer
Размер буфера,
используемого при сортировке выбранных данных. Увеличение его размера может
повысить скорость выполнения запросов, использующих ORDER BY или GROUP BY. По
умолчанию значение равно 2 Мбайт. Эта опция доступна только для mysqld.
sort_key_blocks
Число блоков
ключей (индексных блоков), используемых при сортировке ключей. Значение по умолчанию
16. Эта опция доступна только для isamchk, пользуйтесь ей, если вы хорошо
понимаете структуру таблицы ISAM.
table_cache
Максимальное
число таблиц, которое сервер баз данных может держать открытым одновременно.
По умолчанию это 64 таблицы. Опция доступна только для mysqld.
tmp_table_size
Максимальный
размер временных таблиц, используемых сервером баз данных. Значение по умолчанию
- 1 Мбайт. Эта опция доступна только для mysqld.
thread_stack
Размер стека
памяти для каждого потока. Значение по умолчанию -64 Кбайт. Эта опция доступна
только для mysqld.
wait_timeout
Количество
секунд, в течение которых сервер ожидает активности от подключения, после чего
закрывает его.
Файл конфигурации
MySQL
Начиная с
MySQL 3.22, вы можете указать и серверные, и клиентские настройки в текстовом
файле конфигурации. Файл имеет разные значения в зависимости от места расположения,
но его формат всегда един. Если он хранится в /etc/my.cnf, настройки
применяются ко всем серверам MySQL и клиентам на этой машине. Если файл находится
в каталоге данных сервера MySQL (например, /usr/local/mysql/data/ my.cnf),
то настройки действительны именно для этого сервера MySQL. Наконец, если
файл назван .my.cnf (обратите внимание наточку в начале) и расположен
в домашнем каталоге пользователя, он применяется ко всем клиентам, запускаемым
этим пользователем.
Формат файла
конфигурации похож на формат файлов инициализации Windows. Файл разбит на абзацы
(строфы) с групповым именем, заключенным в скобки. После имени группы идет список
параметров. Строки комментария начинаются символом «#» или «;
». Каждое имя группы - это название клиентской или серверной программы
MySQL, для которой необходимо определить настройки. Специальное групповое имя
client, влияет на все клиентские программы MySQL (кроме mysqld).
Задаваемые
в этом файле параметры могут быть любой длины. Они имеют ту же форму, что и
параметры к любой команде MySQL, заданные из командной строки (кроме идентификатора
параметров «-» (двойная черта)). Ниже приведен пример файла my.cnf
для всего сервера.
[client]
port=9999
socket=/dev/mysql
[mysqld]
port=9999
socket=/dev/mysql
set-variable
= join_buffer=1M
[mysql]
host=dbhost
unbuffered
До появления
mSQL 2 сконфигурировать систему после инсталляции можно
было только через несколько глобальных переменных окружения.
Однако mSQL 2.0 использует файл конфигурации, позволяющий производить установку
параметров mSQL с гораздо большей гибкостью. Эта часть описывает как переменные
окружения, так и специальный файл конфигурации mSQL 2.
Переменные
окружения
Следующие
переменные являются специальными переменными программ mSQL. Они могут быть определены
в текущей оболочке или являться частью сценария оболочки.
MSQL_DEBUG
Отладочный
уровень программы. Число от 0 (нет отладочной информации) до 3 (максимум отладочной
информации).
MSQL_CONF_FILE
Путь к файлу
конфигурации mSQL.
Кроме того,
программы mSQL используют следующие переменные окружения, которые обычно устанавливаются
как часть среды Unix:
USER
Имя текущего
пользователя.
EDITOR
VISUAL
Путь к заданному
по умолчанию редактору. Программа msql будет использовать его для редактирования
SQL операторов, если ей встретится команда \е.
Файл конфигурации
mSQL
Файл конфигурации
mSQL содержит значения некоторых переменных, которые влияют на работу программ
mSQL. По умолчанию он находится в /usr/local/Hughes/msql.conf. Можно
изменить это значение в переменной окружения MSQL_CONF_FILE. Файл конфигурации
начинается с имени группы, за которым идут переменные этой группы. Ниже пример
файла msql.conf:
[general]
Inst_Dir = /usr/local/Hughes
mSQL_User =
msql
Admin_User =
root
Pid_File = %I/msql2d.pid
TCP_Port =1114
UNIX_Port =
%I/msql2.sock
[system]
Msync_Timer
= 30 Host_Lookup = True Read_0nly = False
[w3-msql]
Auth_Host =
NULL Footer = True Force_Private = False
Секция general
влияет на работу всех программ mSQL, сервер баз данных msqld использует
секцию system, и секция w3-msql используется системой W3-mSQL, обеспечивающей
взаимодействие базы данных с WWW. Когда mSQL читает файлы конфигурации, он заменяет
символы %1 на путь к установленной копии mSQL на сервере. Ниже представлены
возможные переменные для каждой секции.
general
Admin_User
Имя учетной
записи, которой позволено вносить изменения в базу данных mSQL в целом. По умолчанию
это root.
Inst_Dir
Расположение
mSQL. Каждый раз, когда в файле конфигурации встречается символы %1, они заменяются
значением данной переменной. Значение по умолчанию - /usr/local/Hughes.
mSQL_User
Имя учетной
записи, под которой работает демон сервера mSQL. По умолчанию это msql.
Pid_File
Расположение
файла, содержащего ID процесса (PID) работающего демона mSQL. По умолчанию -
%I/msql2d. pid.
TCP_Port
В случае
программы клиента это номер TCP-порта, используемого для подключения к серверу,
для msql2d - это порт, прослушивающий входящие подключения. Значение
по умолчанию - 1114.
UNIX_Port
Имя файла
сокета Unix, используемого для подключения к локальному серверу mSQL (в случае
клиентских приложений) либо для обработки локальных подключений (в случае с
msql2d). Значение по умолчанию - %I/msql2. sock.
system
Host_Lookup
Если установлено
значение 'True', все клиентские подключения должны осуществляться с машин с
действующими и проверяемыми именами хостов.
Msync_timer
Интервал
(в секундах) синхронизации используемых данных, находящихся в RAM, с данными
на диске.
Read_Only
Если значение
этой переменной установлено в 'True', не допускается изменение базы данных.
Разрешены только запросы SELECT.
w3-msql
Auth_Host
Имя хоста,
содержащего сервер БД с таблицами W3-Auth. Если значение установлено в NULL
либо не указано, используется локальный сервер.
Footer
Если установлено
значение 'True', к каждой странице будет применяться стандартный нижний колонтитул
Hughes Technologies.
Force_Private
При значении 'True' через W3-mSQL может быть получен доступ только к защищенным W3-Auth страницам. В результате не допускается обработка обычных HTML-файлов через W3-mSQL.