| |
Программа mysqld
понимает параметры командной строки:
--ansi
-b, --basedir=path
--big-tables
--bind-address=IP
--character-sets-dir=path
--chroot=path
mysqld
. Немного ограничит
LOAD DATA INFILE
и SELECT ... INTO OUTFILE
.
--core-file
mysqld
сваливается. Для некоторых
систем Вы должны также определить --core-file-size
в скрипте
safe_mysqld
.
-h, --datadir=path
--default-character-set=charset
--default-table-type=type
--debug[...]=
--with-debug
, Вы можете
использовать эту опцию, чтобы получить файл трассировки того, что делает
mysqld
.
--delay-key-write-for-all-tables
MyISAM
.
--enable-locking
-T, --exit-info
--flush
-?, --help
--init-file=file
-L, --language=...
-l, --log[=file]
--log-isam[=file]
--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...]]]
DEFAULT
,
BACKUP
, FORCE
или QUICK
. Вы можете
также устанавливать это в ""
, если Вы хотите отключить эту
опцию. Если эта опция используется, mysqld
при открытии будет
проверять отмечена ли таблица как поврежденная или не закрытая правильно
(последняя опция работает только, если Вы запустили пакет с параметром
--skip-locking
). Если таблица была разрушена,
mysqld
попробует ее починить. Следующие параметры воздействуют
на ремонтные работы.
DEFAULT | Аналогично опции --myisam-recover . |
BACKUP | Если таблица данных была изменена в течение ремонта, сохраняет копию файла данных `table_name.MYD' под именем `table_name-datetime.BAK'. |
FORCE | Выполнить ремонт, даже если будет потеряно более, чем одна строка из файла .MYD. |
QUICK | Не проверять строки в таблице, если в ней нет удаленных блоков. |
BACKUP,FORCE
. Это
вынудит провести ремонт таблицы, даже если некоторые строки будут удалены, но
это сохранит старый файл данных как копию так, чтобы Вы могли позже
исследовать то, что с ним случилось.
--pid-file=path
safe_mysqld
.
-P, --port=...
-o, --old-protocol
--one-thread
-O, --set-variable var=option
--help
. Вы можете найти полное описание всех
переменных в разделе "SHOW VARIABLES
".
--safe-mode
--skip-delay-key-write
.
--safe-show-database
--safe-user-create
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
--skip-locking
isamchk
или myisamchk
, Вы должны завершить сервер.
Обратите внимание, что в MySQL версии 3.23 Вы можете использовать команды
REPAIR
и CHECK
для ремонта и проверки новых таблиц
системы MyISAM
.
--skip-name-resolve
Host
в
таблицах должны иметь значение IP-адреса или localhost
.
--skip-networking
mysqld
должно быть сделано через сокеты Unix. Эта опция очень
рекомендуется на системах, где позволяются только локальные запросы.
--skip-new
--skip-delay-key-write
. Это также
установит заданный по умолчанию тип таблицы в ISAM
.
--skip-symlink
--skip-safemalloc
--with-debug=full
, все
программы проверят на перекрытие память для каждого распределения и
освобождения памяти. Поскольку эта проверка очень медленная, Вы можете
отказаться от нее, когда Вы не нуждаетесь в постоянной проверке памяти,
используя эту опцию.
--skip-show-database
--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, который работает с другим портом, чем порт, который компилируется в Вашего клиента, Вы можете использовать один из следующих методов:
--host 'hostname'
--port=port_number
, чтобы связаться по TCP/IP, или с опцией
[--host localhost] --socket=file_name
для связи через Unix-сокет.
DBD::mysql
, Вы можете читать
все параметры прямо из файлов опций MySQL.
$dsn = "DBI:mysql:test;mysql_read_default_group=client;mysql_read_default_file=/usr/local/mysql/data/my.cnf" $dbh = DBI->connect($dsn, $user, $password);
MYSQL_UNIX_PORT
и
MYSQL_TCP_PORT
так, чтобы указать на Unix-сокет и порт TCP/IP
прежде, чем Вы запускаете вашу клиентуру. Если Вы обычно используете
специфический сокет или порт, Вы должны поместить команды, чтобы установить
эти системные переменные в Вашем файле .login.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |