Программа mysqld понимает параметры командной строки:
--ansi
- Использовать синтаксис ANSI SQL вместо синтаксиса MySQL.
-b, --basedir=path
- Путь к каталогу установки. Все пути обычно вычисляются относительно его.
--big-tables
- использовать большие наборы результатов, сохраняя все временные наборы в
файле. Это решает большинство проблем table full, но также и замедляет
запросы, где таблицы в памяти были бы достаточными. Начиная с версии 3.23.2,
MySQL способен решить это автоматически, используя память для маленьких
временных таблиц и переключаясь на дисковые таблицы там, где необходимо.
--bind-address=IP
- IP-адрес для поиска имен.
--character-sets-dir=path
- Каталог, где лежат наборы символов.
--chroot=path
- Выполнить chroot для
mysqld . Немного ограничит
LOAD DATA INFILE и SELECT ... INTO OUTFILE .
--core-file
- Записать core-файл, если
mysqld сваливается. Для некоторых
систем Вы должны также определить --core-file-size в скрипте
safe_mysqld .
-h, --datadir=path
- Путь к корню базы данных.
--default-character-set=charset
- Заданный по умолчанию набор символов.
--default-table-type=type
- Заданный по умолчанию тип таблицы.
--debug[...]=
- Если MySQL конфигурирован с опцией
--with-debug , Вы можете
использовать эту опцию, чтобы получить файл трассировки того, что делает
mysqld .
--delay-key-write-for-all-tables
- Не сбрасывать буфера ключей между записями для таблиц
MyISAM .
--enable-locking
- Включить блокировки системы. Обратите внимание, что, если Вы используете
эту опцию на системе, которая имеет не полностью рабочий lockd() (как на
Linux), Вы легко получите зависший mysqld.
-T, --exit-info
- Битовая маска различных флажков, которые можно использовать для точной
отладки сервера mysqld.
--flush
- Сбрасывать все изменения на диск после каждой команды SQL. Обычно MySQL
делает запись всех изменений после каждой команды SQL и позволяет
операционной системе обрабатывать синхронизацию с диском.
-?, --help
- Отобразить короткую справку и завершить работу.
--init-file=file
- Читать команды SQL из этого файла при запуске.
-L, --language=...
- Сообщения об ошибках клиента будут выданы на данном языке. Может быть
задан как полный путь.
-l, --log[=file]
- Протоколировать соединения и запросы в файле file.
--log-isam[=file]
- Протоколировать все изменения ISAM/MyISAM в файле file (используется
только при отладке ISAM/MyISAM).
--log-slow-queries[=file]
- Протоколировать все запросы, которые потребовали на обработку больше, чем
long_query_time секунд в файле file.
--log-update[=file]
- Протоколировать все изменения в файле
file.# , где
# является уникальным числом, если не задан.
--log-long-format
- Протоколировать дополнительные данные в файле регистрации обновлений.
Если Вы используете
--log-slow-queries , то запросы, которые не
используют индексы, регистрируются в медленном файле регистрации.
--low-priority-updates
- Изменяющие таблицу операции
(
INSERT /DELETE /UPDATE ) будут иметь
более низкий приоритет, чем выбор из таблицы. Это может также быть выполнено
через {INSERT | REPLACE | UPDATE | DELETE} LOW_PRIORITY ... ,
чтобы понизить приоритет только относительно одного запроса, или
SET OPTION SQL_LOW_PRIORITY_UPDATES=1 , чтобы изменить приоритет
в одном конкретном потоке.
--memlock
- Блокировать процесс
mysqld в памяти. Это работает только,
если Ваша система поддерживает системный вызов mlockall()
(подобно Solaris). Это может помочь, если Вы имеете проблему, где
операционная система заставляет mysqld свопиться на диск.
--myisam-recover [=option[,option...]]]
- Здесь option представляет собой любую комбинацию из
DEFAULT ,
BACKUP , FORCE или QUICK . Вы можете
также устанавливать это в "" , если Вы хотите отключить эту
опцию. Если эта опция используется, mysqld при открытии будет
проверять отмечена ли таблица как поврежденная или не закрытая правильно
(последняя опция работает только, если Вы запустили пакет с параметром
--skip-locking ). Если таблица была разрушена,
mysqld попробует ее починить. Следующие параметры воздействуют
на ремонтные работы.
DEFAULT | Аналогично опции --myisam-recover . |
BACKUP | Если таблица данных была изменена в течение ремонта,
сохраняет копию файла данных `table_name.MYD' под именем
`table_name-datetime.BAK'. |
FORCE | Выполнить ремонт, даже если будет потеряно более, чем
одна строка из файла .MYD. |
QUICK | Не проверять строки в таблице, если в ней
нет удаленных блоков. |
Прежде, чем таблица будет автоматически восстановлена, MySQL добавит
примечание относительно этого в файле регистрации ошибок. Если Вы хотите
автоматически исправлять большинство повреждений без вмешательства
пользователя, Вы должны использовать опции BACKUP,FORCE . Это
вынудит провести ремонт таблицы, даже если некоторые строки будут удалены, но
это сохранит старый файл данных как копию так, чтобы Вы могли позже
исследовать то, что с ним случилось.
--pid-file=path
- Путь к pid-файлу, используемому
safe_mysqld .
-P, --port=...
- Номер порта, на котором слушать TCP/IP подключения.
-o, --old-protocol
- Использовать протокол 3.20 для совместимости с некоторыми очень старыми
версиями клиентов. Сейчас не используется.
--one-thread
- Использовать только один поток (для отладки под Linux).
-O, --set-variable var=option
- Задать значение переменной. Допустимые переменные можно получить с
помощью параметра
--help . Вы можете найти полное описание всех
переменных в разделе "SHOW VARIABLES ".
--safe-mode
- Пропуск некоторых стадий оптимизации. Подразумевается
--skip-delay-key-write .
--safe-show-database
- Не показывать базы данных, для которых пользователь не имеет привилегий.
--safe-user-create
- Если это включено, пользователь не может создавать новых пользователей
командой GRANT, если он не имеет привилегию
INSERT на таблице
mysql.user или любом столбце в этой таблице.
--skip-concurrent-insert
- Выключить способность выбирать и вставлять в то же самое время на
таблицах
MyISAM . Это должно использоваться только, если Вы
думаете, что Вы нашли ошибку в этом свойстве.
--skip-delay-key-write
- Игнорировать опцию
delay_key_write для всех таблиц.
--skip-grant-tables
- Эта опция заставляет сервер не использовать систему привилегии вообще.
Это дает каждому полный доступ ко всем базам данных! Чтобы запустить
привилегии, выполните команду
mysqladmin flush-privileges или
mysqladmin reload .
--skip-host-cache
- Никогда не использовать кэширование имен для более быстрого
преобразования имен в адреса. Всегда делать запрос DNS.
--skip-locking
- Не использовать блокировку системы. Чтобы применить
isamchk или myisamchk , Вы должны завершить сервер.
Обратите внимание, что в MySQL версии 3.23 Вы можете использовать команды
REPAIR и CHECK для ремонта и проверки новых таблиц
системы MyISAM .
--skip-name-resolve
- Имена хостов не преобразовывать вообще. Все столбцы
Host в
таблицах должны иметь значение IP-адреса или localhost .
--skip-networking
- Не слушать TCP/IP подключения вообще. Все взаимодействие с
mysqld должно быть сделано через сокеты Unix. Эта опция очень
рекомендуется на системах, где позволяются только локальные запросы.
--skip-new
- Не использовать новые, возможно, неправильные подпрограммы.
Подразумевается опция
--skip-delay-key-write . Это также
установит заданный по умолчанию тип таблицы в ISAM .
--skip-symlink
- Не удалять или переименовывать файлы, на которые указывает символическая
ссылка в каталоге данных.
--skip-safemalloc
- Если MySQL конфигурирован с опцией
--with-debug=full , все
программы проверят на перекрытие память для каждого распределения и
освобождения памяти. Поскольку эта проверка очень медленная, Вы можете
отказаться от нее, когда Вы не нуждаетесь в постоянной проверке памяти,
используя эту опцию.
--skip-show-database
- Не позволять команды 'SHOW DATABASE', если пользователь не имеет
привилегию process.
--skip-stack-trace
- Не записывать трассировку стека. Эта опция полезна, когда Вы выполняете
mysqld под программой-отладчиком.
--skip-thread-priority
- Отключить использование приоритетов потоков для ускорения ответов.
--socket=path
- Файл сокета, который надлежит использовать для локальных подключений
вместо значения по умолчанию
/tmp/mysql.sock .
--sql-mode=option[,option[,option...]]
- Опция может быть любой комбинацией значений:
REAL_AS_FLOAT ,
PIPES_AS_CONCAT , ANSI_QUOTES ,
IGNORE_SPACE , SERIALIZE ,
ONLY_FULL_GROUP_BY . Это может также быть пусто
("" ), если Вы хотите сбросить эту настройку. Определяя все
приведенные выше параметры, Вы достигнете того же эффекта, что и опцией
--ansi. Но данной опцией можно включить только необходимые SQL-режимы.
transaction-isolation={READ-UNCOMMITTED|READ-COMMITTED|REPEATABLE-READ|SERIALIZABLE}
- Устанавливает заданный по умолчанию уровень изоляции транзакции.
-t, --tmpdir=path
- Путь для временных файлов. Может быть полезно, если Ваше значение по
умолчанию
/tmp проживает на разделе слишком маленьком, чтобы
хранить временные таблицы.
-u, --user=user_name
- Выполнить
mysqld как пользователь user_name .
Эта опция обязательна при запуске mysqld как root.
-V, --version
- Вывести информацию о версии и завершить работу.
-W, --warnings
- Распечатать предупреждения, подобные
Aborted connection... в
файл .err .
MySQL может, начиная с версии 3.22, читать заданные по умолчанию параметры
запуска для клиентов и сервера из файлов опций.
MySQL читает заданные по умолчанию параметры из следующих файлов (в Unix):
Имя файла | Зачем он нужен
|
/etc/my.cnf | Глобальные опции для всех |
DATADIR/my.cnf | Опции для сервера |
defaults-extra-file | Файл, определенный через
--defaults-extra-file=# |
~/.my.cnf | Специфические для пользователей опции
|
DATADIR представляет собой каталог данных MySQL (обычно
`/usr/local/mysql/data' для бинарного дистрибутива или
`/usr/local/var' для установки из исходников). Обратите внимание,
что это тот каталог, который был определен в конфигурации, а не указан в
опции --datadir при запуске mysqld ! Параметр
--datadir не имеет никакого эффекта в то время, когда сервер
ищет файлы опций потому, что он их ищет прежде, чем обрабатывает любые
параметры командной строки.
MySQL читает заданные по умолчанию параметры из следующих файлов
(только в ОС Windows):
Имя файла | Зачем он нужен
|
windows-system-directory\my.ini | Глобальные опции
|
C:\my.cnf | Глобальные опции |
C:\mysql\data\my.cnf | Опции для сервера |
Обратите внимание, что в Windows Вы должны определить все пути с
/ вместо \ . Если Вы используете \ , Вы
должны определить это дважды, поскольку \ символ ESC в MySQL.
MySQL пробует читать файлы опции в порядке,
перечисленном выше. Если есть несколько файлов настроек, используется опция,
определенная в том файле, который читается позже. Параметры, определенные в
командной строке имеют приоритет над параметрами, определенными в любом файле
опций. Некоторые параметры могут быть определены, используя системные
переменные. Параметры, определенные в командной строке или в файлах опций
имеют приоритет над значением соответствующей системной переменной.
Следующие программы поддерживают файлы опций: mysql ,
mysqladmin , mysqld , mysqldump ,
mysqlimport , mysql.server , myisamchk и
myisampack .
Вы можете использовать файлы опций, чтобы определить любую длинную опцию,
которую программа поддерживает! Выполните программу с параметром
--help , чтобы получить список доступных параметров.
Файл опций может содержать строки следующих форм:
#comment
- Строки комментария начинаются с `#' или с `;'.
Пустые строки игнорируются.
[group]
group представляет собой имя программы или группы, для
которой Вы хотите устанавливать параметры. После строки группы любая строка
option или set-variable обращается к именованной
группе, пока не будет достигнут конец файла опций или другая строка группы.
option
- Эквивалентно
--option в командной строке.
option=value
- Эквивалентно
--option=value в командной строке.
set-variable = variable=value
- Эквивалентно
--set-variable variable=value в командной
строке. Этот синтаксис должен использоваться, чтобы установить переменную
mysqld .
Группа client позволяет Вам определять параметры, которые
обращаются ко всей клиентуре MySQL (но не к mysqld ). Это
самая подходящая группа, чтобы определить в ней пароль, который Вы
используете, чтобы соединиться с сервером. Но удостоверьтесь, что файл опций
читаем и перезаписываем только Вами.
Обратите внимание, что для параметров и значений все конечные и начальные
пробелы автоматически удалены. Вы можете использовать управляющие
последовательности \b, \t, \n,
\r, \\ и \s в Вашей строке
(\s==пробел).
Имеется типичный глобальный файл опций:
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
port=3306
socket=/tmp/mysql.sock
set-variable = key_buffer_size=16M
set-variable = max_allowed_packet=1M
[mysqldump]
quick
Имеется типичный файл опций пользователя:
[client]
# The following password will be sent to all standard MySQL clients
password=my_password
[mysql]
no-auto-rehash
set-variable = connect_timeout=2
[mysqlhotcopy]
interactive-timeout
Если Вы имеете дистрибутив с исходниками, Вы найдете,
что типовые файлы конфигурации называются my-xxxx.cnf в каталоге
support-files. А вот в двоичном дистрибутиве смотрите в каталог
DIR/support-files, где DIR задает имя пути к каталогу
установки MySQL (обычно /usr/local/mysql). В настоящее время
имеются типовые файлы конфигурации для маленькой, средней, большой и очень
большой системы. Вы можете копировать my-xxxx.cnf в Ваш основной
каталог (переименуйте копию в .my.cnf), чтобы экспериментировать.
Вся клиентура MySQL, которая поддерживает файлы опций,
использует и следующие параметры:
--no-defaults | Не читать любые файлы опций. |
--print-defaults | Печатать имя программы и все параметры,
которые ей передаются. |
--defaults-file=full-path-to-default-file | Использовать только
данный файл конфигурации. |
--defaults-extra-file=full-path-to-default-file | Читать этот
файл конфигурации после глобального файла опций, но перед чтением
файла настроек пользователя. |
Обратите внимание, что вышеупомянутые параметры должны быть первыми в
командной строке, чтобы они работали! Однако, --print-defaults
может использоваться непосредственно после команды
--defaults-xxx-file .
В скриптах оболочки Вы можете использовать команду
my_print_defaults, чтобы анализировать файлы конфигурации:
shell> my_print_defaults client mysql
--port=3306
--socket=/tmp/mysql.sock
--no-auto-rehash
Вышеупомянутый вывод содержит все параметры для групп 'client' и 'mysql'.
В некоторых случаях Вы можете хотеть иметь много различных серверов
mysqld на одной машине. Вы можете, например, выполнять новую
версию MySQL для тестирования вместе со старой версией, которая находится в
постоянном рабочем использовании. Другой случай: Вы хотите давать различным
пользователям доступ к разным серверам mysqld , которыми они
будут управлять самостоятельно.
Один способ получить новый сервер: запустить его с другим сокетом и
портом следующим образом:
shell> MYSQL_UNIX_PORT=/tmp/mysqld-new.sock
shell> MYSQL_TCP_PORT=3307
shell> export MYSQL_UNIX_PORT MYSQL_TCP_PORT
shell> scripts/mysql_install_db
shell> bin/safe_mysqld &
Приложение системных переменных включает список других системных
переменных, которые Вы можете использовать, чтобы воздействовать на
mysqld . Подробности в разделе
"Приложение 2. Переменные окружения
".
Если Вы должны делать это более постоянно, Вы должны создать файл опций
для каждого сервера. Подробности в разделе
"4.1.2 Файлы опций my.cnf". В Вашем
скрипте запуска, который будет выполнен при начальной загрузке
(mysql.server?), Вы должны определить для обоих серверов:
safe_mysqld --default-file=path-to-option-file
По крайней мере следующие параметры должны быть различны на серверах:
port=#
-
socket=path
-
pid-file=path
Следующие параметры должны быть различны, если они используются:
log=path
-
log-bin=path
-
log-update=path
-
log-isam=path
-
bdb-logdir=path
Если Вы хотите получить большую эффективность, Вы можете также определять:
tmpdir=path
-
bdb-tmpdir=path
Если Вы устанавливаете двоичные версии MySQL (файлы .tar) и запускаете их
с ./bin/safe_mysqld , то обычно придется менять только опции
socket и port в скрипте safe_mysqld .
Имеются обстоятельства, когда Вы могли бы хотеть выполнять много серверов
на одной и той же машине. Например, Вы могли бы проверять новый выпуск MySQL
при оставлении Вашей существующей безмятежной установки в рабочем состоянии.
Если Вы хотите выполнять много серверов, самый простой путь состоит в том,
чтобы компилировать их с различными портами TCP/IP и файлами сокетов так, что
они оба не слушают тот же самый порт TCP/IP или файл сокета.
Предположим, что существующий сервер конфигурирован для заданного по
умолчанию номера порта и файла сокета. Теперь конфигурируйте новый сервер
командой выбора конфигурации configure :
shell> ./configure --with-tcp-port=port_number \
--with-unix-socket-path=file_name \
--prefix=/usr/local/mysql-3.22.9
Здесь port_number и file_name должны отличаться
от заданных по умолчанию номера порта и имени пути файла сокета, значение
--prefix должно определить другой каталог установки, а не тот, в
котором размещена существующая установка MySQL.
Вы можете проверять сокет, используемый любым в настоящее время
выполняющимся сервером MySQL, командой:
shell> mysqladmin -h hostname --port=port_number variables
Обратите внимание, что, если Вы определяете localhost как имя
хоста по умолчанию, mysqladmin будет использовать Unix-сокеты
вместо протокола TCP/IP.
Если Вы имеете сервер MySQL, работающий на уже занятом порте, Вы получите
список из наиболее важных переменных настройки в MySQL, включая имя сокета.
Вы не должны перекомпилировать сервер MySQL только, чтобы запустить его с
другого порта и сокета. Вы можете изменять порт и сокет, который нужно
использовать, определяя их во время выполнения как параметры для
safe_mysqld :
shell> /path/to/safe_mysqld --socket=file_name --port=port_number
mysqld_multi может также брать safe_mysqld (или
mysqld ) как параметр и передавать параметры из файла
конфигурации safe_mysqld и в дополнение mysqld .
Если Вы выполняете новый сервер в том же самом каталоге баз данных, что и
старый с включенным протоколированием, Вы должны также определить имя
журналов в safe_mysqld с помощью опций --log ,
--log-update или --log-slow-queries . Иначе оба
сервера могут попробовать вести протокол в одни и те же файлы!
ПРЕДУПРЕЖДЕНИЕ: Обычно Вы никогда не должны иметь двух
серверов, которые модифицируют данные в той же самой базе данных! Если Ваша
ОС не поддерживает полноценную блокировку системы, это легко может привести к
ОЧЕНЬ неприятным неожиданностям!
Если Вы хотите использовать другой каталог баз данных для второго сервера,
Вы можете использовать опцию --datadir=path при вызове
safe_mysqld .
ОБРАТИТЕ ВНИМАНИЕ также, что запуск нескольких серверов
MySQL (mysqlds ) на различных машинах и разрешение им обращаться
в один каталог данных через NFS вообще ПЛОХАЯ
ИДЕЯ! Проблема состоит в том, что NFS станет узким
местом с низким быстродействием. Этот сервис не предполагается для такого
использования. К тому же Вам придется придумывать решение, как надежно
удостовериться, что два или больше процессов mysqld не
сталкиваются друг с другом. В настоящее время не имеется никакой платформы,
которая была бы 100% надежной, чтобы делать блокировку файла (обычно
lockd daemon) в любой ситуации. Все же имелся бы еще один
возможный риск с NFS : этот сервис сделал бы работу для
lockd еще более сложной. Так что забудьте о таких развлечениях!
Рабочее решение состоит в том, чтобы иметь один компьютер с операционной
системой, которая эффективно обрабатывает потоки, и иметь в нем несколько
CPU и памяти побольше.
Когда Вы хотите соединиться с сервером MySQL, который работает с другим
портом, чем порт, который компилируется в Вашего клиента, Вы можете
использовать один из следующих методов:
|
|