RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
YandexMoney: 
41001198119846 
E-gold:
5128052

Глава 5. Программы MySQL

Эта глава обеспечивает краткий обзор программ командной строки MySQL, обеспеченных Oracle Corporation. Это также обсуждает общий синтаксис для того, чтобы определить опции, когда Вы выполняете эти программы. У большинства программ есть опции, которые являются определенными для их собственной работы, но синтаксис опции подобен для всех. Наконец, глава обеспечивает более подробные описания отдельных программ, включая опции, которые они признают.

5.1. Обзор программ MySQL

В установке MySQL есть много различных программ. Этот раздел обеспечивает их краткий обзор. Более поздние разделы обеспечивают более подробное описание. Описание каждой программы указывает на синтаксис и опции, которые она поддерживает.

Большинство дистрибутивов MySQL включает все эти программы, за исключением тех программ, которые являются определенными для платформы. Например, скрипты запуска сервера не используются в Windows. Исключение то, что дистрибутивы RPM более специализированы. Есть RPM для сервера, другой для программ клиента и т.д. Если Вы, кажется, пропускаете одну или более программ, см. главу 2, для информации о типах дистрибутивов, и что они содержат. Может случиться так, что у Вас есть дистрибутив, который не включает все программы, и Вы должны установить дополнительный пакет.

Каждая программа MySQL берет много различных опций. Большинство программ обеспечивает опцию --help, которую Вы можете использовать, чтобы получить описание различных вариантов программы. Например, попробуйте mysql --help.

Вы можете переопределить значения опции по умолчанию для программ MySQL, определяя опции в командной строке или в файле опции. См. раздел 5.2.

Сервер MySQL, mysqld , является основной программой, которая делает большую часть работы в установке MySQL. Сервер сопровождается несколькими связанными скриптами, которые помогают Вам в запуске и остановке сервера:

  • mysqld

    Демон SQL (то есть, сервер MySQL). Чтобы использовать программы клиента, mysqld должен работать, потому что клиенты получают доступ к базам данных, соединяясь с сервером. См. раздел 5.3.1.

  • mysqld_safe

    Скрипт запуска сервера. mysqld_safe пытается запустить mysqld. См. раздел 5.3.2.

  • mysql.server

    Другой скрипт запуска сервера. Этот скрипт используется на системах, которые используют стиль System V для каталогов, содержащих скрипты, которые запускают системные службы для особых уровней выполнения. Это вызывает mysqld_safe , чтобы запустить сервер MySQL. См. раздел 5.3.3.

  • mysqld_multi

    Скрипт запуска сервера, который может запустить или остановить много серверов, установленных в системе. См. раздел 5.3.4.

Несколько программ выполняют операции установки во время установки MySQL:

  • comp_err

    Эта программа используется во время процессов сборки или установки MySQL. Это собирает файлы сообщения об ошибке из исходных файлов. См. раздел 5.4.1.

  • mysql_secure_installation

    Эта программа позволяет Вам улучшить безопасность своей установки MySQL. См. раздел 5.4.2.

  • mysql_ssl_rsa_setup

    Эта программа создает сертификат SSL, ключевые файлы и файлы ключевой пары RSA, требуемые, чтобы поддерживать безопасные соединения, если те файлы отсутствуют. Файлы, создаваемые mysql_ssl_rsa_setup, могут использоваться для безопасных соединений, используя SSL или RSA. См. раздел 5.4.3.

  • mysql_tzinfo_to_sql

    Эта программа загружает таблицы часового пояса в базу данных mysql, используя содержание базы данных zoneinfo хост-системы (набор файлов, описывающих часовые пояса). См. раздел 5.4.4.

  • mysql_upgrade

    Эта программа используется после работы обновления MySQL. Это проверяет таблицы на несовместимости и восстанавливает их в случае необходимости, и обновляет таблицы привилегий с любыми изменениями, которые были произведены в более новых версиях MySQL. См. раздел 5.4.5.

Программы клиента MySQL, которые соединяются с сервером MySQL:

  • mysql

    Инструмент командной строки для того, чтобы в интерактивном режиме ввести запросы SQL или выполнить их из файла в пакетном режиме. См. раздел 5.5.1.

  • mysqladmin

    Клиент, который выполняет административные задачи, такие как создание или удаление баз данных, перезагрузка таблиц, сброс таблиц на диск и повторное открытие файлов системного журнала. mysqladmin может также использоваться, чтобы получить версию, процесс и информацию о статусе от сервера. См. раздел 5.5.2.

  • mysqlcheck

    Клиент табличного обслуживания, который проверяет, восстанавливает, анализирует и оптимизирует таблицы. См. раздел 5.5.3.

  • mysqldump

    Клиент, который выводит базу данных MySQL в файл как SQL, текст или XML. См. раздел 5.5.4.

  • mysqlimport

    Клиент, который импортирует текстовые файлы в их соответствующие таблицы через LOAD DATA INFILE. См. раздел 5.5.5.

  • mysqlpump

    Клиент, который выводит базу данных MySQL в файл как SQL. См. раздел 5.5.6.

  • mysqlshow

    Клиент, который выводит на экран информацию о базах данных, таблицах, столбцах и индексах. См. раздел 5.5.7.

  • mysqlslap

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

Утилиты управления MySQL:

  • innochecksum

    Офлайновая утилита контрольной суммы файла InnoDB, см. раздел 5.6.2.

  • myisam_ftdump

    Утилита, которая выводит на экран информацию о полнотекстовом индексе в таблице MyISAM, см. раздел 5.6.3.

  • myisamchk

    Утилита, чтобы описать, проверить, оптимизировать и отремонтировать таблицы MyISAM, см. раздел 5.6.4.

  • myisamlog

    Утилита, которая обрабатывает содержание файла системного журнала MyISAM. См. раздел 5.6.5.

  • myisampack

    Утилита, которая сжимает таблицы MyISAM, чтобы произвести меньшие таблицы только для чтения. См. раздел 5.6.6.

  • mysql_config_editor

    Утилита, которая позволяет Вам сохранить параметры аутентификации в безопасном, зашифрованном файле .mylogin.cnf. См. раздел 5.6.7.

  • mysqlbinlog

    Утилита для того, чтобы считать запросы из двоичного журнала. Журнал выполненных запросов, содержавшихся в двоичных файлах системного журнала, может использоваться, чтобы помочь оправиться от катастрофического отказа. См. раздел 5.6.8.

  • mysqldumpslow

    Утилита, чтобы читать и суммировать содержание медленного журнала запроса. См. раздел 5.6.9.

Утилиты развития программы MySQL:

  • mysql_config

    Скрипт оболочки, который производит значения опции, необходимые, собирая программы MySQL. См. раздел 5.7.1.

  • my_print_defaults

    Утилита, которая показывает, какие опции присутствуют в группах опции файлов опций. См. раздел 5.7.2.

  • resolve_stack_dump

    Утилита, которая решает числовой дамп трассировки стека к символам. См. раздел 5.7.3.

Разные дополнительные утилиты:

  • lz4_decompress

    Утилита, которая распаковывает вывод mysqlpump, который создавался, используя сжатие LZ4. См. раздел 5.8.1.

  • perror

    Утилита, которая выводит на экран значение кодов ошибки MySQL или системы. См. раздел 5.8.2.

  • replace

    Утилита, которая выполняет строковую замену во входном тексте. См. раздел 5.8.3.

  • resolveip

    Утилита, которая приводит имя хоста к IP-адресу или наоборот. См. раздел 5.8.4.

  • zlib_decompress

    Утилита, которая распаковывает вывод mysqlpump, который создавался, используя сжатие ZLIB. См. раздел 5.8.5.

Oracle Corporation также обеспечивает MySQL Workbench GUI, который используется, чтобы управлять серверами MySQL и базами данных, создавать, выполнять и оценивать запросы, мигрировать схемы и данные от других систем управления реляционной базы данных для использования с MySQL. Дополнительные инструменты GUI включают MySQL Notifier и MySQL for Excel.

Программы клиента MySQL, которые общаются с сервером, используя библиотеку клиент-сервер, применяют следующие переменные окружения.

ПеременнаяСмысл
MYSQL_UNIX_PORT Файл сокета Unix по умолчанию используемый для соединений с localhost
MYSQL_TCP_PORTНомер порта по умолчанию используемый для соединений TCP/IP
MYSQL_PWD Пароль по умолчанию
MYSQL_DEBUG Опции трассировки отладки
TMPDIR Каталог, где создаются временные таблицы и файлы

Для полного списка переменных окружения, используемых программами MySQL, см. раздел 5.9.

Использование MYSQL_PWD опасно, см. раздел 7.1.2.1.

5.2. Использование программ MySQL

5.2.1. Вызов программ MySQL

Чтобы вызвать программу MySQL из командной строки (то есть, из Вашей оболочки или командной строки), вводят название программы, сопровождаемое любыми опциями или другими параметрами, которые должны проинструктировать программу, что Вы хотите. Следующие команды показывают некоторые примеры вызова программы. shell> представляет подсказку для Вашего интерпретатора команд, это не часть того, что Вы вводите. Особая подсказка, которую Вы видите, зависит от Вашего интерпретатора команд. Типичные подсказки $ для sh, ksh или bash, % для csh или tcsh и C:\> для Windows command.com или cmd.exe.

shell> mysql --user=root test
shell> mysqladmin extended-status variables
shell> mysqlshow --help
shell> mysqldump -u root personnel
Параметры, которые начинаются с единственного или двойного тире (-, --), задают опции программы. Опции, как правило, указывают на тип соединения, которое программа должна сделать к серверу, или определяют операционный режим. Синтаксис опций описан в разделе 5.2.3.

Параметры не опции (параметры без ведущего тире) обеспечивают дополнительную информацию программе. Например, mysql интерпретирует первый параметр не опции как имя базы данных, таким образом, команда mysql --user=root test указывает, что Вы хотите использовать базу данных test.

Более поздние разделы, которые описывают отдельные программы, указывают, какие опции программа поддерживает и значение любых дополнительных параметров.

Некоторые опции характерны для многих программ. Наиболее часто используемые из них --host (-h), --user (-u) и --password (-p) определяют параметры соединения. Они указывают на хост, где сервер MySQL работает, имя пользователя и пароль Вашей учетной записи MySQL. Все программы клиента MySQL понимают эти опции, они позволяют Вам определить с которым сервером соединиться и учетную запись, чтобы использовать на том сервере. Другие опции соединения --port (-P) определяет номер порта TCP/IP и --socket (-S) указывает файл сокета на Unix (или именованный канал в Windows). См. раздел 5.2.2.

Вы можете счесть необходимым вызвать программы MySQL, используя путь для каталога bin, в котором они установлены. Это, вероятно, будет иметь место, если Вы получаете ошибку program not found , когда Вы пытаетесь выполнить программу MySQL из любого каталога кроме bin. Чтобы сделать более удобным использование MySQL, Вы можете добавить путь bin в переменную PATH. Это позволяет Вам выполнить программу, вводя только ее имя. Например, если mysql установлена в /usr/local/mysql/bin, Вы можете выполнить программу, вызывая это как mysql и не надо вызвать это как /usr/local/mysql/bin/mysql.

Консультируйтесь с документацией для своего интерпретатора команд для инструкций по установке PATH. Синтаксис для того, чтобы установить переменные окружения является определенным для интерпретатора. См. раздел 5.2.10. После изменения Вашего PATH, откройте новую консоль в Windows или войдите в систему снова в Unix, чтобы установка вступила в силу.

5.2.2. Соединение с сервером MySQL

Этот раздел описывает, как установить соединение с сервером MySQL. Для дополнительной информации, если Вы не способны соединиться, см. раздел 7.2.8.

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

Примеры здесь используют mysql, но принципы относятся к другим клиентам, таким как mysqldump, mysqladmin или mysqlshow .

Эта команда вызывает mysql не определяя параметров соединения явно:

shell> mysql
Поскольку нет никаких опций параметра, значения по умолчанию применяются:

  • Имя хоста localhost. В Unix у этого есть особое значение, как описано позже.

  • Имя пользователя значения по умолчанию ODBC в Windows или Ваше имя для входа в систему в Unix.
  • Никакой пароль не посылают, если ни один из параметров -p или --password не задан.
  • Для mysql первый параметр не опции взят в качестве названия базы данных значения по умолчанию. Если нет такой опции, mysql не выбирает базу данных по умолчанию.

Чтобы определить имя хоста и пользователя явно, так же как пароль, укажите соответствующие опции в командной строке:

shell> mysql --host=localhost --user=myname --password=mypass mydb
shell> mysql -h localhost -u myname -pmypass mydb
Для опций пароля значение является дополнительным:

  • Если Вы используете -p или --password и определяете значение пароля, не должно быть пробелов между -p или --password= и паролем после этого.

  • Если Вы используете -p или --password, но не определяете значение пароля, программа клиента запрашивает Вас о пароле. Пароль не выведен на экран, когда Вы вводите его. Это более безопасно, чем предоставление пароля в командной строке. Другие пользователи в Вашей системе могут быть в состоянии видеть пароль, определенный в командной строке, выполняя такую команду, как ps auxw. См. раздел 7.1.2.1.

Указание значение пароля в командной строке может быть угрозой безопасности. Чтобы избежать этой проблемы, определите --password или -p без любого значения пароля:

shell> mysql --host=localhost --user=myname --password mydb
shell> mysql -h localhost -u myname -p mydb
Когда у опции пароля нет никакого значения пароля, программа клиента печатает подсказку и ждет ввода пароля. В этих примерах mydb не интерпретируется как пароль, потому что это отделено от предыдущей опции пароля пробелом.

На некоторых системах библиотека автоматически ограничивает пароль восемью символами. Это проблема с системной библиотекой, не с MySQL. Внутренне у MySQL нет никакого предела для длины пароля. Чтобы решить проблему, измените свой пароль MySQL на значение, которое является восемью или меньшим количеством символов или поместите Ваш пароль в файл опции.

В Unix программы MySQL особо обрабатывают имя хоста localhost способом, который, вероятно, отличается от того, что Вы ожидаете по сравнению с другими основанными на сети программами. Для соединений с localhost программы MySQL пытаются соединиться с локальным сервером при использовании файла сокета Unix. Это происходит даже если --port или -P заданы, чтобы определить номер порта. Чтобы гарантировать, что клиент делает соединение по TCP/IP с локальным сервером, надо использовать --host или -h и определить значение имени хоста 127.0.0.1 или IP-адрес (или имя) локального сервера. Вы можете также определить протокол соединения явно, даже для localhost, опцией --protocol=TCP :

shell> mysql --host=127.0.0.1
shell> mysql --protocol=TCP
Опция --protocol позволяет Вам установить особый тип соединения, даже когда другие опции обычно принимали бы значение по умолчанию к некоторому другому протоколу.

Если сервер сконфигурирован, чтобы принять соединения IPv6, клиенты могут соединиться по IPv6, используя --host=::1. См. раздел 6.1.9.

В Windows Вы можете вынудить клиента MySQL использовать соединение именованного канала, определяя --pipe или --protocol=PIPE или точку (.) как имя хоста. Если соединения именованного канала не включены, происходит ошибка. Используйте опцию --socket, чтобы определить название канала, если Вы не хотите использовать имя канала значения по умолчанию.

Соединения с удаленными серверами всегда используют TCP/IP. Эта команда соединяется с remote.example.com через порт о умолчанию (3306):

shell> mysql --host=remote.example.com
Чтобы определить номер порта явно, используйте --port или -P:
shell> mysql --host=remote.example.com --port=13306
Вы можете определить номер порта для соединений с локальным сервером. Однако, как обозначено ранее, соединения с localhost в Unix будет использовать файл сокета по умолчанию. Вы должны будете вызвать соединение TCP/IP как уже описано или любую опцию, которая определяет, что номер порта будет проигнорирован.

Для этой команды программа использует файл сокета в Unix, опция --port проигнорирована:

shell> mysql --port=13306 --host=localhost
Чтобы заставить использовать номер порта, вызовите программу любым из этих способов:
shell> mysql --port=13306 --host=127.0.0.1
shell> mysql --port=13306 --protocol=TCP

Следующий список суммирует опции, которые могут использоваться, чтобы управлять, как программы клиента соединяются с сервером:

  • --host= host_name, -h host_name

    Хост, где сервер работает. Значение по умолчанию localhost.

  • --password[= pass_val], -p[pass_val]

    Пароль учетной записи MySQL. Как описано ранее, значение пароля является дополнительным, но если дано, не должно быть пробелов между -p или --password= и паролем после этого. Значение по умолчанию: нет пароля.

  • --pipe, -W

    В Windows соединитесь с сервером, используя именованный канал. Сервер должен быть запущен с опцией --enable-named-pipe, чтобы включить соединения по каналам.

  • --port=port_num , -P port_num

    Номер порта, чтобы использовать для соединений, сделанных, используя TCP/IP. Значение по умолчанию 3306.

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    Эта опция явно определяет протокол, чтобы использовать для того, чтобы соединиться с сервером. Полезно, когда другие параметры соединения обычно заставляли бы использоваться не тот протокол. Например, соединения в Unix к localhost сделаны, используя файл сокета Unix по умолчанию:

    shell> mysql --host=localhost
    
    Чтобы вынудить соединение TCP/IP использоваться вместо этого, определите --protocol:
    shell> mysql --host=localhost --protocol=TCP
    
    Следующая таблица показывает допустимые значения --protocol и указывает на платформы, на которых может использоваться каждое значение. Значения не являются чувствительными к регистру.

    Значение --protocolПротокол соединения Допустимые операционные системы
    TCP Соединение TCP/IP с локальным или удаленным сервером Все
    SOCKET Соединение файла сокета Unix с локальным серверомUnix
    PIPE Соединение именованного канала с локальным или удаленным сервером Windows
    MEMORY Соединение совместно используемой памяти с локальным сервером Windows
  • --shared-memory-base-name=name

    В Windows имя совместно используемой памяти для соединений, сделанных, используя совместно используемую память для локального сервера. Значение по умолчанию MYSQL. Имя совместно используемой памяти является чувствительным к регистру.

    Сервер должен быть запущен с опцией --shared-memory , чтобы включить соединения совместно используемой памяти.

  • --socket= file_name, -S file_name

    В Unix имя файла сокета Unix, чтобы использовать для соединений, сделанных, используя именованный канал для локального сервера. Имя файла сокета Unix по умолчанию /tmp/mysql.sock.

    В Windows это имя именованного канала, чтобы использовать для соединений с локальным сервером. Имя канала Windows по умолчанию MySQL. Имя канала не является чувствительным к регистру.

    Сервер должен быть запущен с опцией --enable-named-pipe, чтобы включить соединения именованного канала.

  • --ssl*

    Опции, которые начинаются на --ssl, используются для того, чтобы основать безопасное соединение с сервером, используя SSL, если сервер сконфигурирован с поддержкой SSL. Для деталей см. раздел 7.4.5.

  • --tls-version=protocol_list

    Протоколы разрешены клиентом для зашифрованных соединений. Значение: список разделенных запятой значений, содержащий одно или более имен протокола. Протоколы, которые могут быть названы по имени в этой опции, зависят от библиотеки SSL, использовавшейся, чтобы собрать MySQL. Для деталей см. раздел 7.4.3.

  • --user=user_name , -u user_name

    Имя пользователя учетной записи MySQL, которую Вы хотите использовать. Имя пользователя по умолчанию ODBC в Windows или Ваше имя для входа в систему в Unix.

Возможно определить различные значения по умолчанию, которые будут использоваться, когда Вы делаете соединение так, чтобы Вы не вводили их в командную строку каждый раз, когда Вы вызываете программу клиента. Это может быть сделано несколькими способами:

  • Вы можете определить параметры соединения в секции [client] файла опций. Соответствующий раздел файла мог бы быть похожим на это:

    [client]
    host=host_name
    user=user_name
    password=your_pass
    
    Раздел 5.2.6 обсуждает файлы опций.
  • Вы можете определить некоторые параметры соединения, используя переменные окружения. Хост может быть определен для использования mysql через MYSQL_HOST. Имя пользователя MySQL может быть определено, используя USER (только в Windows). Пароль может быть определен, используя MYSQL_PWD, хотя это опасно: см. раздел 7.1.2.1. Для списка переменных см. раздел 5.9.

5.2.3. Определение опций программы

Есть несколько способов определить опции для программ MySQL:

  • Перечислите опции в командной строке после названия программы. Это характерно для опций, которые относятся к определенному вызову.

  • Перечислите опции в файле опции, который читает программа, когда она запускается. Это характерно для опций, которые Вы хотите использовать каждый раз, когда это работает.
  • Перечислите опции в переменных окружения (см. раздел 5.2.10). Этот метод полезен для опций, которые Вы хотите применить каждый раз выполнения программы. Практически, файлы опции используются с этой целью, но раздел 6.7.3 обсуждает одну ситуацию, в которой переменные окружения могут быть очень полезными. Это описывает удобный метод, который использует такие переменные, чтобы определить номер порта TCP/IP и файл сокета Unix для сервера и для программ клиента.

Опции обработаны в таком порядке, что если опция определена многократно, последнее возникновение имеет приоритет. Следующая команда заставляет mysql соединяться с сервером на localhost:

shell> mysql -h example.com -h localhost
Если есть конфликт или даны связанные опции, более поздние опции имеют приоритет перед более ранними опциями. Следующая команда не выполняет mysql в режиме no column names:
shell> mysql --column-names --skip-column-names

Программы MySQL определяют, какие опции даны сначала, просматривая переменные окружения, затем обрабатывая файлы опции, а затем проверяя командную строку. Это означает, что у переменных окружения есть самый низкий приоритет и параметры командной строки самые важные.

Для сервера применяется одно исключение: файл опций mysqld-auto.cnf в каталоге данных обработан последним, таким образом, это имеет приоритет даже перед параметрами командной строки.

Вы можете использовать в своих интересах способ, которым программы MySQL обрабатывают опции, определяя значения опции по умолчанию для программы в файле опции. Это позволяет Вам избежать вводить их каждый раз, когда Вы выполняете программу, позволяя Вам переопределить значения по умолчанию в случае необходимости при использовании параметров командной строки.

5.2.4. Использование опций в командной строке

Опции программы, определенные в командной строке, следуют этим правилам:

  • Опции даны после названия команды.

  • Параметр опции начинается с одного тире или двух тире, в зависимости от того, является ли это краткой формой или длинной формой имени опции. У многих опций есть краткие и подробные формы. Например, -? и --help это краткая и длинная формы опции, которая инструктирует программу MySQL выводить на экран свое сообщение справки.
  • Имена опции являются чувствительными к регистру. -v и -V являются законными и имеют различные значения. Это соответствующие краткие формы опций --verbose и --version .
  • Некоторые опции берут значение после имени опции. Например, -h localhost или --host=localhost задает имя хоста сервера MySQL программы клиента. Значение опции говорит программе, на каком хосте работает сервер.
  • Для длинной опции, которая берет значение, отделите имя опции и значение знаком =. Для короткой опции, которая берет значение, оно может немедленно следовать за опцией или может быть пространство между ними: -hlocalhost и -h localhost равнозначны. Исключение: опция для того, чтобы определить Ваш пароль MySQL. Эта опция может быть дана в подробной форме как --password= pass_val или --password. В последнем случае (без пароля) программа запрашивает у Вас пароль. Опция пароля также может быть дана в краткой форме как -ppass_val или -p. Однако, для краткой формы, если значение пароля дано, оно должно следовать за опцией без пробелов. Причина этого состоит в том, что если пробел есть, у программы нет никакого способа сказать, является ли следующим параметром значение пароля или некоторый другой вид параметра. Значит у следующих двух команд есть два абсолютно различных значения:
    shell> mysql -ptest
    shell> mysql -p test
    
    Первая команда инструктирует mysql использовать значение пароля test, но не определяет базы данных значения по умолчанию. Второе инструктирует mysql запрашивать значение пароля и использовать test как базу данных по умолчанию.
  • В пределах имен опции тире (-) и подчеркивание (_) могут использоваться попеременно. Например, --skip-grant-tables и --skip_grant_tables равнозначны. Однако, ведущие тире не могут быть даны как подчеркивания.
  • Для опций, которые берут числовое значение, оно может быть дано с суффиксом K, M или G (в любом регистре символов), чтобы указать на множитель 1024, 10242 или 10243. Например, следующая команда говорит mysqladmin проверять с помощью ping-запросов сервер 1024 раза с паузой в 10 секунд между каждыми ping:
    shell> mysqladmin --count=1K --sleep=10 ping
    

Значения опции, которые содержат пробелы, должны быть заключены в кавычки, когда даны в командной строке. Например, --execute (-e) может использоваться с mysql, чтобы передать запросы SQL серверу. Когда эта опция используется, mysql выполняет запросы в значении опции и выходит. Запросы должны быть приложены в кавычках. Например, Вы можете использовать следующую команду, чтобы получить список учетных записей пользователей:

shell> mysql -u root -p --execute="SELECT User, Host FROM mysql.user"
Enter password: <******
+------+-----------+
| User | Host      |
+------+-----------+
|      | gigan     |
| root | gigan     |
|      | localhost |
| jon  | localhost |
| root | localhost |
+------+-----------+
shell>

Подробная форма ( --execute) сопровождается знаком =.

Если Вы хотите использовать заключенные в кавычки значения в пределах запроса, то Вы должны будете выйти из внутренних кавычек или использовать в пределах запроса тип кавычек, отличный от используемых, чтобы заключить запрос в кавычки непосредственно. Способности Вашего процессора команд диктуют Ваш выбор для того, можете ли Вы использовать одиночные или двойные кавычки и синтаксис для того, чтобы выйти из символов кавычки. Например, Вы можете использовать двойные кавычки вокруг запроса и одиночные кавычки для каких-либо заключенных в кавычки значений в пределах запроса.

Многократные запросы SQL можно передать в значении опции в командной строке, отделенной точками с запятой:

shell> mysql -u root -p -e "SELECT VERSION();SELECT NOW()"
Enter password: <******
+---------------------+
| VERSION()           |
+---------------------+
| 5.8.0-m17-debug-log |
+---------------------+
+---------------------+
| NOW()               |
+---------------------+
| 2015-11-05 20:00:20 |
+---------------------+

5.2.5. Модификаторы опции программы

Некоторые опции управляют поведением, которое может быть включено или выключено. Например, mysql понимает опцию --column-names , которая определяет, вывести ли на экран строку имен столбцов в начале результатов запроса. По умолчанию эта опция включена. Однако, Вы можете хотеть отключить это в некоторых случаях.

Чтобы отключить имена столбцов, Вы можете определить опцию, используя любую из этих форм:

--disable-column-names
--skip-column-names
--column-names=0
Префиксы --disable и --skip и суффикс =0 все имеют тот же самый эффект: они выключают опцию.

Форма enabled опции может быть определена любым из этих способов:

--column-names
--enable-column-names
--column-names=1
Значения ON, TRUE, OFF и FALSE также признаны за булевы опции (не чувствительны к регистру).

Если опция имеет префикс --loose, программа не выходит с ошибкой, если она не признает опцию, а вместо этого только выпускает предупреждение:

shell> mysql --loose-no-such-option
mysql: WARNING: unknown option '--loose-no-such-option'
Префикс --loose может быть полезным, когда Вы выполняете программы от многократных установок MySQL на той же самой машине и перечисляете опции в файле опции. Опция, которая не может быть признана всеми версиями, может быть дана, используя --loose (или loose в файле опции). Версии программы, которые признают опцию, обычно обрабатывают ее, и версии, которые не признают, выпускают предупреждение и игнорируют это.

Префикс --maximum доступен только для mysqld и разрешает установить предел в максимальное значение для системных переменных сеанса программы клиента. Чтобы сделать это, используйте --maximum с именем переменной. Например, --maximum-max_heap_table_size=32M препятствует тому, чтобы любой клиент применил табличный предел размера кучи больше, чем 32M.

--maximum предназначен для использования с системными переменными, у которых есть значение сеанса. Если применяется к системной переменной, у которой есть только глобальное значение, ошибка происходит. Например, с --maximum-query_cache_size=4M сервер производит эту ошибку:

Maximum value of 'query_cache_size' cannot be set

5.2.6. Использование файлов опций

Большинство программ MySQL может считать опции запуска из файлов опции. Файлы опции обеспечивают удобный способ определить обычно используемые опции так, чтобы они не были введены в командную строку каждый раз, когда Вы выполняете программу.

Чтобы определить, читает ли программа файлы опции, вызовите ее с --help. Для mysqld используйте --verbose и --help. Если файлы опции читаются, сообщение справки указывает, какие файлы она ищет и какие группы опции признает.

Программа MySQL с --no-defaults не читает файлов опции кроме .mylogin.cnf.

Сервер с отключенной переменной persisted_globals_load не читает mysqld-auto.cnf.

Много файлов опции это файлы простого текста, создаваемые с использованием любого текстового редактора. Исключения:

  • .mylogin.cnf, который содержит опции входа в систему. Это зашифрованный файл, создаваемый mysql_config_editor . См. раздел 5.6.7. login path является группой опции, которая разрешает только определенные опции: host, user, password, port и socket. Программы клиента определяют, который путь входа в систему читать из .mylogin.cnf через --login-path .

    Чтобы определить альтернативное имя файла пути входа в систему, установите переменную окружения MYSQL_TEST_LOGIN_FILE. Эта переменная используется тестовым скриптом mysql-test-run.pl, но также признана mysql_config_editor и клиентами MySQL, такими как mysql, mysqladmin и т.д.

  • Файл mysqld-auto.cnf лежит в каталоге данных. Это файл формата JSON содержит сохраненные системные настройки переменных. Это создается сервером после выполнения SET PERSIST, см. раздел 14.7.4.1. Управление mysqld-auto.cnf должно быть оставлено серверу и не выполнено вручную.

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

В Windows программы MySQL читают опции запуска из файлов, показанных в следующей таблице, в указанном порядке (главные файлы считаны сначала, файлы, читаемые позже, имеют приоритет).

Таблица 5.1. Чтение файлов опций на системах Windows

Имя файлаЦель
%PROGRAMDATA%\MySQL\MySQL Server 8.0\my.ini, %PROGRAMDATA%\MySQL\MySQL Server 8.0\my.cnfГлобальные опции
%WINDIR%\my.ini, %WINDIR%\my.cnfГлобальные опции
C:\my.ini, C:\my.cnf Глобальные опции
BASEDIR\my.ini, BASEDIR\my.cnf Глобальные опции
defaults-extra-file Файл, определенный с --defaults-extra-file, если есть
%APPDATA%\MySQL\.mylogin.cnf Опции пути входа в систему (только клиенты)
DATADIR\mysqld-auto.cnf Опции, сохраненные с SET PERSIST (только для сервера)

В предыдущей таблице %PROGRAMDATA% представляет каталог файловой системы, который содержит данные приложения для всех пользователей хоста. Этот путь по умолчанию C:\ProgramData в Microsoft Windows Vista и выше или C:\Documents and Settings\All Users\Application Data в старых версиях Microsoft Windows.

%WINDIR% представляет местоположение Вашего каталога Windows. Это обычно C:\WINDOWS. Используйте следующую команду, чтобы определить точное местоположение:

C:\> echo %WINDIR%
%APPDATA% представляет значение каталога данных приложений Windows. Используйте следующую команду, чтобы определить точное местоположение:
C:\> echo %APPDATA%
BASEDIR представляет каталог установки MySQL. Когда MySQL 8.0 был установлен, используя MySQL Installer, это, как правило, C:\PROGRAMDIR\MySQL\MySQL 8.0 Server, где PROGRAMDIR представляет каталог программ (обычно Program Files в Windows), См. раздел 2.3.3.

DATADIR представляет каталог данных MySQL. При использовании mysqld-auto.cnf, его значение по умолчанию: местоположение каталога данных, встроенное, когда MySQL был собран, но может быть изменено через опцию --datadir, определенную в файле опции или параметром командной строки, обработанным прежде mysqld-auto.cnf.

В Unix программы MySQL читают опции запуска из файлов, показанных в следующей таблице, в указанном порядке (главные файлы считаны сначала, файлы, читаемые позже, имеют приоритет).

В Unix MySQL игнорирует конфигурационные файлы, которые являются перезаписываемыми всеми. Это сделано намеренно, как мера по безопасности.

Таблица 5.2. Чтение файлов опций в Unix

Имя файлаСмысл
/etc/my.cnfГлобальные опции
/etc/mysql/my.cnfГлобальные опции
SYSCONFDIR/my.cnf Глобальные опции
$MYSQL_HOME/my.cnf Определенные для сервера опции (только сервер)
defaults-extra-file Файл, определенный --defaults-extra-file, если есть
~/.my.cnf Определенные для пользователя опции
~/.mylogin.cnf Определенные для пользователя опции пути входа в систему (только клиенты)
DATADIR/mysqld-auto.cnf Опции, сохраненные SET PERSIST (только сервер)

В предыдущей таблице ~ представляет корневой каталог текущего пользователя (значение $HOME).

SYSCONFDIR представляет каталог, определенный опцией SYSCONFDIR CMake, когда MySQL был создан. По умолчанию это каталог etc, расположенный под каталогом установки.

MYSQL_HOME это переменная окружения, содержащая путь к каталогу, в котором лежит определенный для сервера my.cnf. Если MYSQL_HOME не установлен и Вы запускаете сервер, используя mysqld_safe , то mysqld_safe устанавливает это в BASEDIR, базовый каталог MySQL.

DATADIR представляет каталог данных MySQL. При использовании mysqld-auto.cnf, значение по умолчанию: местоположение каталога данных, встроенное, когда MySQL был собран, но может быть изменено через опцию --datadir, определенную в файле опции или параметр командной строки, обработанный прежде mysqld-auto.cnf.

Если многократные экземпляры опции найдены, последний имеет приоритет, с одним исключением: для mysqld, применяется первый экземпляр опции --user в качестве предосторожности безопасности, чтобы предотвратить пользователя, определенного в файле опции от переопределения в командной строке.

Следующее описание синтаксиса файла опции относится к файлам, которые Вы редактируете вручную. Это исключает .mylogin.cnf, который зашифрован и создается, используя mysql_config_editor и mysqld-auto.cnf, который сервер создает в формате JSON.

Любая длинная опция, которая может быть дана в командной строке, выполняя программу MySQL, может быть дана в файле опции также. Чтобы получить список доступных параметров для программы, выполните ее с --help. Для mysqld используйте --verbose и --help.

Синтаксис для того, чтобы определить опции в файле опции подобен синтаксису командной строки (см. раздел 5.2.4). Однако, в файле опции, Вы опускаете начальные тире и определяете только одну опцию на строку. Например, --quick и --host=localhost в командной строке должны быть определены как quick и host=localhost на отдельных строках в файле опции. Определить опцию формы --loose-opt_name в файле опции можно как loose-opt_name .

Проигнорированы пустые строки в файлах опции. Непустые строки могут принять любую из следующих форм:

  • #comment, ;comment

    Строки комментария начинаются # или ;. # может быть в середине строки также.

  • [group]

    group задает название программы или группы, для которой Вы хотите установить опции. После групповой строки любые устанавливающие опцию строки относятся к названной группе до конца файла опции или другой групповой строки. Названия группы опции не являются чувствительными к регистру.

  • opt_name

    Это эквивалентно --opt_name в командной строке.

  • opt_name=value

    Это эквивалентно --opt_name=value в командной строке. В файле опции у Вас могут быть пробелы вокруг =. Значение произвольно может быть приложено в пределах одиночных или двойных кавычек, что полезно, если значение содержит символ комментария #.

Начальные и конечные пробелы автоматически удалены из имен опции и значений.

Вы можете использовать escape-последовательности \b, \t, \n, \r, \\ и \s в значениях опции, чтобы представить клавишу Backspace, tab, newline, carriage return, backslash и пробел. В файлах опции применяются эти правила:

  • Наклонная черта влево, сопровождаемая допустимым символом escape-последовательности, преобразована в символ, представленный последовательностью. Например, \s преобразован в пробел.

  • Наклонная черта влево, не сопровождаемая допустимым символом escape-последовательности, остается неизменной. Например, \S сохранена как есть.

Предыдущие правила означают, что буквальная наклонная черта влево может быть дана как \\ или \, если это не сопровождается допустимым символом escape-последовательности.

Правила для escape-последовательностей в файлах опции отличаются от правил для escape-последовательностей в строковых литералах в запросах SQL. В последнем контексте, если x не допустимый символ escape-последовательности, \x становится x вместо \x. См. раздел 10.1.1.

Правила экранировки для значений файла опции являются особенно подходящими для путей Windows, которые используют \ как разделитель пути. Разделитель в пути Windows должен быть написан как \\, если это сопровождается символом escape-последовательности. Это может быть написано как \\ или \. Альтернативно / может использоваться в путях Windows и будет обработан как \. Предположите, что Вы хотите определить основной каталог C:\Program Files\MySQL\MySQL Server 8.0 в файле опции. Это может быть сделано несколькими способами. Некоторые примеры:

basedir="C:\Program Files\MySQL\MySQL Server 8.0"
basedir="C:\\Program Files\\MySQL\\MySQL Server 8.0"
basedir="C:/Program Files/MySQL/MySQL Server 8.0"
basedir=C:\\Program\sFiles\\MySQL\\MySQL\sServer\s8.0
Если название группы опции то же, что и название программы, опции в группе применяются определенно к этой программе. Например, группы [mysqld] и [mysql] относятся к серверу mysqld и программе-клиенту mysql .

Группа [client] считана всеми программами клиента (но не mysqld). Это позволяет Вам определить опции, которые относятся ко всем клиентам. Например, [client] соответствующая группа, чтобы определить пароль для того, чтобы соединиться с сервером. Удостоверьтесь, что файл опции доступен только Вам, чтобы другие люди не могли обнаружить Ваш пароль. Убедитесь, что вставили опцию в группу [client], если это не признано всеми программами клиента, которые Вы используете. Программы, которые не понимают опцию, выходят после отображения сообщения об ошибке, если Вы пытаетесь выполнить их.

Вот типичный глобальный файл опции:

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M

[mysqldump]
quick
Вот типичный пользовательский файл опции:
[client]
# The following password will be sent to all standard MySQL clients
password="my password"

[mysql]
no-auto-rehash
connect_timeout=2
Чтобы создать группы опции только для чтения серверами mysqld от определенного ряда выпуска MySQL, используйте группы с названиями [mysqld-5.7], [mysqld-8.0] и т.д. Следующая группа указывает, что параметр sql_mode должен использоваться только серверами MySQL с номера версии 8.0.x:
[mysqld-8.0]
sql_mode=TRADITIONAL
Возможно использовать директивы !include в файлах опции, чтобы включать другие файлы опции и !includedir, чтобы искать определенные каталоги с файлами опций. Например, чтобы включать файл /home/mydir/myopt.cnf используйте следующее:
!include /home/mydir/myopt.cnf
Искать в каталоге /home/mydir и читать файлы опции, найденные там, можно так:
!includedir /home/mydir
MySQL не дает гарантии порядка, в котором будут считаны файлы опции в каталоге.

Любые файлы, которые будут найдены и включены через !includedir в Unix должны иметь имена файла, заканчивающиеся .cnf. В Windows проверяются файлы с расширениями .ini или .cnf.

Напишите содержание включенного файла опции как любой другой файл опции. Таким образом, это должно содержать группы опций, каждой из которых предшествует строка [group], которая указывает на программу, к которой применяются опции.

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

!include /home/mydir/myopt.cnf
И предположите, что /home/mydir/myopt.cnf похож на это:
[mysqladmin]
force

[mysqld]
key_buffer_size=16M
Если my.cnf обработан mysqld, используется только группа [mysqld] в /home/mydir/myopt.cnf. Если файл обработан mysqladmin , используется только группа [mysqladmin]. Если файл обработан какой-либо другой программой, никакие опции в /home/mydir/myopt.cnf не используются.

!includedir обработана так же, за исключением того, что считаны все файлы опции в названном каталоге.

Если файл опции содержит !include или !includedir, файлы, названные этими директивами, обработаны всякий раз, когда файл опции обработан, независимо от того, где они появляются в файле.

5.2.7. Параметры командной строки и обработка файла опции

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

Определяя имена файла, избегайте использования символа ~, потому что он мог бы интерпретироваться не так, как Вы ожидаете.

  • --defaults-extra-file=file_name

    Считайте этот файл опции после глобального файла опции, но (в Unix) перед пользовательским файлом опции и (на всех платформах) перед файлом пути входа в систему. Для информации о порядке, в котором используются файлы опции, см. раздел 5.2.6. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный, а не полный путь.

  • --defaults-file=file_name

    Используйте только данный файл опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный, а не полный путь.

    Исключения: Даже с --defaults-file, mysqld читает mysqld-auto.cnf и программы клиента читают .mylogin.cnf.

  • --defaults-group-suffix=str

    Считайте не только обычные группы опции, но также и группы с обычными именами и суффиксом str. Например, mysql обычно читает группы [client] и [mysql]. Если дана опция --defaults-group-suffix=_other, mysql также читает группы [client_other] и [mysql_other].

  • --login-path=name

    Считайте опции из названного пути входа в систему в .mylogin.cnf. Вход в систему является группой опций, содержащей опции, которые определяют, с каким сервером MySQL соединиться и то, как авторизоваться. Чтобы создать или изменить файл пути входа в систему, используйте mysql_config_editor , см. раздел 5.6.7.

    Программа клиента читает группу опций, соответствующую названному пути входа в систему, в дополнение к группам опций, которые программа читает по умолчанию. Рассмотрите эту команду:

    shell> mysql --login-path=mypath
    
    По умолчанию mysql читает группы опций [client] и [mysql]. Так для показанной команды mysql читает [client] и [mysql] из других файлов опции и [client], [mysql] и [mypath] из файла пути входа в систему.

    Программы клиента читают файл пути входа в систему даже когда задана опция --no-defaults .

    Чтобы определить дополнительное имя файла пути входа в систему, установите переменную окружения MYSQL_TEST_LOGIN_FILE.

  • --no-defaults

    Не читайте файлы опции. Если запуск программы терпит неудачу из-за чтения неизвестных опций из файла опции, --no-defaults может использоваться, чтобы препятствовать тому, чтобы они были считаны.

    Исключение: программы клиента читают файл пути входа в систему .mylogin.cnf, если он существует, даже когда --no-defaults используется. Это разрешает паролям быть определенными более безопасным способом, чем в командной строке, даже если есть --no-defaults (.mylogin.cnf создается mysql_config_editor, см. раздел 5.6.7).

  • --print-defaults

    Напечатайте название программы и все опции, которые она получает из файлов опции. Значения пароля замаскированы.

5.2.8. Использование опций, чтобы установить переменные программы

У многих программ MySQL есть внутренние переменные, которые могут быть установлены во время выполнения, используя. См. разделы 14.7.4.1 и 6.1.6.

Большинство этих переменных программы также может быть установлено при запуске сервера при использовании того же самого синтаксиса, который относится к определению опций программы. Например, mysql имеет переменную max_allowed_packet, которая управляет максимальным размером коммуникационного буфера. Установить max_allowed_packet для mysql в 16MB можно, применив любую из следующих команд:

shell> mysql --max_allowed_packet=16777216
shell> mysql --max_allowed_packet=16M
Первая команда определяет значение в байтах. Вторая определяет значение в мегабайтах. Для переменных, которые берут числовое значение, оно может быть дано с суффиксом K, M или G (в любом регистре), чтобы указать на множитель 1024, 10242 или 10243. Например, когда устанавливается max_allowed_packet, суффиксы указывают на модули килобайты, мегабайты или гигабайты.

В файле опции переменные настройки даны без ведущих тире:

[mysql]
max_allowed_packet=16777216
Или:
[mysql]
max_allowed_packet=16M
Если Вам нравится, подчеркивания в имени переменной могут быть определены как тире. Следующие группы опции эквивалентны. Обе устанавливают размер ключевого буфера сервера в 512 МБ:
[mysqld]
key_buffer_size=512M

[mysqld]
key-buffer-size=512M
Переменная может быть определена при написании полностью или как любая однозначная приставка. Например, max_allowed_packet может быть установлена для mysql как --max_a, но не как --max потому, что последний вариант неоднозначен:
shell> mysql --max=1000000
mysql: ambiguous option '--max=1000000' (max_allowed_packet, max_join_size)
Знайте, что использование переменных приставок может вызвать проблемы, когда новые переменные осуществлены для программы. Приставка, которая однозначна теперь, могла бы стать неоднозначной в будущем.

Суффиксы для того, чтобы определить множитель значения могут использоваться, устанавливая переменную при запуске сервера, но не значение с SET во время выполнения. С другой стороны, с SET, Вы можете назначить значение переменной, используя выражение, которое не является истиной, когда Вы устанавливаете переменную при запуске сервера. Например, первая из следующих строк является законной при запуске сервера, но не вторая:

shell> mysql --max_allowed_packet=16M
shell> mysql --max_allowed_packet=16*1024*1024
Наоборот, вторая из следующих строк является законной во время выполнения, но не первая:
mysql> SET GLOBAL max_allowed_packet=16M;
mysql> SET GLOBAL max_allowed_packet=16*1024*1024;

5.2.9. Значения по умолчанию опции, опции, ожидаемые значения и знак =

В соответствии с соглашением, длинные формы опций, которые назначают значение, написаны со знаком =:

shell> mysql --host=tonfisk --user=jon
Для опций, которые требуют значение (то есть, не имеют значения по умолчанию), знака равенства не требуется и таким образом следующее также допустимо:
shell> mysql --host tonfisk --user jon
В обоих случаях mysql пытается соединиться с сервером MySQL, работающим на хосте, названном tonfisk, с использованием учетной записи с именем пользователя jon.

Из-за этого поведения могут иногда возникать проблемы, когда никакое значение не обеспечено для опции, которая его ожидает. Рассмотрите следующий пример, где пользователь соединяется с сервером MySQL, работающим на хосте tonfisk как пользователь jon:

shell> mysql --host 85.224.35.45 --user jon
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 8.0.1 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> SELECT CURRENT_USER();
+----------------+
| CURRENT_USER() |
+----------------+
| jon@%          |
+----------------+
1 row in set (0.00 sec)
Исключение необходимого значения для одного из этих параметров приводит к такой ошибке:
shell> mysql --host 85.224.35.45 --user
mysql: option '--user' requires an argument
В этом случае mysql не был способен найти значение после опции --user, потому что ничто не прибыло после этого в командную строку. Однако, если Вы опускаете значение для опции, которая не является последней опцией, которая будет использоваться, Вы получаете иную ошибку, которую Вы не можете ожидать:
shell> mysql --host --user jon
ERROR 2005 (HY000):
Unknown MySQL server host '--user' (1)
Поскольку mysql предполагает, что любая строка после --host это имя хоста, --host --user интерпретируется как --host=--user, клиент пытается соединиться с сервером MySQL, работающим на хосте, названном --user.

Опции, имеющие значения по умолчанию, всегда требуют знак равенства, назначая значение, будучи не в состоянии сделать это, они выдают ошибку. Например, у опции сервера MySQL --log-error есть значение по умолчанию host_name.err, где host_name это имя хоста, на котором работает MySQL. Предположите, что Вы выполняете MySQL на компьютере, имя хоста которого tonfisk, и рассмотрите следующий запрос mysqld_safe :

shell> mysqld_safe &
[1] 11699
shell> 080112 12:53:40 mysqld_safe Logging to '/usr/local/mysql/var/tonfisk.err'.
          080112 12:53:40 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
shell>
После закрытия сервера, перезапустите это следующим образом:
shell> mysqld_safe --log-error &
[1] 11699
shell> 080112 12:53:40 mysqld_safe Logging to '/usr/local/mysql/var/tonfisk.err'.
          080112 12:53:40 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
shell>
Результат тот же самый, с тех пор, как --log-error не сопровождается ничем больше на командной строке и поставляет свое собственное значение по умолчанию. Символ & говорит операционной системе выполнять MySQL в фоне, это проигнорировано MySQL непосредственно. Теперь предположим, что Вы хотите зарегистрировать ошибки в файле my-errors.err. Вы могли бы попытаться запустить сервер с --log-error my-errors, но это не имеет намеченного эффекта, как показано здесь:
shell> mysqld_safe --log-error my-errors &
[1] 31357
shell> 080111 22:53:31 mysqld_safe Logging to '/usr/local/mysql/var/tonfisk.err'.
          080111 22:53:32 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
          080111 22:53:34 mysqld_safe mysqld from pid file /usr/local/mysql/var/tonfisk.pid ended
[1]+  Done./mysqld_safe --log-error my-errors
Сервер попытался начать использовать /usr/local/mysql/var/tonfisk.err как журнал ошибок, но завершился. Изучение последних немногих строк этого файла показывает причину:
shell> tail /usr/local/mysql/var/tonfisk.err
2013-09-24 T 15:36:22.278034Z 0 [ERROR] Too many arguments (first extra is 'my-errors').
2013-09-24 T 15:36:22.278059Z 0 [Note] Use --verbose --help to get a list of available options!
2013-09-24 T 15:36:22.278076Z 0 [ERROR] Aborting
2013-09-24 T 15:36:22.279704Z 0 [Note] InnoDB: Starting shutdown...
2013-09-24 T 15:36:23.777471Z 0 [Note] InnoDB: Shutdown completed; log sequence number 2319086
2013-09-24 T 15:36:23.780134Z 0 [Note] mysqld: Shutdown complete
Так как --log-error поставляет значение по умолчанию, Вы должны использовать знак равенства, чтобы назначить иное значение, как показано здесь:
shell> mysqld_safe --log-error=my-errors &
[1] 31437
shell> 080111 22:54:15 mysqld_safe Logging to '/usr/local/mysql/var/my-errors.err'.
          080111 22:54:15 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
shell>
Теперь сервер был запущен успешно, и регистрирует ошибки в файл /usr/local/mysql/var/my-errors.err.

Подобные проблемы могут возникнуть, определяя значения опции в файлах опции. Например, рассмотрите my.cnf, который содержит следующее:

[mysql]
host
user
Когда mysql читает этот файл, эти записи разобраны как --host --user или --host=--user, с результатом, показанным здесь:
shell> mysql
ERROR 2005 (HY000): Unknown MySQL
server host '--user' (1)
Однако, в файлах опции знак равенства не принят. Предположите файл my.cnf как показано здесь:
[mysql]

user jon
Попытка запустить mysql в этом случае вызывает иную ошибку:
shell> mysql
mysql: unknown option '--user jon'
Подобная ошибка произошла бы, если Вы должны были написать host tonfisk в файле опции, а не host=tonfisk. Вместо этого Вы должны использовать знак равенства:
[mysql]

user=jon
Теперь попытка входа в систему удается:
shell> mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 8.0.1 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> SELECT USER();
+---------------+
| USER()        |
+---------------+
| jon@localhost |
+---------------+
1 row in set (0.00 sec)
Это не то же самое поведение как с командной строкой, где знак равенства не требуется:
shell> mysql --user jon --host tonfisk
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 8.0.1 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> SELECT USER();
+---------------+
| USER()        |
+---------------+
| jon@tonfisk   |
+---------------+
1 row in set (0.00 sec)
Определение опции, требующей значения, без указания значения в файле опции, заставляет сервер прерываться с ошибкой. Предположите такой файл my.cnf:
[mysqld]
log_error
relay_log
relay_log_index
Это заставляет сервер терпеть неудачу на запуске, как показано здесь:
shell> mysqld_safe &

130924 10:41:46 mysqld_safe Logging to '/home/jon/bin/mysql/var/tonfisk.err'.
130924 10:41:46 mysqld_safe Starting mysqld daemon with databases from /home/jon/bin/mysql/var
130924 10:41:47 mysqld_safe mysqld from pid file /home/jon/bin/mysql/var/tonfisk.pid ended
Опция --log-error не требует параметра, однако, --relay-log требует, как показано в журнале ошибок (который в отсутствие указанного значения, по умолчанию datadir/ hostname.err):
shell> tail -n 3 ../var/tonfisk.err

130924 10:41:46 mysqld_safe Starting mysqld daemon with databases from
                /home/jon/bin/mysql/var
2013-09-24 T 15:41:47.217180Z 0 [ERROR] /home/jon/bin/mysql/libexec/mysqld:
             option '--relay-log' requires an argument
2013-09-24 T 15:41:47.217479Z 0 [ERROR] Aborting
Это изменение от предыдущего поведения, где сервер интерпретировал бы последние две строки в примере my.cnf как --relay-log=relay_log_index и создавал бы файл системного журнала реле, используя relay_log_index как базовое имя (Bug #25192).

5.2.10. Установка переменных окружения

Переменные окружения могут быть установлены в командной строке или в файле. Чтобы установить переменную надолго, Вы можете установить это в файле запуска или при использовании интерфейса, обеспеченного Вашей системой с этой целью. Консультируйтесь с документацией для своего интерпретатора команд для определенных деталей. Раздел 5.9 перечисляет все переменные окружения, которые затрагивают работу программы MySQL.

Чтобы определить значение для переменной окружения, используйте синтаксис, подходящий для Вашего процессора команды. Например, в Windows Вы можете установить переменную USER, чтобы определить Ваше имя учетной записи MySQL. Чтобы сделать так, используйте этот синтаксис:

SET USER=your_name
Синтаксис в Unix зависит от Вашей оболочки. Предположите, что Вы хотите определить номер порта TCP/IP, используя переменную MYSQL_TCP_PORT. Типичный синтаксис (что касается sh, ksh, bash, zsh и т.п.):
MYSQL_TCP_PORT=3306
export MYSQL_TCP_PORT
Первая команда устанавливает переменную, команда export экспортирует переменную в окружающую среду оболочки так, чтобы ее значение стало доступным для MySQL и других процессов.

Для csh и tcsh используйте setenv, чтобы сделать переменную оболочки доступной для окружающей среды:

setenv MYSQL_TCP_PORT 3306
Команды, чтобы установить переменные окружения, могут быть выполнены в Вашей командной строке, чтобы немедленно вступить в силу, но настройки сохраняются только, пока Вы не выходите из системы. Чтобы иметь эти настройки каждый раз, когда Вы входите в систему, используйте интерфейс, обеспеченный Вашей системой, или поместите соответствующую команду в файле запуска, который Ваш интерпретатор команд читает каждый раз, когда запускается.

В Windows Вы можете установить переменные окружения, используя System Control Panel (в Advanced).

В Unix типичные файлы запуска оболочки .bashrc или .bash_profile в bash или .tcshrc для tcsh.

Предположите, что Ваши программы MySQL установлены в /usr/local/mysql/bin и Вы хотите облегчить вызов этих программ. Чтобы сделать это, установите значение переменной окружения PATH, чтобы включать тот каталог. Например, если Ваша оболочка bash, добавьте следующую строку к Вашему файлу .bashrc:

PATH=${PATH}:/usr/local/mysql/bin
bash использует различные файлы запуска для оболочек входа в систему и nonlogin-оболочек, таким образом, Вы могли бы хотеть добавить установку в .bashrc для оболочек входа в систему и в .bash_profile для остальных, чтобы установить PATH независимо.

Если Ваша оболочка tcsh, добавьте следующую строку к Вашему .tcshrc:

setenv PATH ${PATH}:/usr/local/mysql/bin
Если соответствующий файл запуска не существует в Вашем корневом каталоге, создайте его.

После изменения Вашего PATH, откройте новую консоль в Windows или войдите в систему снова в Unix так, чтобы установка вступила в силу.

5.3. Сервер MySQL и программы запуска сервера

Этот раздел описывает mysqld , сервер MySQL, и несколько программ, которые используются, чтобы запустить сервер.

5.3.1. mysqld, собственно сервер MySQL

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

Когда сервер MySQL запускается, он слушает сетевые соединения из программ клиента и управляет доступом к базам данных от имени тех клиентов.

У mysqld есть много опций, которые могут быть определены при запуске. Для полного списка опций выполните:

shell> mysqld --verbose --help
У сервера MySQL также есть ряд системных переменных, которые затрагивают работу. Системные переменные могут быть установлены при запуске сервера, многие из них могут быть изменены во время выполнения, чтобы произвести динамическое реконфигурирование сервера. У сервера MySQL также есть ряд переменных состояния, которые предоставляют информацию о работе. Вы можете контролировать эти переменные состояния, чтобы получить доступ к техническим характеристикам во время выполнения.

Для полного описания опций команды MySQL Server, системных переменных и переменных состояния см. раздел 6.1. Для информации об установке MySQL и начальной конфигурации см. главу 2.

5.3.2. mysqld_safe скрипт запуска MySQL

mysqld_safe это рекомендуемый способ запустить mysqld в Unix. mysqld_safe добавляет некоторые сервисы системы безопасности, такие как перезапуск сервера, когда ошибка происходит, и журналирование информации во время выполнения в файл журнала ошибок. Описание регистрации ошибок дано позже в этом разделе.

Для установки MySQL, используя дистрибутив RPM, запуск сервера и завершение работы управляется systemd на нескольких платформах Linux. На этих платформах больше не установлен mysqld_safe , потому что это не нужно. Для получения дополнительной информации см. раздел 2.5.9.

mysqld_safe пытается запустить mysqld. Чтобы переопределить поведение по умолчанию и определить явно название сервера, надо указать опцию --mysqld или --mysqld-version в mysqld_safe. Вы можете также использовать --ledir, чтобы указать на каталог, где mysqld_safe должен искать сервер.

Многие из опций mysqld_safe те же самые, как опции mysqld. См. раздел 6.1.4.

Опции, неизвестные , mysqld_safe передаются mysqld, если они определены в командной строке, но проигнорированы, если они определены в группе [mysqld_safe] файла опции. См. раздел 5.2.6.

mysqld_safe читает все опции из групп [mysqld], [server] и [mysqld_safe] в файлах опции. Например, если Вы определяете [mysqld] примерно так, mysqld_safe будет находить и использовать опцию --log-error :

[mysqld]
log-error=error.log
Для обратной совместимости mysqld_safe также читает [safe_mysqld], но Вы должны переименовать такие разделы в [mysqld_safe].

mysqld_safe принимает опции в командной строке и в файлах опции, как описано в следующей таблице. Для информации о файлах опции, используемых программами MySQL, см. раздел 5.2.6.

Таблица 5.3. Опции mysqld_safe

ФорматОписание
--basedirПуть к каталогу установки MySQL
--core-file-sizeРазмер основного файла, который mysqld должен быть в состоянии создать
--datadirПуть к каталогу данных
--defaults-extra-fileЧитать файл опции в дополнение к обычным файлам опции
--defaults-fileНазванный файл опции только для чтения
--helpСообщение справки и выход
--ledirПуть к каталогу, где сервер расположен
--log-errorЖурналировать ошибки при записи к названному файлу
--malloc-libАльтернатива библиотеки malloc для mysqld
--mysqldНазвание программы сервера (в каталоге ledir)
--mysqld-safe-log-timestampsФормат метки времени для того, чтобы зарегистрировать
--mysqld-versionСуффикс для названия программы сервера
--niceИспользуйте nice, чтобы установить приоритет планирования сервера
--no-defaultsНе читать файлы опций
--open-files-limitЧисло файлов, которые mysqld должен быть в состоянии открыть
--pid-fileПуть к файлу ID процесса
--plugin-dirКаталог, где плагины установлены
--port Номер порта, на котором слушать соединения TCP/IP
--skip-kill-mysqldНе пытаться уничтожить беспризорные процессы mysqld
--skip-syslogНе делать сообщений ошибки при записи к syslog, использовать файл журнала ошибок
--socket Файл сокета, на котором слушать сокетные соединения Unix
--syslog Сообщения ошибки при записи в syslog
--syslog-tagСуффикс тега для сообщений, написанных в syslog
--timezoneУстановить переменную окружения часового пояса TZ к названному значению
--user Выполнить mysqld как пользователь, имеющий имя user_name или числовой идентификатор ID user_id
  • --help

    Вывести на экран сообщение справки и выйти.

  • --basedir= dir_name

    Путь к каталогу установки MySQL.

  • --core-file-size=size

    Размер основного файла, который mysqld должен быть в состоянии создать. Значение опции передают ulimit -c.

  • --datadir=dir_name

    Путь к каталогу данных.

  • --defaults-extra-file=file_name

    Название файла опции, который будет считан в дополнение к обычным файлам опции. Это должно быть первой опцией в командной строке, если используется. Если файл не будет существовать или будет иначе недоступен, то сервер выйдет с ошибкой.

  • --defaults-file=file_name

    Название файла опции, который будет считан вместо обычных файлов опции. Это должно быть первой опцией в командной строке, если используется.

  • --ledir=dir_name

    Если mysqld_safe не может найти сервер, используйте эту опцию, чтобы указать на путь к каталогу, где сервер расположен.

  • --log-error=file_name

    Написать журнал ошибок в данный файл. См. раздел 6.4.2.

  • --mysqld-safe-log-timestamps

    Эта опция управляет форматом timestamp в выводе журнала, произведенном mysqld_safe . Следующий список описывает разрешенные значения. Для любого другого значения mysqld_safe регистрирует предупреждение и использует формат UTC.

    • UTC, utc

      ISO 8601 UTC (аналогично --log_timestamps=UTC для сервера). Это значение по умолчанию.

    • SYSTEM, system

      Формат местного времени ISO 8601 (то же самое, как --log_timestamps=SYSTEM для сервера).

    • HYPHEN, hyphen

      YY-MM-DD h:mm:ss, как в mysqld_safe для MySQL 5.6.

    • LEGACY, legacy

      YYMMDD hh:mm:ss, как в mysqld_safe до MySQL 5.6.

  • --malloc-lib=[lib_name]

    Название библиотеки, чтобы использовать для распределения памяти вместо системной библиотеки malloc(). Значение опции должно быть одним из каталогов /usr/lib, /usr/lib64, /usr/lib/i386-linux-gnu или /usr/lib/x86_64-linux-gnu.

    --malloc-lib работает, изменяя значение переменной окружающей среды LD_PRELOAD, чтобы затронуть динамическое соединение, чтобы позволить загрузчику найти библиотеку распределения памяти, когда запускается mysqld:

    • Если опция не дана или дана без значения (--malloc-lib= ), LD_PRELOAD не изменена, и никакая попытка не будет предпринята, чтобы использовать tcmalloc.

    • Если опция дана как --malloc-lib=tcmalloc, то mysqld_safe ищет библиотеку tcmalloc в /usr/lib. Если tmalloc найдена, путь добавлен к началу LD_PRELOAD для mysqld. Если tcmalloc не найдена, mysqld_safe прерывается с ошибкой.
    • Если опция дана как --malloc-lib= /path/to/some/library, то весь путь добавлен к началу LD_PRELOAD. Если путь указывает на несуществующий или нечитабельный файл, mysqld_safe прекращает работу с ошибкой.
    • Для случаев, где mysqld_safe добавляет путь к LD_PRELOAD, это добавляет путь к началу любого существующего значения, которое уже имеет переменная.

    На системах, которые управляют сервером, используя systemd, mysqld_safe недоступен. Вместо этого определите библиотеку распределения, устанавливая LD_PRELOAD в /etc/sysconfig/mysql.

    Пользователи Linux могут использовать библиотеку libtcmalloc_minimal.so на любой платформе, для которой пакет tcmalloc установлен в /usr/lib, добавляя эти строки к файлу my.cnf:

    [mysqld_safe]
    malloc-lib=tcmalloc
    
    Чтобы использовать определенную библиотеку tcmalloc, определите ее полный путь. Пример:
    [mysqld_safe]
    malloc-lib=/opt/lib/libtcmalloc_minimal.so
    
  • --mysqld=prog_name

    Название программы сервера (в каталоге ledir), что Вы хотите запустить. Эта опция необходима, если Вы используете двоичный дистрибутив MySQL, но имеете каталог данных за пределами двоичного дистрибутива. Если mysqld_safe не может найти сервер, используйте опцию --ledir, чтобы указать путь к каталогу, где сервер расположен.

    Эта опция может быть дана только в командной строке а не в файле опций.

  • --mysqld-version=suffix

    Эта опция подобна --mysqld, но Вы определяете только суффикс для названия программы сервера. Базовое имя, как предполагается, является mysqld. Например, если Вы используете --mysqld-version=debug, то mysqld_safe запускает программу mysqld-debug в каталоге ledir. Если параметр --mysqld-version пуст, mysqld_safe использует mysqld из каталога ledir.

    Эта опция может быть дана только в командной строке а не в файле опции.

  • --nice=priority

    Используйте nice, чтобы установить приоритет планирования сервера в данное значение.

  • --no-defaults

    Не читайте файлы опций. Это должно быть первой опцией в командной строке, если это используется.

  • --open-files-limit=count

    Число файлов, которые mysqld должен быть в состоянии открыть. Значение опции передают ulimit -n.

    Вы должны запустить mysqld_safe как root, чтобы эта опция функционировала должным образом.

  • --pid-file=file_name

    Путь файла process ID.

    mysqld_safe создает файл PID mysqld_safe.pid в каталоге данных MySQL, запускаясь.

  • --plugin-dir=dir_name

    Путь каталога плагинов.

  • --port=port_num

    Номер порта, который сервер должен использовать, прислушиваясь к соединениям TCP/IP. Должен быть 1024 или выше, если сервер не запущен от имени root.

  • --skip-kill-mysqld

    Не пытаться уничтожить беспризорные процессы mysqld при запуске. Эта опция работает только в Linux.

  • --socket= path

    Файл сокета Unix, который сервер должен использовать для местных соединений.

  • --syslog, --skip-syslog

    --syslog сообщения об ошибках, которые будут посланы в syslog на системах, которые поддерживают программу logger. --skip-syslog подавляет использование syslog, сообщения написаны в файл журнала ошибок.

    Когда syslog используется, daemon.err facility/severity используется для всех сообщений журнала.

    Использование этих опций, чтобы управлять журналированием mysqld устарело. Используйте серверную системную переменную log_syslog вместо этого. Чтобы управлять средством, используйте серверную системную переменную log_syslog_facility, см. раздел 6.4.2.

  • --syslog-tag=tag

    Для того, чтобы зарегистрировать в syslog сообщения от mysqld_safe и mysqld написаны с идентификаторами mysqld_safe и mysqld, соответственно. Чтобы определить суффикс для идентификаторов, надо использовать --syslog-tag=tag, который изменяет идентификаторы, чтобы быть mysqld_safe-tag и mysqld-tag.

    Использование этой опции, чтобы управлять журналированием mysqld устарело. Используйте серверную переменную log_syslog_tag, см. раздел 6.4.2.

  • --timezone=timezone

    Установите переменную окружения TZ часового пояса к данному значению опции. Консультируйтесь со своей документацией операционной системы для форматов спецификации часового пояса.

  • --user={user_name|user_id}

    Выполните mysqld как пользователя, имеющего имя user_name или числовой пользовательский идентификатор ID user_id (User в этом контексте обращается к системной учетной записи, а не пользователю MySQL, перечисленному в таблицах привилегий).

Если Вы выполняете mysqld_safe с опцией --defaults-file или --defaults-extra-file, чтобы назвать файл опции, опция должна быть первой, данной в командной строке, или файл опции не будет использоваться. Например, эта команда не будет использовать названный файл опции:

mysql> mysqld_safe --port=port_num \
                      --defaults-file=file_name
Вместо этого используйте следующую команду:
mysql> mysqld_safe --defaults-file=file_name \
                      --port=port_num
Скрипт mysqld_safe написан так, чтобы он обычно мог запустить сервер, который был установлен или из исходных текстов или двоичного дистрибутива MySQL, даже при том, что эти типы дистрибутивов, как правило, устанавливают сервер в немного отличающихся местоположениях. См. раздел 2.1.4. mysqld_safe ожидает одно из следующих условий:

  • Сервер и базы данных могут быть найдены относительно рабочего каталога (каталог, из которого mysqld_safe вызван). Для двоичных дистрибутивов mysqld_safe смотрит в соответствии со своим рабочим каталогом для каталогов bin и data. Для дистрибутивов исходных текстов это ищет подкаталоги libexec и var. Это условие нужно соблюдать, если Вы выполняете mysqld_safe из своего каталога установки MySQL (например, /usr/local/mysql для двоичного дистрибутива).

  • Если сервер и базы данных не могут быть найдены относительно рабочего каталога, mysqld_safe пытается определить местонахождение их абсолютными путями. Типичные местоположения это /usr/local/libexec и /usr/local/var. Фактические местоположения определены от значений, сконфигурированных в дистрибутиве в то время, когда он был создан. Они должны быть правильными, если MySQL установлен в местоположении, определенном во время конфигурации.

Так как mysqld_safe пытается найти сервер и базы данных относительно его собственного рабочего каталога, Вы можете установить двоичный дистрибутив MySQL где угодно, пока Вы выполняете mysqld_safe из каталога установки MySQL:

shell> cd mysql_installation_directory
shell> bin/mysqld_safe &
Если mysqld_safe терпит неудачу, даже когда вызван из каталога установки MySQL, определите опции --ledir и --datadir, чтобы указать на каталоги, в которых сервер и базы данных расположены на Вашей системе.

mysqld_safe пытается использовать утилиты системы sleep и date, чтобы определить, сколько раз в секунду попыталось запуститься. Если эти утилиты присутствуют, и предпринято больше 5 запусков в секунду, mysqld_safe ждет 1 целую секунду прежде, чем запуститься снова. Это предназначено, чтобы предотвратить чрезмерное использование центрального процессора в случае повторных отказов (Bug #11761530, Bug #54035).

Когда Вы используете mysqld_safe, чтобы запустить mysqld, mysqld_safe устраивает ошибку (и сообщение), от себя и от mysqld, чтобы пойти к тому же самому месту назначения.

Есть несколько опций mysqld_safe для того, чтобы управлять местом назначения этих сообщений:

  • --log-error=file_name: Сообщения ошибки при записи в названный файлу.

  • --syslog : Сообщения ошибки при записи в syslog на системах, которые поддерживают программу logger.
  • --skip-syslog : Не делать сообщений ошибки при записи в syslog. Сообщения написаны в файл журнала ошибок по умолчанию (host_name.err в каталоге данных) или в названный файл, если задана опция --log-error .

Если ни одна из этих опций не дана, значение по умолчанию --skip-syslog .

Когда mysqld_safe пишет сообщение, уведомления идут к месту назначения журналирования (syslog или файл журнала ошибок) и stdout. Ошибки идут к месту назначения журналирования и stderr.

Управление регистрацией mysqld из mysqld_safe устарело. Используйте встроенную в сервер поддержку syslog, см. раздел 6.4.2.

5.3.3. Скрипт запуска сервера mysql.server

Дистрибутивы MySQL в Unix включают скрипт, названный mysql.server , который запускает сервер, используя mysqld_safe . Это может использоваться на системах, таких как Linux и Solaris, , которые используют стиль System V-каталогов, чтобы запустить и остановить системные службы. Это также используется OS X Startup Item для MySQL.

Для установки MySQL, используя дистрибутив RPM, запуск сервера и завершение работы управляется systemd на нескольких платформах Linux. На этих платформах больше не установлены mysql.server и mysqld_safe , потому что они не нужны. Для получения дополнительной информации см. раздел 2.5.9.

Чтобы запустить или остановить сервер вручную, используя mysql.server , вызовите это с параметром start или stop :

shell> mysql.server start
shell> mysql.server stop
Прежде, чем mysql.server запускает сервер, он изменяет местоположение на каталог установки MySQL и затем вызывает mysqld_safe. Чтобы выполнить сервер от некоторого определенного пользователя, добавьте соответствующую опцию user в группу [mysqld] файла /etc/my.cnf, как показано позже в этом разделе. Возможно, что Вы должны отредактировать mysql.server, если Вы установили двоичный дистрибутив MySQL в нестандартном местоположении. Измените это, чтобы изменить местоположение в надлежащий каталог прежде, чем это выполнит mysqld_safe . Если Вы делаете это, Ваша измененная версия mysql.server может быть перезаписана, если Вы обновляете MySQL в будущем, таким образом, Вы должны сделать копию своей версии.

mysql.server stop останавливает сервер, посылая ему сигнал. Вы можете также остановить сервер вручную, выполняя mysqladmin shutdown .

Чтобы запустить и остановить MySQL автоматически на Вашем сервере, Вы должны добавить команды к соответствующим местам в Ваших файлах /etc/rc*.

Если Вы используете пакет RPMсервера Linux (MySQL-server-VERSION.rpm) или родную установку пакета Linux, скрипт mysql.server может быть установлен в /etc/init.d с именем mysql. См. раздел 2.5.4.

Некоторые продавцы обеспечивают пакеты RPM, которые устанавливают скрипт запуска под другим именем, таким как mysqld.

Если Вы устанавливаете MySQL из исходных текстов или с использованием двоичного формата распределения, который не устанавливает mysql.server автоматически, Вы можете установить это вручную. Скрипт может быть найден в подкаталоге support-files в соответствии с каталогом установки MySQL или в исходном дереве MySQL. Скопируйте это в /etc/init.d с именем mysql, затем сделайте это выполнимым:

shell> cp mysql.server /etc/init.d/mysql
shell> chmod +x /etc/init.d/mysql

Старые системы Red Hat используют /etc/rc.d/init.d вместо /etc/init.d. Скорректируйте предыдущие команды соответственно. Альтернативно, сначала создайте /etc/init.d как символическую ссылку, которая указывает на /etc/rc.d/init.d:

shell> cd /etc
shell> ln -s rc.d/init.d .
После установки скрипта должны были активироваться команды, чтобы работать при системном запуске, это зависит от Вашей операционной системы. В Linux Вы можете использовать chkconfig :
shell> chkconfig --add mysql
На некоторых системах Linux следующая команда также, кажется, необходима, чтобы полностью включить mysql :
shell> chkconfig --level 345 mysql on
В FreeBSD скрипты запуска вообще должны быть в /usr/local/etc/rc.d/. rc(8) manual page заявляет, что скрипты в этом каталоге выполнены, только если их базовое имя соответствует образцу имени файла оболочки *.sh. Любые другие файлы или каталоги в пределах каталога тихо проигнорированы. Другими словами, на FreeBSD, Вы должны установить скрипт mysql.server как /usr/local/etc/rc.d/mysql.server.sh, чтобы включить автоматический запуск.

Как альтернатива предыдущей установке, некоторые операционные системы также используют /etc/rc.local или /etc/init.d/boot.local, чтобы запустить дополнительные службы. Чтобы запустить MySQL, используя этот метод, добавьте команду к соответствующему файлу запуска:

/bin/sh -c 'cd /usr/local/mysql; ./bin/mysqld_safe --user=mysql &'
Для других систем консультируйтесь со своей документацией операционной системы, чтобы видеть, как установить скрипты запуска.

mysql.server читает опции из групп [mysql.server] и [mysqld] файлов опции. Для обратной совместимости это также читает [mysql_server], но Вы должны переименовать такие разделы в [mysql.server].

Вы можете добавить опции для mysql.server в глобальном файле /etc/my.cnf. Типичный файл /etc/my.cnf:

[mysqld]
datadir=/usr/local/mysql/var
socket=/var/tmp/mysql.sock
port=3306
user=mysql

[mysql.server]
basedir=/usr/local/mysql
Скрипт mysql.server поддерживает следующие опции. Если определены, они должны быть размещены в файле опций, а не в командной строке. mysql.server поддерживает только start и stop как параметры командной строки.

Таблица 5.4. Опции mysql.server

ФорматОписание
--basedir Путь к каталогу установки MySQL
--datadirПуть к каталогу данных MySQL
--pid-fileФайл, в который сервер должен записать свой идентификатор процесса
--service-startup-timeout Сколько времени ждать запуска сервера
  • --basedir=dir_name

    Путь к каталогу установки MySQL.

  • --datadir=dir_name

    Путь к каталогу данных MySQL.

  • --pid-file=file_name

    Путь к файлу, в который сервер должен написать process ID.

    Если эта опция не дана, mysql.server использует значение по умолчанию host_name.pid. Значение файла PID, которое передают mysqld_safe , переопределяет любое значение, определенное в группе [mysqld_safe] файла опции. Поскольку mysql.server читает группу [mysqld] файла опции, но не [mysqld_safe], Вы можете гарантировать, что mysqld_safe получает то же самое значение, когда вызывается с использованием mysql.server как тогда, когда вызван вручную, помещая тот же самый pid-file в обе группы [mysqld_safe] и [mysqld].

  • --service-startup-timeout=seconds

    Сколько времени в секундах ждать подтверждения запуска сервера. Если сервер не запускается в пределах этого времени, mysql.server выходит с ошибкой. Значение по умолчанию 900. Значение 0 значит не ждать запуска вообще. Отрицательные величины означают ждать бесконечно (никакого тайм-аута).

5.3.4. mysqld_multi, управление несколькими серверами MySQL

mysqld_multi разработан, чтобы управлять несколькими процессами mysqld, которые прислушиваются к соединениям на различных файлах сокета Unix и портах TCP/IP. Это может запустить или остановить серверы или сообщить об их текущем статусе.

Для установки MySQL, используя дистрибутив RPM, запуск сервера и завершение работы управляется systemd на нескольких платформах Linux. На этих платформах больше не установлен mysqld_multi, потому что это не нужно. Для информации об использовании systemd, чтобы обработать многократные экземпляры MySQL, см. раздел 2.5.9.

mysqld_multi ищет группы [mysqldN] в my.cnf (или в файле, названном в опции --defaults-file). N может быть любым положительным целым числом. Это число упомянуто в следующем обсуждении как групповое число опции или GNR. Групповые числа отличают группы опций от друг друга и используются в качестве параметров mysqld_multi , чтобы определить, какие серверы Вы хотите запустить, остановить или получить отчет о состоянии. Опции, перечисленные в этих группах, являются тем же самым, что Вы использовали бы в группе [mysqld] для того, чтобы начать mysqld. См. раздел 2.9.5. Однако, используя многократные серверы, необходимо чтобы каждый использовал собственное значение для таких опций, как файл сокета Unix и номер порта TCP/IP. Для получения дополнительной информации о том, которые опции должны быть уникальны для сервера в окружающей среде нескольких серверов см. раздел 6.7.

Чтобы вызвать mysqld_multi, используйте следующий синтаксис:

shell> mysqld_multi [options]
          {start|stop|reload|report} [GNR[,GNR] ...]
start, stop, reload (остановить и перезапустить) и report указывают, что надо сделать. Вы можете выполнить определяемую работу для единственного или многих серверов, в зависимости от списка GNR, который следует за именем опции. Если нет никакого списка, mysqld_multi выполняет работу для всех серверов в файле опции.

Каждое значение GNR представляет групповое число опции или диапазон групповых чисел. Значение должно быть числом в конце названия группы в файле опции. Например, GNR для группы [mysqld17] = 17. Чтобы определить диапазон чисел, отделите числа тире. GNR 10-13 задает группы от [mysqld10] по [mysqld13]. Многократные группы или групповые диапазоны могут быть определены в командной строке, через запятую. Не должно быть никаких пробельных символов (пробелы или табуляции) в списке GNR, что-либо после пробельного символа проигнорировано.

Эта команда запускает единственную группу опции сервера [mysqld17]:

shell> mysqld_multi start 17
Эта команда останавливает несколько серверов, используя группы опции [mysqld8] и с [mysqld10] по [mysqld13] :
shell> mysqld_multi stop 8,10-13
Для примера того, как Вы могли бы настроить файл опции, используйте эту команду:
shell> mysqld_multi --example
mysqld_multi ищет файлы опции следующим образом:

  • С --no-defaults никакие файлы опции не считаны.

  • С --defaults-file=file_name, только названный файл считан.
  • Иначе файлы опции в стандартном списке местоположений считаны, включая любой файл, названный в опции --defaults-extra-file=file_name, если он есть. Если опция дана многократно, последнее значение используется.

В файлах опции ищутся группы [mysqld_multi] и [mysqldN]. Группа [mysqld_multi] может использоваться для опций mysqld_multi . Группы [mysqldN] могут использоваться для опций, которые передают к определенным экземплярам mysqld.

Группы [mysqld] или [mysqld_safe] могут использоваться для общих опций, считанных всеми экземплярами mysqld или mysqld_safe . Вы можете определить --defaults-file=file_name, чтобы использовать иной конфигурационный файл для того того случая, когда группы [mysqld] или [mysqld_safe] из того файла будут использоваться.

mysqld_multi поддерживает следующие опции.

  • --help

    Вывести на экран сообщение справки и выйти.

  • --example

    Вывести на экран типовой файл опции.

  • --log=file_name

    Определить название файла системного журнала. Если файл существует, вывод журнала направлен к нему.

  • --mysqladmin=prog_name

    mysqladmin , который будет использоваться, чтобы остановить серверы.

  • --mysqld=prog_name

    mysqld, который будет использоваться. Отметьте, что Вы можете определить mysqld_safe как значение для этой опции также. Если Вы используете mysqld_safe , чтобы запустить сервер, Вы можете включать опции mysqld или ledir в соответсвующую группу [mysqldN]. Эти опции указывают на название сервера, который mysqld_safe должен запустить и путь каталога, где сервер расположен. См. описания для этих опций в разделе 5.3.2:

    [mysqld38]
    mysqld = mysqld-debug
    ledir  = /opt/local/mysql/libexec
    
  • --no-log

    Информация о журнале печатается в stdout вместо файла системного журнала. По умолчанию вывод идет в файл системного журнала.

  • --password=password

    Пароль MySQL, чтобы использовать, вызывая mysqladmin . Отметьте, что значение пароля не является дополнительным для этой опции, в отличие от других программ MySQL.

  • --silent

    Тихий режим; отключить предупреждения.

  • --tcp-ip

    Соединитесь с каждым сервером MySQL через порт TCP/IP вместо файла сокета Unix. Если файл сокета отсутствует, сервер мог бы все еще работать, но доступен только через порт TCP/IP. По умолчанию соединения сделаны, используя файл сокета Unix. Эта опция влияет на операции stop и report.

  • --user=user_name

    Имя пользователя MySQL, чтобы использовать, вызывая mysqladmin .

  • --verbose

    Больше подробностей о работе.

  • --version

    Отобразить информацию о версии.

Некоторые примечания о mysqld_multi:

  • ВАЖНО: Перед использованием mysqld_multi надо убедиться, что Вы понимаете значения опций, которые передают mysqld и почему Вы хотели бы иметь отдельные процессы mysqld. Остерегайтесь опасностей использовать многократные mysqld с тем же самым каталогом данных. Используйте отдельные каталоги данных, если Вы не знаете, что Вы делаете. Запуск многократных серверов с тем же самым каталогом данных не дает Вам дополнительную скорость в многопоточной системе. См. раздел 6.7.

  • Удостоверьтесь, что каталог данных для каждого сервера полностью доступен для учетной записи Unix, от которой запущен определенный процесс mysqld. Не используйте Unix root, если Вы не знаете, что Вы делаете. См. раздел 7.1.5.

  • Удостоверьтесь, что у учетной записи MySQL, используемой для того, чтобы остановить mysqld mysqladmin ) то же самое имя пользователя и пароль для каждого сервера. Кроме того, удостоверьтесь, что учетная запись имеет привилегию SHUTDOWN. Если у серверов, которыми Вы хотите управлять, есть различные имена пользователя или пароли для административных учетных записей, Вы могли бы хотеть создать учетную запись на каждом сервере, у которой есть то же самое имя пользователя и пароль. Например, Вы могли бы настроить общую учетку multi_admin, выполняя следующие команды для каждого сервера:

    shell> mysql -u root -S /tmp/mysql.sock -p
    Enter password:
    mysql> CREATE USER 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';
    mysql> GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost';
    
    См. раздел 7.2. Вы должны сделать это для каждого mysqld. Измените параметры соединения соответственно, соединяясь с каждым. Отметьте, что часть имени хоста имени учетной записи должна разрешить Вам соединяться как multi_admin с хоста, где Вы хотите выполнить mysqld_multi .
  • Файл сокета Unix и номер порта TCP/IP должны отличаться для каждого mysqld. Альтернативно, если у хоста есть многократные сетевые адреса, Вы можете использовать --bind-address, чтобы заставить различные серверы слушать различные интерфейсы.
  • --pid-file очень важна, если Вы используете mysqld_safe , чтобы запустить mysqld (например, --mysqld=mysqld_safe ). У каждого mysqld должен быть свой собственный файл ID процесса. Преимущество использования mysqld_safe вместо mysqld состоит в том, что mysqld_safe контролирует свой процесс mysqld и перезапускает это, если процесс заканчивается из-за сигнала, посланного, используя kill -9 или по другим причинам, таким как ошибка сегментации. Пожалуйста, отметьте, что скрипт mysqld_safe мог бы потребовать, чтобы Вы запустили его с определенного места. Это означает, что Вам, возможно, придется изменить местоположение на определенный каталог прежде, чем выполнить mysqld_multi. Если у Вас есть проблемы с запуском, пожалуйста, см. скрипт mysqld_safe. Проверьте особенно строки:
    ----------------------------------------------------------------
    MY_PWD=`pwd`
    # Check if we are starting this relative (for the binary release)
    if test -d $MY_PWD/data/mysql -a \
       -f ./share/mysql/english/errmsg.sys -a \
       -x ./bin/mysqld
    ----------------------------------------------------------------
    
    Тест, выполненный этими строками, должен быть успешным, или Вы могли бы столкнуться с проблемами. См. раздел 5.3.2 .
  • Вы могли бы хотеть использовать опцию --user для mysqld, но чтобы сделать это Вы должны выполнить mysqld_multi как Unix root. Наличие опции в файле опции не имеет значения; Вы только получаете предупреждение, если Вы не суперпользователь, и процессы mysqld будут запущены в соответствии с Вашей собственной учетной записью Unix.

Следующий пример показывает, как Вы могли бы настроить файл опции для использования с mysqld_multi. Порядок, в котором mysqld запущены или остановлены, зависит от порядка, в котором они появляются в файле опции. Групповые числа не обязаны сформировать непрерывную последовательность. Первая и пятая группы [mysqldN] были преднамеренно опущены в примере, чтобы иллюстрировать, что у Вас может быть промежуток в файле опции. Это дает Вам больше гибкости.

# This is an example of a my.cnf file for mysqld_multi.
# Usually this file is located in home dir ~/.my.cnf or /etc/my.cnf

[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = multi_admin
password   = my_password

[mysqld2]
socket = /tmp/mysql.sock2
port = 3307
pid-file   = /usr/local/mysql/data2/hostname.pid2
datadir= /usr/local/mysql/data2
language   = /usr/local/mysql/share/mysql/english
user = unix_user1

[mysqld3]
mysqld = /path/to/mysqld_safe
ledir= /path/to/mysqld-binary/
mysqladmin = /path/to/mysqladmin
socket = /tmp/mysql.sock3
port = 3308
pid-file   = /usr/local/mysql/data3/hostname.pid3
datadir= /usr/local/mysql/data3
language   = /usr/local/mysql/share/mysql/swedish
user = unix_user2

[mysqld4]
socket = /tmp/mysql.sock4
port = 3309
pid-file   = /usr/local/mysql/data4/hostname.pid4
datadir= /usr/local/mysql/data4
language   = /usr/local/mysql/share/mysql/estonia
user = unix_user3

[mysqld6]
socket = /tmp/mysql.sock6
port = 3311
pid-file   = /usr/local/mysql/data6/hostname.pid6
datadir= /usr/local/mysql/data6
language   = /usr/local/mysql/share/mysql/japanese
user = unix_user4
См. раздел 5.2.6.

5.4. Связанные с установкой программы MySQL

Программы в этом разделе используются, устанавливая или обновляя MySQL.

5.4.1. comp_err Компиляция файла сообщений об ошибке MySQL

comp_err создает файл errmsg.sys, который используется mysqld, чтобы определить сообщения об ошибках, чтобы вывести на экран для различных кодов ошибки. comp_err обычно выполняется автоматически, когда MySQL создан. Это собирает файл errmsg.sys из текстового файла sql/share/errmsg-utf8.txt, расположенного в исходных текстах MySQL.

comp_err также производит заголовочные файлы mysqld_error.h, mysqld_ername.h и sql_state.h.

Для получения дополнительной информации о том, как сообщения об ошибках определены, см. MySQL Internals Manual.

Вызов comp_err :

shell> comp_err [options]
comp_err поддерживает следующие опции.

  • --help, -?

    Вывести на экран сообщение справки и выйти.

  • --charset=dir_name, -C dir_name

    Каталог набора символов. Значение по умолчанию ../sql/share/charsets.

  • --debug=debug_options, -# debug_options

    Писать журнал отладки. Типичная строка debug_options: d:t:O,file_name. По умолчанию d:t:O,/tmp/comp_err.trace.

  • --debug-info , -T

    Напечатать некоторую информацию об отладке, когда программа выходит.

  • --header_file=file_name, -H file_name

    Название заголовочного файла ошибок. Значение по умолчанию mysqld_error.h.

  • --in_file=file_name, -F file_name

    Название входного файла. Значение по умолчанию ../sql/share/errmsg-utf8.txt.

  • --name_file=file_name, -N file_name

    Название файла имен ошибок. Значение по умолчанию mysqld_ername.h.

  • --out_dir=dir_name, -D dir_name

    Название базового каталога вывода. Значение по умолчанию ../sql/share/.

  • --out_file=file_name, -O file_name

    Название выходного файла. Значение по умолчанию errmsg.sys.

  • --statefile= file_name, -S file_name

    Название заголовочного файла SQLSTATE. Значение по умолчанию sql_state.h.

  • --version, -V

    Информация о версии и выход.

5.4.2. mysql_secure_installation улучшение безопасности установки MySQL

Эта программа позволяет Вам улучшить безопасность своей установки MySQL следующими способами:

  • Вы можете установить пароль для root.

  • Вы можете удалить учетные записи root, которые доступны снаружи локального хоста.
  • Вы можете удалить анонимные учетные записи пользователя.
  • Вы можете удалить базу данных test (к которой по умолчанию могут получить доступ все пользователи, даже анонимные) и привилегии, которые разрешают доступ любому к базам данных с именами, которые начинаются с test_.

mysql_secure_installation помогает Вам осуществить рекомендации безопасности, подобные описанным в разделе 2.9.4.

Нормальное использование должно соединиться с местным сервером MySQL, вызовите mysql_secure_installation без параметров:

shell> mysql_secure_installation
Когда выполнен, mysql_secure_installation просит Вас определять, которые действия выполнить.

Плагин validate_password может использоваться для проверки силы пароля. Если плагин не установлен, mysql_secure_installation запрашивает пользователя, установить ли это. Любые пароли будут позже проверены, используя плагин, если он включен.

Большинство обычных опций клиента MySQL, например, --host и --port может использоваться на командной строке и в файлах опции. Например, чтобы соединиться с локальным сервером по IPv6, используя порт 3307, используйте эту команду:

shell> mysql_secure_installation --host=::1 --port=3307
mysql_secure_installation поддерживает следующие опции, которые могут быть определены в командной строке или в группах [mysql_secure_installation] и [client] файла опции. Для информации о файлах опции, используемых программами MySQL, см. раздел 5.2.6.

Таблица 5.5. Опции mysql_secure_installation

ФорматОписание
--defaults-extra-fileЧитает данный файл опции в дополнение к обычным файлам опции
--defaults-fileЧитать только данный файл опций
--defaults-group-suffixГрупповое значение суффикса опции
--help Отобразить справку и выйти
--host IP-адрес или имя хоста для соединения
--no-defaultsНе читать файлы опции
--password Принят, но всегда проигнорирован. Всякий раз, когда mysql_secure_installation вызван, пользователь запрошен о пароле независимо.
--port Номер порта TCP/IP, чтобы использовать для соединения
--print-defaultsНапечатать опции по умолчанию
--protocol Протокол соединения, чтобы использовать
--socket Для соединений с localhost файл сокета Unix
--ssl-ca Путь к файлу, который содержит список доверенных SSL CA
--ssl-capath Путь к каталогу, который содержит доверенные сертификаты SSL CA в формате PEM
--ssl-cert Путь к файлу, который содержит сертификат X509 в формате PEM
--ssl-cipher Список разрешенных шифров для шифрования соединения
--ssl-crl Путь к файлу, который содержит списки аннулирования сертификатов
--ssl-crlpath Путь к каталогу, который содержит файлы списка аннулирования сертификатов
--ssl-key Путь к файлу, который содержит ключ X509 в формате PEM
--tls-versionПротоколы, разрешенные для безопасных соединений
--use-defaultВыполнить без пользовательской активности
--user Имя пользователя MySQL, чтобы использовать, соединяясь с сервером
  • --help , -?

    Отобразить справку и выйти.

  • --defaults-extra-file=file_name

    Считайте этот файл опции после глобального файла опции, но (в Unix) перед пользовательским файлом опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

  • --defaults-file=file_name

    Используйте только данный файл опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

  • --defaults-group-suffix=str

    Читать не только обычные группы опции, но также и группы с обычными именами и суффиксом str. Например, mysql_secure_installation обычно читает группы [client] и [mysql_secure_installation]. Если опция --defaults-group-suffix=_other дана, mysql_secure_installation также читает группы [client_other] и [mysql_secure_installation_other].

  • --host=host_name, -h host_name

    Соединитесь с сервером MySQL на данном хосте.

  • --no-defaults

    Не читать файлы опции. Если запуск программы терпит неудачу из-за чтения неизвестных опций из файла --no-defaults может использоваться, чтобы препятствовать тому, чтобы они были считаны.

    Исключение: файл .mylogin.cnf, если это существует, считан во всех случаях. Это разрешает паролям быть определенными более безопасным способом, чем в командной строке, даже когда применяется --no-defaults. Файл .mylogin.cnf создается mysql_config_editor, см. раздел 5.6.7.

  • --password=password, -p password

    Эта опция принята, но проигнорирована. Используется ли эта опция или нет, mysql_secure_installation всегда запрашивает у пользователя пароль.

  • --port=port_num, -P port_num

    Номер порта TCP/IP, чтобы использовать для соединения.

  • --print-defaults

    Напечатать название программы и все опции, которые она получает от файлов опции.

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    Протокол соединения, чтобы использовать для того, чтобы соединиться с сервером. Полезно, когда другие параметры соединения обычно использовали бы не тот протокол. Для деталей о допустимых значениях см. раздел 5.2.2.

  • --socket=path, -S path

    Для соединений с localhost файл сокета Unix, чтобы использовать, или в Windows имя именованного канала

  • --ssl*

    Опции, которые начинаются с --ssl, определяют, соединиться ли с сервером, используя SSL и указывают, где найти ключи и сертификаты SSL, см. раздел 7.4.5.

  • --tls-version=protocol_list

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

  • --use-default

    Выполнить не в интерактивном режиме. Эта опция может использоваться для необслуживаемых операций установки.

  • --user=user_name, -u user_name

    Имя пользователя MySQL, чтобы использовать, соединяясь с сервером.

5.4.3. mysql_ssl_rsa_setup создание файлов SSL/RSA

Эта программа создает сертификат SSL и ключевые файлы, а также файлы ключевой пары RSA, требуемые, чтобы поддерживать безопасные соединения, используя SSL и безопасный обмен паролями, использующий RSA по незашифрованным соединениям, если эти файлы отсутствуют. mysql_ssl_rsa_setup может также использоваться, чтобы создать новые файлы SSL, если существующие истекли.

mysql_ssl_rsa_setup использует openssl, таким образом, ее использование зависит от наличия OpenSSL на Вашей машине.

Другой способ произвести SSL и файлы RSA для дистрибутивов MySQL, собранных, используя OpenSSL, состоит в том, чтобы сервер произвел их автоматически. См. раздел 7.4.6.1.

mysql_ssl_rsa_setup помогает понизить барьер для использования SSL, облегчая производство необходимых файлов. Однако, сертификаты, произведенные mysql_ssl_rsa_setup самоподписаны, не очень безопасны. После того, как Вы приобретете опыт, используя файлы, создаваемые mysql_ssl_rsa_setup , рассмотрите получение сертификата CA из зарегистрированного центра сертификации.

Вызов mysql_ssl_rsa_setup:

shell> mysql_ssl_rsa_setup [options]
Опция --datadir определяет, где создать файлы, а --verbose показывает команды openssl, которые выполняет mysql_ssl_rsa_setup.

mysql_ssl_rsa_setup пытается создать SSL и файлы RSA, используя набор имен файлов по умолчанию. Это работает следующим образом:

  1. mysql_ssl_rsa_setup проверяет наличие openssl в местоположениях, определенных переменной окружения PATH. Если openssl там нет, mysql_ssl_rsa_setup ничего не делает. Если openssl есть, mysql_ssl_rsa_setup ищет значение по умолчанию SSL и файлы RSA в каталоге данных MySQL, определенном опцией --datadir или в каталоге данных, если эта опция не дана.

  2. mysql_ssl_rsa_setup проверяет каталог данных на файлы SSL со следующими именами:
    ca.pem
    server-cert.pem
    server-key.pem
    
  3. Если какой-либо из тех файлов присутствует, mysql_ssl_rsa_setup не создает файлов SSL. Иначе, это вызывает openssl, чтобы создать их и некоторые дополнительные файлы:
    ca.pem          Self-signed CA certificate
    ca-key.pem      CA private key
    server-cert.pem Server certificate
    server-key.pem  Server private key
    client-cert.pem Client certificate
    client-key.pem  Client private key
    
    Эти файлы включают безопасные соединения клиента, используя SSL, см. раздел 7.4.4.
  4. mysql_ssl_rsa_setup проверяет каталог данных на файлы RSA со следующими именами:
    private_key.pem Private member of private/public key pair
    public_key.pem  Public member of private/public key pair
    
  5. Если какой-либо из этих файлов присутствует, mysql_ssl_rsa_setup не создает файлов RSA. Иначе, это вызывает openssl, чтобы создать их. Эти файлы включают безопасный обмен паролями, использующий RSA по незашифрованным соединениям для учетных записей, заверенных плагином sha256_password, см. раздел 7.5.1.2.

Для информации о характеристиках файлов, создаваемых mysql_ssl_rsa_setup см. раздел 7.4.6.1.

При запуске сервер MySQL автоматически использует файлы SSL, создаваемые mysql_ssl_rsa_setup , чтобы включить SSL, если не задано никаких явных опций SSL, кроме --ssl. Если Вы предпочитаете определять файлы явно, используйте опции --ssl-ca, --ssl-cert и --ssl-key при запуске, чтобы назвать файлы ca.pem, server-cert.pem и server-key.pem, соответственно.

Сервер также автоматически использует файлы RSA, создаваемые mysql_ssl_rsa_setup , чтобы включить RSA, если никакие явные опции RSA не даны.

Если сервер SSL включен, клиенты используют SSL по умолчанию для соединения. Чтобы определить сертификат и ключевые файлы явно, используйте опции --ssl-ca, --ssl-cert и --ssl-key, чтобы назвать файлы ca.pem, client-cert.pem и client-key.pem, соответственно. Однако, некоторая дополнительная установка клиента может требоваться сначала, потому что mysql_ssl_rsa_setup по умолчанию создает те файлы в каталоге данных. Разрешения для каталога данных обычно включают доступу только к системной учетной записи, которая выполняет сервер MySQL, таким образом, программы клиента не могут использовать файлы, расположенные там. Чтобы сделать файлы доступными, скопируйте их в каталог, который читаемый (но не перезаписываемый) клиентами:

  • Для местных клиентов может использоваться каталог установки MySQL. Например, если каталог данных это подкаталог каталога установки, и Ваше текущее местоположение это каталог данных, Вы можете скопировать файлы:

    shell> cp ca.pem client-cert.pem client-key.pem ..
    
  • Для удаленных клиентов распределите файлы, используя безопасный канал, чтобы гарантировать, что в них не вмешиваются во время транзита.

Если файлы SSL, используемые для установки MySQL, истекли, Вы можете использовать mysql_ssl_rsa_setup, чтобы создать новые:

  1. Остановите сервер.

  2. Переименуйте или удалите существующие файлы SSL. Вы можете хотеть сделать резервное копирование сначала. айлы RSA не истекают, таким образом, Вы не должны удалить их. mysql_ssl_rsa_setup будет видеть, что они существуют и не перезаписывает их.
  3. Запустите mysql_ssl_rsa_setup с опцией --datadir , чтобы определить, где создать новые файлы.
  4. Перезапустите сервер.

mysql_ssl_rsa_setup поддерживает следующие параметры, которые могут быть определены в командной строке или в группах [mysql_ssl_rsa_setup] и [mysqld] файла опции. Для информации о файлах опции, используемых программами MySQL, см. раздел 5.2.6.

Таблица 5.6. Опции mysql_ssl_rsa_setup

ФорматОписание
--datadir Путь к каталогу данных
--helpОтобразить справку и выйти
--suffixСуффикс для признака общего названия сертификата X509
--uidИмя эффективного пользователя, чтобы использовать для разрешений файла
--verboseПодробный режим
--versionИнформация о версии и выход
  • --help , ?

    Отобразить справку и выйти

  • --datadir=dir_name

    Путь к каталогу, где mysql_ssl_rsa_setup должен искать файлы SSL и RSA и в котором это должно создать файлы, если они отсутствуют. Значение по умолчанию в каталоге данных.

  • --suffix=str

    Суффикс для общего названия в сертификатах X509. Значение суффикса ограничено 17 символами. Значение по умолчанию основано на номере версии MySQL.

  • --uid=name, -v

    Имя пользователя, который должен быть владельцем любых создаваемых файлов. Значение имя пользователя, не числовой пользовательский идентификатор. В отсутствие этой опции файлы, создаваемые mysql_ssl_rsa_setup , принадлежат пользователю, который выполняет ее. Эта опция допустима, только если Вы выполняете программу как root на системе, которая поддерживает системный вызов chown().

  • --verbose, -v

    Многословный режим. Произведет подробный вывод о том, что делает программа. Например, программа показывает команды openssl, которые она выполняет, и производит вывод, чтобы указать, пропускает ли она создание файла SSL или RSA, потому что некоторый файл уже существует.

  • --version, -V

    Отобразить информацию о версии.

5.4.4. mysql_tzinfo_to_sql Загрузка таблицы часового пояса

mysql_tzinfo_to_sql загружает таблицы часового пояса в базу данных mysql. Это используется на системах, у которых есть база данных zoneinfo (набор файлов, описывающих часовые пояса). Примеры таких систем: Linux, FreeBSD, Solaris и OS X. Одно вероятное местоположение для этих файлов: каталог /usr/share/zoneinfo (/usr/share/lib/zoneinfo в Solaris). Если у Вашей системы нет базы данных zoneinfo, Вы можете использовать загружаемый пакет, описанный в разделе 11.6.

mysql_tzinfo_to_sql может быть вызвана несколькими путями:

shell> mysql_tzinfo_to_sql tz_dir
shell> mysql_tzinfo_to_sql tz_file tz_name
shell> mysql_tzinfo_to_sql --leap tz_file
яДля первого синтаксиса передайте zoneinfo имя пути к каталогу к mysql_tzinfo_to_sql и пошлите вывод в mysql:
shell> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
mysql_tzinfo_to_sql читает файлы часового пояса Вашей системы и производит запросы SQL от них. mysql обрабатывает эти запросы, чтобы загрузить таблицы часового пояса.

Второй синтаксис заставляет mysql_tzinfo_to_sql загружать единственный файл часового пояса tz_file, который соответствует имени часового пояса tz_name:

shell> mysql_tzinfo_to_sql tz_file tz_name | mysql -u root mysql
Если Ваш часовой пояс должен учитывать секунды сдвига, запустите mysql_tzinfo_to_sql , используя третий синтаксис, который инициализирует информацию сдвига секунд. tz_file это название Вашего файла часового пояса:
shell> mysql_tzinfo_to_sql --leap tz_file | mysql -u root mysql
После выполнения mysql_tzinfo_to_sql лучше перезапускать сервер, чтобы это не продолжило использовать любые ранее кэшируемые данные о часовом поясе.

5.4.5. mysql_upgrade проверка и обновление таблицы MySQL

mysql_upgrade исследует все таблицы во всех базах данных для несовместимостей с текущей версией MySQL Server. mysql_upgrade также обновляет системные таблицы так, чтобы Вы могли использовать в своих интересах новые привилегии или способности, которые, возможно, были добавлены.

Если mysql_upgrade находит, что у таблицы есть возможная несовместимость, это выполняет проверку и, если проблемы найдены, делает попытку ремонта таблицы. Если таблица не может быть восстановлена, см. раздел 2.10.4 для ручных стратегий ремонта таблицы.

Вы должны выполнить mysql_upgrade каждый раз, когда Вы обновляете MySQL.

mysql_upgrade общается непосредственно с сервером MySQL, посылая запросы SQL, требуемые, чтобы выполнить обновление.

В Windows Server 2008, Vista и новее Вы должны выполнить mysql_upgrade как администратор системы. Вы можете сделать это, выполняя командную строку как Администратор и выполняя команду.

Вы должны всегда резервировать свою текущую установку MySQL прежде, чем выполнить обновление. См. раздел 8.2.

Некоторые несовместимости обновления могут потребовать специальной обработки прежде, чем Вы обновите свою установку MySQL и выполните mysql_upgrade . См. раздел 2.10.1.

Чтобы использовать mysql_upgrade, удостоверьтесь, что сервер работает. Тогда вызовите это, чтобы проверить и восстановить таблицы и обновить системные таблицы:

shell> mysql_upgrade [options]
После выполнения mysql_upgrade, остановите сервер и перезапустите его, чтобы любые изменения, произведенные в системных таблицах, вступили в силу.

Если у Вас есть многократное выполнение серверов MySQL, вызовите mysql_upgrade с параметрами соединения, подходящими для соединения с желаемым сервером. Например, с серверами, работающими на местном узле на портах 3306-3308, обновите каждый из них, соединяясь с соответствующим портом:

shell> mysql_upgrade --protocol=tcp -P 3306 [other_options]
shell> mysql_upgrade --protocol=tcp -P 3307 [other_options]
shell> mysql_upgrade --protocol=tcp -P 3308 [other_options]
Для местных соединений в Unix опция --protocol=tcp вызывает соединение, используя TCP/IP, а не файл сокета Unix.

mysql_upgrade обрабатывает все таблицы во всех базах данных, это могло бы занять много времени. Каждая таблица заблокирована и поэтому недоступна другим сеансам, в то время как она обрабатывается. Проверка и восстановление могут быть отнимающими много времени, особенно для больших таблиц.

Для деталей о том, что влекут за собой проверяющие таблицу операции см. описание опции FOR UPGRADE команды CHECK TABLE (раздел 14.7.2.2).

Все проверенные и восстановленные таблицы отмечены с текущим номером версии MySQL. Это гарантирует, что когда Вы в следующий раз выполняете mysql_upgrade с той же самой версией сервера, это может сказать, есть ли какая-либо потребность проверить или восстановить таблицу снова.

mysql_upgrade также сохраняет номер версии MySQL в файле mysql_upgrade_info в каталоге данных. Это используется, чтобы быстро проверить, были ли все таблицы проверены на этот выпуск так, чтобы проверка таблицы могла быть пропущена. Чтобы проигнорировать этот файл и выполнить проверку независимо, используйте опцию --force.

mysql_upgrade проверяет строки таблицы user и, для любой строки с пустым столбцом plugin, устанавливает этот столбец в 'mysql_native_password', если привилегии используют формат хеша, совместимый с этим плагином. Строки с паролями в хэше версии pre-4.1 должны быть обновлены вручную.

mysql_upgrade не обновляет содержание таблиц справки. Для инструкций обновления см. раздел 6.1.10.

Если не вызвано с опцией --skip-sys-schema, mysql_upgrade устанавливает схему sys, если это не установлено, и обновляет это до текущей версии иначе. mysql_upgrade возвращает ошибку, если схема sys существует, но не имеет представления version, при условии, что его отсутствие указывает на создаваемую пользователем схему:

Error occurred: A sys schema exists with no sys.version view. If
you have a user created sys schema, this must be renamed for the
upgrade to succeed.
Чтобы обновиться в этом случае, сначала удалите или переименуйте существующую схему sys.

mysql_upgrade проверяет на разделение таблицы InnoDB, которые были составлены, используя родной обработчик разделения и пытается обновить их до родного разделения InnoDB. Вы можете обновить такие таблицы индивидуально в mysql , используя ALTER TABLE ... UPGRADE PARTITIONING.

По умолчанию mysql_upgrade работает как MySQL-пользователь root. Если истек пароль для root, когда Вы выполняете mysql_upgrade , Вы будете видеть сообщение, что Ваш пароль истекает и что mysql_upgrade потерпел неудачу в результате. Чтобы исправить это, сбросьте пароль root в неистекающий и выполните mysql_upgrade снова. Соединитесь с сервером как root:

shell> mysql -u root -p
Enter password: <****  <- enter root password here
Сбросьте пароль ALTER USER:
mysql> ALTER USER USER() IDENTIFIED BY 'root-password';
Теперь выйдите из mysql и выполните mysql_upgrade снова:
shell> mysql_upgrade [options]
mysql_upgrade поддерживает следующие опции, которые могут быть определены в командной строке или в группах [mysql_upgrade] и [client] файла опции. Для информации о файлах опции, используемых программами MySQL, см. раздел 5.2.6.

Таблица 5.7. Опции mysql_upgrade

ФорматОписание
--bind-addressИспользуйте определенный сетевой интерфейс, чтобы соединиться с MySQL Server
--character-sets-dirКаталог, где наборы символов установлены
--compressСжимать всю информацию, посланную между клиентом и сервером
--debug Вести журнал отладки
--debug-checkИнформация об отладке, когда программа завершается
--debug-infoИнформация об отладке, память и статистика центрального процессора, когда программа завершается
--default-authПлагин аутентификации, чтобы использовать
--default-character-setОпределите набор символов значения по умолчанию
--defaults-extra-fileЧитать этот файл опции в дополнение к обычным файлам опции
--defaults-fileЧитать только этот файл опции
--defaults-group-suffixГрупповое значение суффикса опции
--force Выполнение, даже если mysql_upgrade был уже выполнен для текущей версии MySQL
--help Отобразить справку и выйти
--host Хост сервера MySQL
--login-pathЧитать опции пути входа в систему из .mylogin.cnf
--max-allowed-packetМаксимальная пакетная длина, чтобы послать в или получить от сервера
--net-buffer-lengthРазмер буфера для TCP/IP и сокета
--no-defaultsНе читать файлы опции
--passwordПароль, чтобы соединиться с сервером
--pipe В Windows соединиться с сервером, используя именованный канал
--plugin-dirКаталог, где плагины установлены
--port Номер порта TCP/IP, чтобы использовать для соединения
--print-defaultsНапечатать опции по умолчанию
--protocolПротокол соединения, чтобы использовать
--shared-memory-base-nameНазвание совместно используемой памяти, чтобы использовать для соединений
--skip-sys-schemaНе устанавливать или обновлять схему sys
--socketДля соединений с localhost файл сокета Unix
--ssl-ca Путь к файлу, который содержит список доверенных SSL CA
--ssl-capathПуть к каталогу, который содержит доверенные сертификаты SSL CA в формате PEM
--ssl-certПуть к файлу, который содержит сертификат X509 в формате PEM
--ssl-cipherСписок разрешенных шифров, чтобы использовать для шифрования соединения
--ssl-crlПуть к файлу, который содержит списки аннулирования сертификатов
--ssl-crlpathПуть к каталогу, который содержит файлы списка аннулирования сертификатов
--ssl-keyПуть к файлу, который содержит ключ X509 в формате PEM
--ssl-modeСтатус безопасности соединения с сервером
--tls-versionПротоколы, разрешенные для безопасных соединений
--upgrade-system-tablesОбновите только системные таблицы, но не данные
--user Имя пользователя MySQL, чтобы использовать, соединяясь с сервером
--verboseПодробный отчет
--version-checkПроверить на надлежащую версию сервера
--write-binlogЗаписать все запросы в двоичный журнал
  • --help

    Отобразить справку и выйти.

  • --basedir=dir_name

    Путь к каталогу установки MySQL.

  • --bind-address=ip_address

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

  • --character-sets-dir=dir_name

    Каталог, где наборы символов установлены. См. раздел 11.5.

  • --compress , -C

    Сжимать всю информацию, посланную между клиентом и сервером, если оба поддерживают сжатие.

  • --debug[=debug_options], -# [debug_options]

    Писать протокол отладки. Типичная строка debug_options: d:t:o,file_name. Значение по умолчанию d:t:O,/tmp/mysql_upgrade.trace.

  • --debug-check

    Напечатать некоторую информацию об отладке, когда программа выходит.

  • --debug-info , -T

    Информация об отладке, памяти и статистика использования центрального процессора, когда программа выходит.

  • --default-auth=plugin

    Подсказка о клиентском плагине аутентификации, чтобы использовать. См. раздел 7.3.9.

  • --default-character-set=charset_name

    Использовать charset_name как набор символов значения по умолчанию. См. раздел 11.5.

  • --defaults-extra-file=file_name

    Читать этот файл опции после глобального файла опции, но (в Unix) перед пользовательским файлом опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

  • --defaults-file=file_name

    Используйте только данный файл опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

  • --defaults-group-suffix=str

    Читать не только обычные группы опции, но также и группы с обычными именами и суффиксом str. Например, mysql_upgrade обычно читает группы [client] и [mysql_upgrade]. Если дана --defaults-group-suffix=_other, mysql_upgrade также читает группы [client_other] и [mysql_upgrade_other].

  • --force

    Проигнорировать файл mysql_upgrade_info и выполнить mysql_upgrade , даже если уже был выполнен для текущей версии MySQL.

  • --host=host_name, -h host_name

    Соединитесь с сервером MySQL на данном хосте.

  • --login-path=name

    Читать опции из названного пути входа в систему в файле .mylogin.cnf. Вход в систему является группой опций, содержащей опции, которые определяют, с каким сервером MySQL соединиться и как подтвердить подлинность. Чтобы создать или изменить файл пути входа в систему, используйте mysql_config_editor , см. раздел 5.6.7.

  • --max-allowed-packet=value

    Максимальный размер буфера для коммуникации клиент-сервер. Значение по умолчанию составляет 24 МБ. Минимальные и максимальные значения составляют 4 КБ и 2GB.

  • --net-buffer-length=value

    Начальный размер буфера для коммуникации клиент-сервер. Значение по умолчанию составляет 1 МБ-1KB. Минимальные и максимальные значения составляют 4 КБ и 16 МБ.

  • --no-defaults

    Не читать файлы опции. Если запуск программы терпит неудачу из-за чтения неизвестных опций из файла опции, --no-defaults может использоваться, чтобы препятствовать тому, чтобы они были считаны.

    Исключение: если существует .mylogin.cnf, то он считан во всех случаях. Это разрешает паролям быть определенными более безопасным способом, чем в командной строке, даже когда применена опция --no-defaults . Файл .mylogin.cnf создается с помощью mysql_config_editor , см. раздел 5.6.7.

  • --password[=password], -p[password]

    Пароль, чтобы использовать, соединяясь с сервером. Если Вы используете короткую форму опции (-p), у Вас не должно быть пробелов между опцией и паролем. Если Вы опускаете значение password после --password или -p в командной строке, mysql_upgrade его спросит явно.

    Определение пароля в командной строке нужно считать опасным, см. раздел 7.1.2.1. Вы можете использовать файл опции, чтобы избежать давать пароль в командной строке.

  • --pipe, -W

    В Windows соединиться с сервером, используя именованный канал. Эта опция применяется, только если сервер поддерживает соединения именованного канала.

  • --plugin-dir=dir_name

    Каталог, в котором можно искать плагины. Определите эту опцию, если --default-auth используется, чтобы определить плагин аутентификации, но mysql_upgrade не находит это. См. раздел 7.3.9.

  • --port=port_num, -P port_num

    Номер порта TCP/IP, чтобы использовать для соединения.

  • --print-defaults

    Напечатать название программы и все опции, которые это получает от файлов опции.

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    Протокол соединения, чтобы использовать для того, чтобы соединиться с сервером. Полезно, когда другие параметры соединения 0заставляли бы использоваться не тот протокол. Для деталей о допустимых значениях см. раздел 5.2.2.

  • --shared-memory-base-name=name

    В Windows имя совместно используемой памяти для соединений, сделанных, используя совместно используемую память для локального сервера. Значение по умолчанию MYSQL. Имя совместно используемой памяти является чувствительным к регистру.

    Сервер должен быть запущен с опцией --shared-memory .

  • --skip-sys-schema

    mysql_upgrade устанавливает схему sys, если это не установлено, и обновляет до текущей версии иначе. Опция --skip-sys-schema подавляет это поведение.

  • --socket=path, -S path

    Для соединений с localhost файл сокета Unix, чтобы использовать, или в Windows имя именованного канала, чтобы использовать.

  • --ssl*

    Опции, которые начинаются с --ssl, определяют, соединиться ли с сервером, используя SSL и указывают, где найти ключи SSL и сертификаты, см. раздел 7.4.5.

  • --tls-version=protocol_list

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

  • --upgrade-system-tables, -s

    Обновить только системные таблицы, но не данные.

  • --user=user_name, -u user_name

    Имя пользователя MySQL, чтобы использовать, соединяясь с сервером. Имя пользователя по умолчанию root.

  • --verbose

    Подробный режим. Напечатать больше информации о том, что делает программа.

  • --version-check, -k

    Проверить версию сервера, с которым mysql_upgrade соединяется, чтобы проверить, что это та же самая версия, для которой был создан mysql_upgrade. Если нет, mysql_upgrade завершается. Эта опция включена по умолчанию, чтобы отключить проверку, надо использовать --skip-version-check.

  • --write-binlog

    По умолчанию двоичное журналирование mysql_upgrade отключено. Вызовите программу с --write-binlog, если Вы хотите, чтобы действия были написаны в двоичный журнал.

    Выполнение mysql_upgrade не рекомендуется с MySQL Server, который работает с включенными глобальными операционными идентификаторами (Bug #13833710). Это потому, что включение GTID означает, что любые обновления, которые mysql_upgrade , возможно, должен был бы выполнить на системных таблицах, используя нетранзакционный механизм хранения, такой как MyISAM, потерпят неудачу. См. раздел 19.1.3.4.

5.5. Программы клиента MySQL

Этот раздел описывает программы клиента, которые соединяются с сервером MySQL.

5.5.1. Клиент mysql

mysql это простая оболочка SQL с поддержкой редактирования строки. Это поддерживает интерактивное и неинтерактивное использование. Когда используется в интерактивном режиме, результаты запроса представлены в формате таблицы ASCII. Когда используется не в интерактивном режиме (например, как фильтр), результат представлен в отделенном табуляциями формате. Выходной формат может быть изменен, используя опции команды.

Если у Вас есть проблемы из-за недостаточной памяти для больших наборов результатов, используйте --quick. Это вынуждает mysql получить с сервера строку за один раз вместо того, чтобы получить весь набор результатов и буферизовать это в памяти прежде, чем вывести на экран. Это сделано, возвращая набор результатов, используя mysql_use_result() C API в библиотеке клиент-сервер, а не mysql_store_result() .

Альтернативно, MySQL Shell предлагает доступ к X DevAPI. Для деталей см. раздел 3.8.

Использование mysql очень легко. Вызовите это из подсказки Вашего интерпретатора команды следующим образом:

shell> mysql db_name
Или:
shell> mysql --user=user_name --password=your_password db_name
Теперь введите запрос SQL, закончите его ;, \g или \G и нажмите Enter.

Ввод Control+C прерывает текущий запрос, если он есть, или отменяет какую-либо частичную входную строку иначе.

Вы можете выполнить запросы SQL в файле скрипта (пакетный файл):

shell> mysql db_name < script.sql > em>output.tab
В Unix mysql регистрирует запросы, выполненные в интерактивном режиме, в файле истории. См. раздел 5.5.1.3.

5.5.1.1. Опции mysql

mysql понимает следующие опции, которые могут быть определены в командной строке или в группах [mysql] и [client] файла опции. Для информации о файлах опции, используемых программами MySQL, см. раздел 5.2.6.

Таблица 5.8. Опции mysql

ФорматОписание
--auto-rehashВключить автоматическое рехэширование
--auto-vertical-outputВключить автоматический вертикальный вывод набора результатов
--batch Не использовать файл истории
--binary-modeВыключить трансляцию \r\n - to - \n и не рассматривать \0 как конец запроса
--bind-addressИспользовать определенный сетевой интерфейс, чтобы соединиться с MySQL Server
--character-sets-dirКаталог, где наборы символов установлены
--column-namesПисать имена столбцов в результатах
--column-type-infoВыведить на экран метаданные о наборе результатов
--comments Сохранить или убрать комментарии в запросах, посланных серверу
--compress Сжать всю информацию, посланную между клиентом и сервером
--connect-expired-passwordУказать серверу, что клиент может обработать режим песочницы для пароля с истекшим сроком
--connect_timeoutЧисло секунд перед тайм-аутом соединения
--database База данных, чтобы использовать
--debug Писать журнал отладки, поддержано только если MySQL был создан с поддержкой отладки
--debug-checkИнформация об отладке, когда программа завершена
--debug-info>Информация об отладке, памяти и статистика центрального процессора, когда программа завершена
--default-authПлагин аутентификации, чтобы использовать
--default-character-setОпределить набор символов по умолчанию
--defaults-extra-fileЧитать этот файл опций в дополнение к обычным файлам опций
--defaults-fileЧитать только этот файл опций
--defaults-group-suffixГрупповое значение суффикса опции
--delimiter Установить разделитель запросов
--enable-cleartext-plugin Включить плагин аутентификации открытого текста
--execute Выполнить запрос и выйти
--force Продолжить, даже если ошибка SQL происходит
--help Отобразить справку и выйти
--histignoreОбразцы, определяющие, которые запросы проигнорировать для регистрации
--host Соединиться с сервером MySQL на данном хосте
--html Вывод в формате HTML
--ignore-spacesПроигнорировать пробелы после имен функций
--init-commandЗапрос SQL, чтобы выполнить после соединения
--line-numbersНаписать номера строки для ошибок
--local-infileВключить или отключить LOCAL для LOAD DATA INFILE
--login-pathЧитать опции пути входа в систему из .mylogin.cnf
--max_allowed_packetМаксимальная пакетная длина, чтобы послать в или получить от сервера
--max_join_sizeАвтоматический предел для строк в соединении, используя --safe-updates
--named-commandsВключить названные команды mysql
--net_buffer_lengthРазмер буфера для TCP/IP и сокета
--no-auto-rehashВыключить автоматическое рехэширование
--no-beep Не сигналить, когда ошибки происходят
--no-defaultsНе читать файлы опции
--one-databaseПроигнорировать запросы кроме тех, которые для базы данных по умолчанию, названной в командной строке
--pager Используйте данную команду для вывода запроса оповещения
--password Пароль, чтобы использовать, соединяясь с сервером
--pipe В Windows использовать именованный канал
--plugin-dirКаталог, где плагины установлены
--port Номер порта TCP/IP, чтобы использовать для соединения
--print-defaultsНапечатайте опции по умолчанию
--prompt Установить подсказку в указанный формат
--protocol Протокол соединения, чтобы использовать
--quick Не кэшируовать каждый результат запроса
--raw Написать значения столбцов без преобразования escape
--reconnect Если соединение с сервером потеряно, автоматически попытаться повторно соединиться
--i-am-a-dummy, --safe-updatesПозволить только UPDATE и DELETE, которые определяют значения ключа
--secure-authНе посылать пароли серверу в старом формате (pre-4.1)
--select_limitАвтоматический предел для запросов SELECT, используя --safe-updates
--server-public-key-pathПуть к файлу, содержащему открытый ключ RSA
--shared-memory-base-nameНазвание совместно используемой памяти, чтобы использовать для соединений
--show-warningsПоказать предупреждения после каждого запроса, если есть
--sigint-ignoreПроигнорировать сигналы SIGINT (как правило, результат ввода Control+C)
--silent Тихий режим вывода
--skip-auto-rehashВыключить автоматическое рехэширование
--skip-column-namesНе писать имена столбцов в результатах
--skip-line-numbersПропустить номера строки для ошибок
--skip-named-commandsОтключить названные команды mysql
--skip-pager Отключить оповещение
--skip-reconnectОтключить пересоединение
--socket Для соединений с localhost файл сокета Unix
--ssl-ca Путь к файлу, который содержит список доверенных SSL CA
--ssl-capath Путь к каталогу, который содержит довереннные сертификаты SSL CA в формате PEM
--ssl-cert Путь к файлу, который содержит сертификат X509 в формате PEM
--ssl-cipher Список разрешенных шифров, чтобы использовать для шифрования соединения
--ssl-crl Путь к файлу, который содержит списки аннулирования сертификатов
--ssl-crlpath Путь к каталогу, который содержит файлы списка аннулирования сертификатов
--ssl-key Путь к файлу, который содержит ключ X509 в формате PEM
--ssl-mode Статус безопасности соединения с сервером
--syslog Зарегистрировать интерактивные запросы в syslog
--table Показать вывод в табличном формате
--tee Добавить копию вывода к названному файлу
--tls-versionПротоколы, разрешенные для безопасных соединений
--unbufferedСбросить буфер после каждого запроса
--user Имя пользователя MySQL, чтобы использовать, соединяясь с сервером
--verbose Подробный режим вывода
--version Отобразить версию и выйти
--vertical Запрос вывода строк вертикально (одна строка на значение столбца)
--wait Если соединение не может быть установлено, ждать и повторить вместо прерывания
--xml Вывод в формате XML
  • --help, -?

    Показать справку и выйти.

  • --auto-rehash

    Включить автоматическое рехэширование. Эта опция по умолчанию включает завершение имени базы данных, таблицы и столбца. Используйте --disable-auto-rehash , чтобы это включить. Это заставляет mysql запускаться быстрее, но Вы должны скомандовать rehash или сокращенно \#, если Вы хотите использовать завершение имени.

    Чтобы завершить имя, введите первую часть и нажмите Tab. Если имя однозначно, mysql завершает его. Иначе, Вы можете нажать Tab снова, чтобы видеть возможные имена, которые начинаются с того, что Вы до сих пор вводили. Завершение не происходит, если нет никакой базы данных по умолчанию.

    Эта особенность требует клиента MySQL, который собран с библиотекой readline. Как правило, библиотека readline недоступна в Windows.

  • --auto-vertical-output

    Заставить наборы результатов быть выведенными на экран вертикально, если они слишком широки для текущего окна, и использовать нормальный табличный формат иначе. Это относится к запросам, законченным ; or \G.

  • --batch, -B

    Печать результатов с использованием табуляции как разделителя столбца с каждой строкой на новой строке. С этой опцией mysql не использует файл истории.

    Пакетный режим приводит к нетабличному выходному формату и выходу специальных символов. Выход может быть отключен при использовании сырого режима, см. опцию --raw .

  • --binary-mode

    Эта опция помогает, обрабатывая вывод mysqlbinlog , который может содержать значения BLOB. По умолчанию mysql преобразует \r\n в запросе в виде строки к \n и интерпретирует \0 как разделитель запросов. --binary-mode отключает обе опции. Это также отключает все команды mysql, кроме charset и delimiter в неинтерактивном режиме (для ввода, переданного по каналу к mysql или загруженному с использованим команды source).

  • --bind-address=ip_address

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

  • --character-sets-dir=dir_name

    Каталог, где наборы символов установлены. См. раздел 11.5.

  • --column-names

    Писать имена столбцов в результатах.

  • --column-type-info

    Вывести на экран метаданные о наборе результатов.

  • --comments, -c

    Сохранить ли комментарии в запросах, посланных серверу. Значение по умолчанию: комментарии пропускать.

  • --compress, -C

    Сжать всю информацию, посланную между клиентом и сервером, если оба это допускают.

  • --connect-expired-password

    Укажите к серверу, что клиент может обработать режим песочницы, если учетная запись имеет пароль с истекшим сроком. Это может быть полезно для неинтерактивных запросов, потому что обычно сервер разъединяет неинтерактивных клиентов, которые пытаются соединиться с использованием учетной записи с паролем с истекшим сроком. См. раздел 7.3.8.

  • --database=db_name, -D db_name

    База данных, чтобы использовать. Это полезно прежде всего в файле опции.

  • --debug[=debug_options], -# [debug_options]

    Писать журнал отладки. Типичная строка debug_options: d:t:o,file_name. Значение по умолчанию d:t:o,/tmp/mysql.trace.

    Эта опция доступна, только если MySQL был создан, используя WITH_DEBUG. Релизы MySQL, обеспеченные Oracle, не созданы, используя эту опцию.

  • --debug-check

    Напечатать некоторую информацию об отладке, когда программа выходит.

  • --debug-info, -T

    Информация об отладке, памяти и статистика использования центрального процессора, когда программа выходит.

  • --default-auth=plugin

    Подсказка о клиентском плагине аутентификации, чтобы использовать. См. раздел 7.3.9.

  • --default-character-set=charset_name

    Использовать charset_name как набор символов значения по умолчанию для клиента и соединения.

    Эта опция может быть полезной, если операционная система использует один набор символов, а mysql по умолчанию использует другой. В этом случае вывод может быть отформатирован неправильно. Вы можете обычно решать такие проблемы при использовании этой опции, чтобы вынудить клиента использовать системный набор символов вместо своего.

    См. разделы 11.1.4 и 11.5.

  • --defaults-extra-file=file_name

    Читать этот файл опции после глобального файла опции, но (в Unix) перед пользовательским файлом опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

  • --defaults-file=file_name

    Использовать только данный файл опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

    Исключение: Даже с --defaults-file программы клиента читают .mylogin.cnf.

  • --defaults-group-suffix=str

    Читать не только обычные группы опции, но также и группы с обычными именами и суффиксом str. Например, mysql обычно читает группы [client] и [mysql]. Если опция --defaults-group-suffix=_other задана, mysql также читает группы [client_other] и [mysql_other].

  • --delimiter=str

    Установить разделитель запросов. Значение по умолчанию: символ точки с запятой (;).

  • --disable-named-commands

    Отключить названные команды. Используйте только форму \* или используйте названные команды только в начале строки, заканчивающейся точкой с запятой (;). mysql запускается с этой опции, включенной по умолчанию. Однако, даже с этой опцией, команды длинного формата все еще работают от первой строки. См. раздел 5.5.1.2.

  • --enable-cleartext-plugin

    Включить плагин аутентификации открытого текста mysql_clear_password, см. раздел 7.5.1.4.

  • --execute=statement, -e statement

    Выполнить запрос и выйти. Выходной формат значения по умолчанию подобен выводу --batch. См. раздел 5.2.4 для некоторых примеров. С этой опцией mysql не использует файл истории.

  • --force, -f

    Продолжить, даже если ошибка SQL происходит.

  • --histignore

    Отделенный двоеточиями список из одного или более образцов, определяющих запросы, чтобы проигнорировать при протоколировании. Эти образцы добавлены к списку образцов по умолчанию ("*IDENTIFIED*:*PASSWORD*"). Значение, определенное для этого журналирования, влияет на опции запросов, написанных файлу истории, и syslog, если опция --syslog задана. См. раздел 5.5.1.3.

  • --host=host_name, -h host_name

    Соединитесь с сервером MySQL на данном хосте.

  • --html, -H

    Вывод в формате HTML.

  • --ignore-spaces , -i

    Проигнорировать пробелы после имен функций. Эффект этого описан в обсуждении режима SQL IGNORE_SPACE (см. раздел 6.1.8).

  • --init-command=str

    Запрос SQL, чтобы выполнить после соединения с сервером. Если автопересоединение включено, запрос выполнен снова после того, как пересоединение происходит.

  • --line-numbers

    Написать номера строки для ошибок. Отключите это с --skip-line-numbers.

  • --local-infile[={0|1}]

    Включить или отключить LOCAL для LOAD DATA INFILE. Без значения опция включает LOCAL. Опция может быть дана как --local-infile=0 или --local-infile=1, чтобы явно отключить или включить LOCAL. Включение LOCAL не имеет никакого эффекта, если сервер также не поддерживает это.

  • --login-path=name

    Читать опции из названного пути входа в систему в .mylogin.cnf. Вход в систему является группой опции, содержащей опции, которые определяют, с каким сервером MySQL соединиться и как подтвердить подлинность. Чтобы создать или изменить файл пути входа в систему, используйте mysql_config_editor , см. раздел 5.6.7.

  • --named-commands, -G

    Разрешить названные команды mysql. Команды длинного формата разрешены, не только команды короткого формата. Например, quit и \q обе признаны. Используйте --skip-named-commands, чтобы отключить названные команды, см. раздел 5.5.1.2.

  • --no-auto-rehash , -A

    Это имеет тот же самый эффект, как --skip-auto-rehash. См. --auto-rehash .

  • --no-beep, -b

    Не пищать при любой ошибке.

  • --no-defaults

    Не читать файлы опции. Если запуск программы терпит неудачу из-за чтения неизвестных опций из файла опции, --no-defaults может использоваться, чтобы препятствовать тому, чтобы они были считаны.

    Исключение: если есть файл .mylogin.cnf, считан во всех случаях. Это разрешает паролям быть определенными более безопасным способом, чем в командной строке даже когда использована опция --no-defaults (.mylogin.cnf создается mysql_config_editor , см. раздел 5.6.7).

  • --one-database, -o

    Проигнорировать запросы кроме тех, которые происходят в то время, как база данных по умолчанию та, которая названа в командной строке. Эта опция является старой и должна использоваться осторожно. Фильтрация запросов базируется только на USE.

    Первоначально mysql выполняет запросы во вводе потому, что определение базы данных db_name в командной строке эквивалентно вставке USE db_name в начале ввода. Тогда для каждого USE, с которым сталкиваются, mysql принимает или отклоняет следующие запросы в зависимости от того, является ли база данных названной в командной строке. Контент запросов является несущественным.

    Предположите, что mysql вызван, чтобы обработать этот набор запросов:

    DELETE FROM db2.t2;
    USE db2;
    DROP TABLE db1.t1;
    CREATE TABLE db1.t1 (i INT);
    USE db1;
    INSERT INTO t1 (i) VALUES(1);
    CREATE TABLE db2.t1 (j INT);
    
    Если командная строка mysql --force --one-database db1, mysql обрабатывает ввод следующим образом:

    • DELETE выполнено, потому что база данных значения по умолчанию db1, даже при том, что запрос называет таблицу в иной базе данных.

    • DROP TABLE и CREATE TABLE не выполнены, потому что база данных по умолчанию не db1, даже при том, что запросы называют таблицу в db1.
    • INSERT и CREATE TABLE выполнены, потому что база данных по умолчанию db1, даже при том, что CREATE TABLE называет таблицу в иной базе данных.

  • --pager[=command]

    Используйте данную команду для вывода запроса оповещения. Если команда опущена, значение по умолчанию это значение Вашей переменной окружения PAGER. Допустимые варианты: less, more, cat [> filename] и т.п. Эта опция работает только в Unix и только в интерактивном режиме. Чтобы отключить оповещение, надо использовать --skip-pager. Раздел 5.5.1.2 обсуждает выходное оповещение далее.

  • --password[=password], -p[password]

    Пароль, чтобы использовать, соединяясь с сервером. Если Вы используете короткую форму опции (-p), у Вас не может быть пробелов между опцией и паролем. Если Вы опускаете password после --password или -p в командной строке, mysql запросит пароль явно.

    Определение пароля в командной строке нужно считать опасным. См. раздел 7.1.2.1. Вы можете использовать файл опции, чтобы избежать давать пароль в командной строке.

  • --pipe, -W

    В Windows соединитесь с сервером, используя именованный канал. Эта опция применяется, только если сервер поддерживает соединения именованного канала.

  • --plugin-dir=dir_name

    Каталог, в котором можно искать плагины. Определите эту опцию, если --default-auth используется, чтобы определить плагин аутентификации, но mysql не находит это. См. раздел 7.3.9.

  • --port=port_num, -P port_num

    Номер порта TCP/IP, чтобы использовать для соединения.

  • --print-defaults

    Напечатать название программы и все опции, которые это получает от файлов опции.

  • --prompt=format_str

    Установите подсказку в указанный формат. Значение по умолчанию mysql>. Специальные последовательности, которые может содержать подсказка, описаны в раздел 5.5.1.2.

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    Протокол соединения, чтобы использовать для того, чтобы соединиться с сервером. Полезно, когда другие параметры соединения обычно заставляли бы использовать не тот протокол. Для деталей о допустимых значениях см. раздел 5.2.2.

  • --quick, -q

    Не кэшировать каждый результат запроса, печатать каждую строку, когда это получено. Это может замедлить сервер, если вывод приостановлен. С этой опцией mysql не использует файл истории.

  • --raw, -r

    Для табличного вывода рамка вокруг столбцов позволяет одному значению столбца быть отличенным от другого. Для нетабличного вывода (который произведен в пакетном режиме или когда опции --batch или --silent даны), специальные символы оставляют в выводе, таким образом, они могут быть идентифицированы легко. Новая строка, tab, NUL и backslash записаны как \n, \t, \0 и \\. Опция --raw отключает это экранирование символов.

    Следующий пример демонстрирует табличный вывод против нетабличного и использование сырого режима, чтобы отключить экранировку:

    % 
  • --reconnect

    Если соединение с сервером потеряно, автоматически попытаться повторно соединиться. Попытка предпринята каждый раз, когда соединение потеряно. Чтобы подавить поведение пересоединения, надо использовать --skip-reconnect .

  • --safe-updates , --i-am-a-dummy , -U

    Разрешить только те UPDATE и DELETE, которые определяют, которые строки изменить при использовании значений ключа. Если Вы установили эту опцию в файле опции, Вы можете переопределить ее при использовании --safe-updates в командной строке. См. раздел 5.5.1.6.

  • --secure-auth

    Не посылайте пароли в сервер в старом формате (pre-4.1). Это блокирует соединения за исключением серверов, которые используют более новый формат пароля.

    Эта опция устарела и будет удалена. Это всегда включается и попытка отключить это ( --skip-secure-auth, --secure-auth=0 ) производит ошибку.

    Пароли, которые используют хеширующий метод pre-4.1, менее безопасны, чем пароли, которые используют новый метод хеширования пароля. Пароли Pre-4.1 устарели, и поддержка их была удалена.

  • --server-public-key-path=file_name

    Путь к файлу, содержащему серверный открытый ключ RSA. Файл должен быть в формате PEM. Открытый ключ используется для шифрования RSA-пароля клиента для соединений с сервером, сделанным, используя учетные записи, которые подтверждают подлинность с плагином sha256_password. Эта опция проигнорирована для учетных записей клиента, которые не подтверждают подлинность этим плагином. Это также проигнорировано, если шифрование пароля не необходимо, как имеет место, когда клиент соединяется с сервером, используя соединение SSL.

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

    См. раздел 7.5.1.2 .

    Эта опция доступна, только если MySQL был создан, используя OpenSSL.

  • --shared-memory-base-name=name

    В Windows имя совместно используемой памяти для соединений, сделанных, используя совместно используемую память для локального сервера. Значение по умолчанию MYSQL. Имя совместно используемой памяти является чувствительным к регистру.

    Сервер должен быть запущен с опцией --shared-memory , чтобы включить соединения совместно используемой памяти.

  • --show-warnings

    Предупреждения будут показаны после каждого запроса, если есть. Эта опция относится к интерактивному и пакетному режимам.

  • --sigint-ignore

    Игнорировать сигнал SIGINT (как правило, результат ввода Control+C).

  • --silent, -s

    Тихий режим. Произведет меньший вывод. Эта опция может быть дана многократно, чтобы произвести всё меньше и меньше вывода.

    Эта опция приводит к нетабличному выходному формату и экранировке специальных символов. Экранировка может быть отключена при использовании сырого режима, см. описание для опции --raw.

  • --skip-column-names, -N

    Не писать имена столбцов в результатах.

  • --skip-line-numbers, -L

    Не писать номера строки для ошибок. Полезно, когда Вы хотите сравнить файлы результата, которые включают сообщения об ошибках.

  • --socket=path , -S path

    Для соединений с localhost файл сокета Unix, чтобы использовать, или в Windows имя именованного канала.

  • --ssl*

    Опции, которые начинаются с --ssl, определяют, соединиться ли с сервером, используя SSL и указывают, где найти ключи SSL и сертификаты. См. раздел 7.4.5.

  • --syslog, -j

    Эта опция заставляет mysql посылать интерактивные запросы системному средству журналирования. В Unix это syslog, в Windows это журнал событий Windows. Место назначения, где зарегистрированные сообщения появляются, является зависимым от системы. В Linux место назначения часто файл /var/log/messages.

    Вот образец вывода, произведенного в Linux при использовании --syslog. Этот вывод отформатирован для удобочитаемости, каждое зарегистрированное сообщение фактически берет одну строку.

    Mar  7 12:39:25 myhost MysqlClient[20824]:
      SYSTEM_USER:'oscar', MYSQL_USER:'my_oscar', CONNECTION_ID:23,
      DB_SERVER:'127.0.0.1', DB:'--', QUERY:'USE test;'
    Mar  7 12:39:28 myhost MysqlClient[20824]:
      SYSTEM_USER:'oscar', MYSQL_USER:'my_oscar', CONNECTION_ID:23,
      DB_SERVER:'127.0.0.1', DB:'test', QUERY:'SHOW TABLES;'
    
    См. раздел 5.5.1.3.
  • --table, -t

    Вывод в формате таблицы. Это значение по умолчанию для интерактивного использования, но может использоваться, чтобы произвести табличный вывод в пакетном режиме.

  • --tee=file_name

    Дописать копию вывода к данному файлу. Эта опция работает только в интерактивном режиме. Раздел 5.5.1.2 обсуждает файлы далее.

  • --tls-version= protocol_list

    Протоколы, разрешенные клиентом для зашифрованных соединений. Значение: список разделенных запятой значений, содержащий одно или более имен протокола. Протоколы, которые могут быть названы по имени в этой опции, зависят от библиотеки SSL, использовавшейся, чтобы собрать MySQL. Для деталей см. раздел 7.4.3.

  • --unbuffered, -n

    Сбросить буфер после каждого запроса.

  • --user=user_name , -u user_name

    Имя пользователя MySQL, чтобы использовать, соединяясь с сервером.

  • --verbose, -v

    Подробный режим. Произведет больше вывода о том, что делает программа. Эта опция может быть дана многократно, чтобы произвести все больше вывода. Например, -v -v -v производит табличный выходной формат даже в пакетном режиме.

  • --version, -V

    Отобразить информацию о версии.

  • --vertical, -E

    Запрос выводит строки вертикально (одна строка на значение столбца). Без этой опции Вы можете определить вертикальный вывод для отдельных запросов, заканчивая их \G.

  • --wait, -w

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

  • --xml, -X

    Формат вывода XML.

    <field name="column_name">NULL</field>
    
    Вывод, когда --xml используется с соответствиями mysql из mysqldump --xml. См. раздел 5.5.4 .

    Вывод XML также использует пространство имен XML, как показано здесь:

    shell> mysql --xml -uroot -e "SHOW VARIABLES LIKE 'version%'"
    <?xml version="1.0"?>
    
    <resultset statement="SHOW VARIABLES LIKE 'version%'" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <row>
    <field name="Variable_name">version</field>
    <field name="Value">5.0.40-debug</field>
    </row>
    
    <row>
    <field name="Variable_name">version_comment</field>
    <field name="Value">Source distribution</field>
    </row>
    
    <row>
    <field name="Variable_name">version_compile_machine</field>
    <field name="Value">i686</field>
    </row>
    
    <row>
    <field name="Variable_name">version_compile_os</field>
    <field name="Value">suse-linux-gnu</field>
    </row>
    </resultset>
    
    См. Bug #25946.

Вы можете также установить следующие переменные при использовании --var_name=value.

  • connect_timeout

    Число секунд перед тайм-аутом соединения. Значение по умолчанию 0.

  • max_allowed_packet

    Максимальный размер буфера для коммуникации клиент-сервер. Значение по умолчанию составляет 16 МБ, максимум 1GB.

  • max_join_size

    Автоматический предел для строк в соединении, используя --safe-updates . Значение по умолчанию 1,000,000.

  • net_buffer_length

    Размер буфера для TCP/IP и коммуникации сокета. Значение по умолчанию составляет 16 КБ.

  • select_limit

    Автоматический предел для SELECT, использующих --safe-updates . Значение по умолчанию 1,000.

5.5.1.2. Команды mysql

mysql посылает каждый введенный запрос SQL серверу. Есть также ряд команд, которые интерпретирует сам mysql . Для списка этих команд надо ввести help или \h на подсказку mysql>:

mysql> help

List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
? (\?)         Synonym for `help'.
clear (\c)     Clear the current input statement.
connect (\r)   Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit (\e)      Edit command with $EDITOR.
ego (\G)       Send command to mysql server, display result vertically.
exit (\q)      Exit mysql. Same as quit.
go (\g)        Send command to mysql server.
help (\h)      Display this help.
nopager (\n)   Disable pager, print to stdout.
notee (\t)     Don't write into outfile.
pager (\P)     Set PAGER [to_pager]. Print the query results via PAGER.
print (\p)     Print current command.
prompt (\R)    Change your mysql prompt.
quit (\q)      Quit mysql.
rehash (\#)    Rebuild completion hash.
source (\.)    Execute an SQL script file. Takes a file name as an argument.
status (\s)    Get status information from the server.
system (\!)    Execute a system shell command.
tee (\T)       Set outfile [to_outfile]. Append everything into given outfile.
use (\u)       Use another database. Takes database name as argument.
charset (\C)   Switch to another charset. Might be needed for processing
               binlog with multi-byte charsets.
warnings (\W)  Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
resetconnection (\x) Clean session context.

For server side help, type 'help contents'
Если mysql вызван с опцией --binary-mode, все команды mysql отключены, кроме charset и delimiter в неинтерактивном режиме (для ввода, переданного по каналу mysql или загруженному использованием команды source).

У каждой команды есть подробная и краткая форма. Подробная форма не является чувствительной к регистру. Подробная форма может сопровождаться дополнительным разделителем точки с запятой, но краткая форма не должна.

Использование кратких команд в пределах многолинейного комментария /* ... */ не поддержано.

  • help [arg], \h [arg], \? [arg], ? [arg]

    Вывести на экран сообщение справки, перечисляющее доступные команды mysql.

    Если Вы обеспечиваете параметр help, mysql использует это в качестве строки поиска, чтобы получить доступ к серверной справке от содержания MySQL Reference Manual. См. раздел 5.5.1.4.

  • charset charset_name, \C charset_name

    Изменить набор символов по умолчанию и выпустить запрос SET NAMES. Это позволяет набору символов остаться синхронизированным на клиенте и сервере, если mysql выполнен с включенным автопереподключением (не рекомендуется), потому что указанный набор символов используется для повторного соединения.

  • clear, \c

    Очистить текущий ввод. Используйте это, если Вы передумали выполнять вводимый запрос.

  • connect [db_name host_name]], \r [db_name host_name]]

    Повторно соединиться с сервером. Дополнительное параметры имя базы данных и хоста могут быть даны, чтобы определить базу данных по умолчанию или хост. Если опущено, текущие значения используются.

  • delimiter str, \d str

    Изменить строку, которую mysql интерпретирует как разделитель между запросами SQL. Значение по умолчанию: символ точки с запятой (;).

    Строка разделителя может быть определена как заключенный или не заключенный в кавычки параметр. Заключение в кавычки может быть сделано с любой одинарной кавычкой ('), двойной кавычкой (") или обратной галочкой (`). Чтобы включать кавычку в пределах заключенной в кавычки строки, заключите строку в кавычки иным символом кавычки или выйдите из кавычки с наклонной чертой влево (\). Наклонной черты влево нужно избежать за пределами заключенных в кавычки строк, потому что это символ ESC для MySQL. Для не заключенного в кавычки параметра разделитель считан до первого пробела или конца строки. Для заключенного в кавычки параметра разделитель считан до соответствующей кавычки на строке.

    mysql интерпретирует случаи разделителя как разделитель запроса где угодно, кроме как в пределах заключенных в кавычки строк. Будьте осторожны относительно определения разделителя, который мог бы произойти в пределах других слов. Например, если Вы определяете разделитель как X, Вы будете неспособны использовать слово INDEX. mysql интерпретирует это как INDE сопровождаемый разделителем X.

    Когда разделитель, признанный mysql, установлен во что-то другое чем значение по умолчанию ;, случаи этого символа посылают в сервер без интерпретации. Однако, сервер непосредственно все еще интерпретирует ; как разделитель запросов. Это поведение на стороне сервера играет роль для выполнения многократных запросов (см. раздел 25.8.17) и парсинга тела хранимых процедур и функций, триггеров и событий (см. раздел 21.1).

  • edit, \e

    Отредактируйте текущий входной запрос. mysql проверяет значения переменных окружения EDITOR и VISUAL, чтобы определить, который редактор использовать. Редактор по умолчанию vi, если никакая переменная не установлена.

    Команда edit работает только в Unix.

  • ego, \G

    Послать текущий запрос серверу, который будет выполнен и будет выводить на экран результат, используя вертикальный формат.

  • exit, \q

    Выйти из mysql .

  • go, \g

    Послать текущий запрос серверу.

  • nopager, \n

    Отключить выходное оповещение. См. описание для pager.

    Команда nopager работает только в Unix.

  • notee, \t

    Отключите выходное копирование к файлу. См. tee.

  • nowarning, \w

    Отключить показ предупреждений после каждого запроса.

  • pager [command], \P [command]

    Включить выходное оповещение. При использовании опции --pager, когда Вы вызываете mysql , возможно просмотреть или искать результаты запроса в интерактивном режиме такими программами Unix, как less, more или любой другой подобной программой. Если Вы не определяете никакого значения для опции, mysql проверяет значение переменной окружения PAGER и приравнивает пейджер к этому. Функциональность пейджера работает только в интерактивном режиме.

    Выходное оповещение может быть включено в интерактивном режиме командой pager и выключено nopager. Команда берет дополнительный параметр, если дан, программа оповещения установлена в него. Без параметра пейджер установлен в пейджер, который был установлен в командной строке, или stdout, если никакой пейджер не был определен.

    Выходное оповещение работает только в Unix, потому что это использует функцию popen(), которая не существует в Windows. В Windows опция tee может использоваться вместо этого, чтобы сохранить вывод запроса, хотя это не столь удобно как pager для того, чтобы просмотреть вывод в некоторых ситуациях.

  • print, \p

    Напечатайте текущий входной запрос, не выполняя его.

  • prompt [str], \R [str]

    Реконфигурируйте подсказку mysql к данной строке. Специальные символьные последовательности, которые могут использоваться в подсказке, описаны позже в этом разделе.

    Если Вы определяете команду prompt без параметра, mysql сбрасывает подсказку к значению по умолчанию mysql>.

  • quit, \q

    Выход из mysql .

  • rehash, \#

    Восстановить автозавершения, которые включают завершение имен базы данных, таблицы и столбца в то время, как Вы вводите запросы. См. описание для опции --auto-rehash .

  • resetconnection, \x

    Сбросить соединение, чтобы очистить статус сеанса.

    Сброс соединения имеет эффекты, подобные mysql_change_user() или автопересоединению за исключением того, что соединение не закрыто и вновь открыто, а переаутентификация не сделано. См. разделы 25.8.7.3 и 25.8.16.

    Этот пример показывает как resetconnection очищает значение, поддержанное в статусе сеанса:

    mysql> SELECT LAST_INSERT_ID(3);
    +-------------------+
    | LAST_INSERT_ID(3) |
    +-------------------+
    | 3                 |
    +-------------------+
    
    mysql> SELECT LAST_INSERT_ID();
    +------------------+
    | LAST_INSERT_ID() |
    +------------------+
    | 3                |
    +------------------+
    
    mysql> resetconnection;
    mysql> SELECT LAST_INSERT_ID();
    +------------------+
    | LAST_INSERT_ID() |
    +------------------+
    | 0                |
    +------------------+
    
  • source file_name, \. file_name

    Считать названный файл и выполнить запросы, содержащиеся там. В Windows Вы можете определить разделители пути как / или \\.

  • status, \s

    Обеспечить информацию о статусе о соединении и сервере, который Вы используете. Если Вы работаете в режиме --safe-updates , status также печатает значения для переменных mysql, которые затрагивают Ваши запросы.

  • system command, \! command

    Выполнитт данную команду, используя Ваш интерпретатор команды по умолчанию.

    Команда system работает в Unix.

  • tee [file_name], \T [file_name]

    При использовании --tee , когда Вы вызываете mysql, Вы можете зарегистрировать запросы и их вывод. Все данные, выведенные на экран сохранены в данный файл. Это может быть очень полезно для отладки. mysql сбрасывает результаты в файл после каждого запроса, непосредственно перед тем, как печатает свою следующую подсказку. Функциональность работает только в интерактивном режиме.

    Вы можете активировать эту опцию в интерактивном режиме командой tee. Без параметра используется предыдущий файл. Файл tee может быть отключен командой notee. Выполнение tee снова повторно включает запись.

  • use db_name, \u db_name

    Использовать db_name как базу данных по умолчанию.

  • warnings, \W

    Включить показ предупреждений после каждого запроса (если есть).

Вот несколько подсказок о команде pager:

  • Вы можете использовать это, чтобы написать в файл, результаты идут только в файл:

    mysql> pager cat > /tmp/log.txt
    
    Вы можете также передать любые опции для программы, которую Вы хотите использовать в качестве Вашего пейджера:
    mysql> pager less -n -i -S
    
  • В предыдущем примере, отметьте опцию -S. Вы можете счесть это очень полезным для просмотра широких результатов запроса. Иногда очень широкий набор результатов трудно читать на экране. Опция -S less может сделать набор результатов намного больше читаемым, потому что Вы можете прокрутить это горизонтально с использованием клавиш со стрелкой вправо и влево. Вы можете также использовать -S в интерактивном режиме в пределах less, чтобы включить горизонтальный режим просмотра. Для получения дополнительной информации читайте manual page less:
    shell> man less
    
  • Опции -F и -X могут использоваться с less, чтобы заставить это выходить, если вывод поместится на одном экране, что удобно, когда никакая прокрутка не нужна:
    mysql> pager less -n -i -S -F -X
    
  • Вы можете определить очень сложные команды пейджера для того, чтобы обработать вывод запроса:
    mysql> pager cat | tee /dr1/tmp/res.txt \
              < | tee /dr2/tmp/res2.txt | less -n -i -S
    
    В этом примере команда послала бы результаты запроса в два файла в двух различных каталогах на двух различных файловых системах, смонтированных как /dr1 и /dr2 и выведет на экран результаты с применением less.

Вы можете также объединить функции tee и pager. Имейте включенный файл tee и установите pager в less, теперь Вы в состоянии просмотреть результаты, используя less и все еще добавите все в файл в то же самое время. Различие между Unix tee, используемый с pager и встроенной в mysql командой tee состоит в том, что встроенная tee работает, даже если Вы не имеете доступа к Unix tee. Встроенная tee также журналирует все, что напечатано на экране, тогда как Unix tee с pager не регистрирует так много. Дополнительно журналирование файла tee может быть включено в интерактивном режиме изнутри mysql. Это полезно, когда Вы хотите зарегистрировать некоторые запросы к файлу, но не другие.

Команда prompt реконфигурирует значение по умолчанию mysql>. Строка для того, чтобы определить подсказку, может содержать следующие специальные последовательности.

ОпцияОписание
\C Текущий идентификатор соединения
\cСчетчик, который постепенно увеличивается для каждого запроса, который Вы делаете
\DПолная текущая дата
\dБаза данных по умолчанию
\hХост сервера
\lТекущий разделитель
\mМинуты текущего времени
\nСимвол перевода строки
\OТекущий месяц в трехбуквенном формате (Jan, Feb, ...)
\oТекущий месяц в числовом формате
\Pam/pm
\pТекущий порт TCP/IP или файл сокета
\R Текущее время в 24-часовом формате (0-23)
\r Текущее время, стандартный 12-часовой формат (1-12)
\SТочка с запятой
\sСекунды текущего времени
\tСимвол табуляции
\U

Ваше полное user_name@host_name для учетной записи

\uВаше имя пользователя
\vВерсия сервера
\wТекущий день недели в трехбуквенном формате (Mon, Tue, ...)
\YТекущий год, четыре цифры
\yТекущий год, две цифры
\_Пробел
\ Пробел (следует за наклонной чертой влево)
\'Одинарная кавычка
\"Двойная кавычка
\\Символ \
\x

x, для любого не упомянутого выше x

Вы можете установить подсказку несколькими способами:

  • Используйте переменную окружения. Вы можете установить переменную окружения MYSQL_PS1 к строке запроса. Например:

    shell> export MYSQL_PS1="(\u@\h) [\d]> "
    
  • Используйте параметр командной строки. Вы можете установить опцию --prompt в командной строке mysql:
    shell> mysql --prompt="(\u@\h) [\d]> "
    (user@host) [database]>
    
  • Используйте файл опции. Вы можете установить опцию prompt в группе [mysql] любого файла опций MySQL, например, /etc/my.cnf или .my.cnf в Вашем корневом каталоге. Например:
    [mysql]
    prompt=(\\u@\\h) [\\d]>\\_
    
    В этом примере отметьте, что наклонные черты влево удвоены. Если Вы устанавливаете подсказку, используя опцию prompt в файле опции, желательно удвоить наклонные черты влево, используя специальные быстрые опции. Есть некоторое перекрытие в наборе допустимых быстрых опций и наборе специальных escape-последовательностей, которые признаны в файлах опции. Правила для escape-последовательностей в файлах опции перечислены в разделе 5.2.6. Перекрытие может вызвать у Вас проблемы, если Вы используете единственные наклонные черты влево. Например, \s интерпретируется как пробел, а не как текущее значение секунд. Следующий пример показывает, как определить подсказку в пределах файла опции, чтобы включать текущее время в формате HH:MM:SS>:
    [mysql]
    prompt="\\r:\\m:\\s> "
    
  • Установите подсказку в интерактивном режиме. Вы можете изменить свою подсказку в интерактивном режиме при использовании команды prompt (или \R):
    mysql> prompt (\u@\h) [\d]>\_
    PROMPT set to '(\u@\h) [\d]>\_'
    (user@host) [database]>
    (user@host) [database]> prompt
    Returning to default PROMPT of mysql>
    mysql><
    

5.5.1.3. Журналирование mysql

mysql может делать эти типы журналирования для запросов, выполненных в интерактивном режиме:

  • В Unix mysql пишет запросы в файл истории. По умолчанию этот файл называют .mysql_history в Вашем корневом каталоге. Чтобы определить иной файл, установите значение переменной окружения MYSQL_HISTFILE.

  • На всех платформах, если дана опция --syslog, mysql пишет запросы системному средству журналирования. В Unix это syslog, в Windows это Windows Event Log. Место назначения, где зарегистрированные сообщения появляются, зависит от системы. В Linux место назначения часто файл /var/log/messages.

Следующее обсуждение описывает характеристики, которые относятся ко всем типам журналирования, и предоставляет информацию, определенную для каждого типа журналирования.

Как журналирование происходит

Для каждого включенного места назначения, журналирование запросы происходит следующим образом:

  • Запросы зарегистрированы только когда выполнено в интерактивном режиме. Запросы являются неинтерактивными, например, когда считаны из файла или канала. Также возможно подавить журналирование запросы при использовании опций --batch или --execute.

  • Запросы проигнорированы и не зарегистрированы, если они соответствуют какому-либо образцу в списке ignore. Этот список описан позже.
  • mysql регистрирует каждую непроигнорированную, непустую строку запроса индивидуально.
  • Если непроигнорированный запрос охватывает многократные строки (не включая разделитель), mysql связывает строки, чтобы сформировать полный запрос, отображает символы новой строки на пробелы и регистрирует результат плюс разделитель.

Следовательно, входной запрос, который охватывает многократные строки, может быть зарегистрирован дважды. Рассмотрите этот ввод:

mysql> SELECT
    -> 'Today is'
    -> ,
    -> CURDATE()
    -> ;
В этом случае mysql пишет SELECT, 'Today is' , ,, CURDATE() и ; строки пока читает их. Это также регистрирует полный запрос после отображения SELECT\n'Today is'\n,\nCURDATE() на SELECT 'Today is' , CURDATE() плюс разделитель. Таким образом, эти строки появляются в зарегистрированном выводе:
SELECT
'Today is'
,
CURDATE()
;
SELECT 'Today is' , CURDATE();
mysql игнорирует регистрацию запросов, которые соответствуют любому образцу в списке ignore. По умолчанию список образцов "*IDENTIFIED*:*PASSWORD*", чтобы проигнорировать запросы, которые относятся к паролям. Соответствующий образец не является чувствительным к регистру. В пределах образцов два символа являются особенными:

  • ? любой единственный символ.

  • * любая последовательность из ноля или большего количества символов.

Чтобы определить дополнительные образцы, используйте опцию --histignore или задайте переменную окружения MYSQL_HISTIGNORE. Если оба варианта определены, значение опции имеет приоритет. Значение должно быть отделенным двоеточиями списком из одного или более образцов, которые добавлены к списку образца по умолчанию.

Образцы, определенные в командной строке, возможно, должны были бы быть заключены в кавычки или экранированы, чтобы препятствовать тому, чтобы Ваш интерпретатор команды обработал их особенно. Например, чтобы подавить журналирование для UPDATE и DELETE в дополнение к запросам, которые относятся к паролям, вызовите mysql:

shell> mysql --histignore="*UPDATE*:*DELETE*"
Управление файлом истории

Файл .mysql_history должен быть защищен с рестриктивным режимом доступа, потому что чувствительная информация могла бы быть написана в него, например, текст запросов SQL, которые содержат пароли. См. раздел 7.1.2.1.

Если Вы не хотите поддерживать файл истории, сначала удалите .mysql_history, если есть. Затем используйте любой из следующих методов, чтобы препятствовать тому, чтобы это было создано снова:

  • Установите переменную окружения MYSQL_HISTFILE в /dev/null. Чтобы заставить эту установку вступать в силу каждый раз, когда Вы входите в систему, поместите это в один из файлов запуска Вашей оболочки.

  • Создайте .mysql_history как символическую ссылку к /dev/null, это надо сделать только однажды:
    shell> ln -s /dev/null $HOME/.mysql_history
    
Журналирование характеристик syslog

Если дана опция --syslog, mysql пишет интерактивные запросы системному средству журналирования. У журналирования сообщения есть следующие характеристики.

Журналирование происходит в уровень information. Это соответствует приоритету LOG_INFO для syslog в Unix/Linux syslog и EVENTLOG_INFORMATION_TYPE для Windows Event Log.

Размер сообщения ограничен 1024 байтами.

Сообщения состоят из идентификатора MysqlClient сопровождаемого этими значениями:

  • SYSTEM_USER

    Системное имя пользователя (имя для входа в систему) или --, если пользователь неизвестен.

  • MYSQL_USER

    Имя пользователя MySQL (определенное опцией --user) или --, если пользователь неизвестен.

  • CONNECTION_ID:

    Идентификатор соединения клиента. Это то же самое, как в пределах сеанса CONNECTION_ID().

  • DB_SERVER

    Хост сервера или --, если хост неизвестен.

  • DB

    База данных по умолчанию или --, если никакая база данных не была выбрана.

  • QUERY

    Текст зарегистрированного запроса.

Вот образец вывода, произведенного в Linux при использовании --syslog. Этот вывод отформатирован для удобочитаемости, каждое зарегистрированное сообщение фактически берет одну строку.

Mar  7 12:39:25 myhost MysqlClient[20824]:
  SYSTEM_USER:'oscar', MYSQL_USER:'my_oscar', CONNECTION_ID:23,
  DB_SERVER:'127.0.0.1', DB:'--', QUERY:'USE test;'
Mar  7 12:39:28 myhost MysqlClient[20824]:
  SYSTEM_USER:'oscar', MYSQL_USER:'my_oscar', CONNECTION_ID:23,
  DB_SERVER:'127.0.0.1', DB:'test', QUERY:'SHOW TABLES;'

5.5.1.4. Справка сервера mysql

mysql> help search_string
Если Вы обеспечиваете параметр help, mysql использует это в качестве строки поиска, чтобы получить доступ к серверной справке MySQL Reference Manual. Правильное функционирование этой команды требует, чтобы таблицы справки в базе данных mysql были инициализированы с информацией о теме справки (см. раздел 6.1.10).

Если там нет совпадения со строкой поиска, поиск терпит неудачу:

mysql> help me

Nothing found
Please try to run 'help contents' for a list of all accessible topics
Используйте help contents , чтобы видеть список категорий справки:
mysql> help contents
You asked for help about help category: "Contents"
For more information, type 'help <item>', where <item> is one of the
following categories:
   Account Management
   Administration
   Data Definition
   Data Manipulation
   Data Types
   Functions
   Functions and Modifiers for Use with GROUP BY
   Geographic Features
   Language Structure
   Plugins
   Storage Engines
   Stored Routines
   Table Maintenance
   Transactions
   Triggers
Если строка поиска соответствует многим элементам, mysql показывает список соответствия тем:
mysql> help logs
Many help items for your request exist.
To make a more specific request, please type 'help <item>',
where <item> is one of the following topics:
   SHOW
   SHOW BINARY LOGS
   SHOW ENGINE
   SHOW LOGS
Используйте тему в качестве строки поиска, чтобы видеть элемент справки для той темы:
mysql> help show binary logs
Name: 'SHOW BINARY LOGS'
Description:
Syntax:
SHOW BINARY LOGS
SHOW MASTER LOGS

Lists the binary log files on the server. This statement is used as
part of the procedure described in [purge-binary-logs], that shows how
to determine which logs can be purged.

mysql> SHOW BINARY LOGS;
+---------------+-----------+
| Log_name      | File_size |
+---------------+-----------+
| binlog.000015 | 724935    |
| binlog.000016 | 733481    |
+---------------+-----------+
Строка поиска может содержать подстановочные символы % и _. У них есть то же самое значение, что касается соответствия образцу операций, выполненных с LIKE. Например, HELP rep% возвращает список тем, которые начинаются с rep:
mysql> HELP rep%
Many help items for your request exist.
To make a more specific request, please type 'help <item>',
where <item> is one of the following
topics:
   REPAIR TABLE
   REPEAT FUNCTION
   REPEAT LOOP
   REPLACE
   REPLACE FUNCTION

5.5.1.5. Выполнение запросов SQL из текстового файла

mysql, как правило, используется в интерактивном режиме:

shell> mysql db_name
Однако, также возможно поместить Ваши запросы SQL в файл и затем велеть mysql читать свой ввод из того файла. Чтобы сделать так, создайте текстовый файл text_file, который содержит запросы, которые Вы хотите выполнить. Тогда вызовите mysql :
shell> mysql db_name < text_file
Если Вы помещаете USE db_name как первый запрос в файле, не нужно определить имя базы данных в командной строке:
shell> mysql < text_file
Если Вы уже выполняете mysql , Вы можете выполнить файл скрипта SQL, используя команду source или \.:
mysql> source file_name
mysql> \. file_name
Иногда Вы можете хотеть, чтобы Ваш скрипт вывел на экран информацию о работе. Для этого Вы можете вставить запросы так:
SELECT '<info_to_display>' AS ' ';
Этот запрос выведет <info_to_display>.

Вы можете также вызвать mysql с опцией --verbose, которая заставляет каждый запрос быть выведенным на экран прежде, чем результат, к которому он приводит.

mysql игнорирует символы Unicode byte order mark (BOM) в начале входных файлов. Ранеео он считал их и посылал в сервер, приводя к синтаксической ошибке. Присутствие BOM не заставляет mysql изменять свой набор символов по умолчанию. Чтобы сделать это, вызовите mysql с опцией --default-character-set=utf8.

См. раздел 4.5.

5.5.1.6. Подсказки по mysql

Этот раздел описывает некоторые методы, которые могут помочь Вам использовать mysql .

5.5.1.6.1. Редактирование входной строки

mysql поддерживает редактирование входной строки, которое позволяет Вам изменить текущую входную строку или вспомнить предыдущие входные строки. Например, left-arrow и right-arrow перемещают курсор горизонтально в пределах текущей входной строки, а up-arrow и down-arrow вверх и вниз через набор ранее вводимых строк. Backspace удаляет символ перед курсором, ввод новых символов вводит их в позиции курсора. Чтобы ввести строку, нажмите Enter.

В Windows последовательности клавиш для редактирования те же самые, как поддержано для редактирования команды в консолях. В Unix сочетания клавиш зависят от входной библиотеки, использовавшейся, чтобы создать mysql (например, libedit или readline).

Документация для libedit и readline доступны онлайн. Чтобы изменить набор сочетаний клавиш, разрешенных данной входной библиотекой, определите привязки клавиш в файле запуска библиотеки. Это файл в Вашем корневом каталоге: .editrc для libedit и .inputrc для readline.

Например, в libedit Control+W удаляет все перед текущей позицией курсора и Control+U удаляет всю строку. В readline Control+W удаляет слово перед курсором и Control+U удаляет все перед текущей позицией курсора. Если mysql был создан, используя libedit, пользователь, который предпочитает readline для этих двух клавиш может вставить следующие строки в свой файл .editrc:

bind "^W" ed-delete-prev-word
bind "^U" vi-kill-line-prev
Чтобы видеть текущий набор привязок клавиш, временно поместите строку, которая говорит только bind в конце .editrc. mysql покажет привязку, когда он запустится.

5.5.1.6.2. Поддержка Unicode в Windows

Windows обеспечивает API на основе UTF-16LEдля того, чтобы читать из и писать в консоль, клиент mysql для Windows в состоянии использовать эти API. Установщик Windows создает элемент в меню MySQL под именем MySQL command line client - Unicode. Этот элемент вызывает mysql с набором свойств, чтобы сообщить через консоль серверу, что надо применить Unicode.

Чтобы использовать в своих интересах эту поддержку вручную, выполните mysql в пределах консоли, которая использует совместимый шрифт Unicode и устанавливает набор символов по умолчанию в набор символов Unicode, который поддержан для коммуникации с сервером:

  1. Откройте окно консоли.

  2. Перейдите в свойства консоли, выберите вкладку шрифта и выберите Lucida Console или некоторый другой совместимый шрифт Unicode. Это необходимо, потому что консоли запускаются по умолчанию, используя растровый шрифт DOS, который является несоответствующим для Unicode.
  3. Выполните mysql.exe с опцией --default-character-set=utf8 (или utf8mb4). Эта опция необходима потому, что utf16le не поддержан как набор символов соединения.

С этими изменениями mysql будет использовать Windows API, чтобы общаться с консолью, используя UTF-16LE и с сервером, используя UTF-8. Пункт меню, упомянутый ранее, устанавливает набор шрифтов и набор символов как только что описано.

Чтобы избежать этих шагов каждый раз, когда Вы выполняете mysql, Вы можете создать ярлык, который вызывает mysql.exe. Ярлык должен установить шрифт консоли в Lucida Console или некоторый другой совместимый шрифт Unicode и передать опцию --default-character-set=utf8 (или utf8mb4) mysql.exe.

Альтернативно, создайте ярлык, который только устанавливает шрифт и установите набор символов в группе [mysql] файла my.ini :

[mysql]
default-character-set=utf8
5.5.1.6.3. Отображение результатов запроса вертикально

Некоторые результаты запроса намного больше читаемы, когда выведены на экран вертикально, а не в обычном горизонтальном формате таблицы. Запросы могут быть выведены на экран вертикально, заканчивая запрос с \G вместо точки с запятой. Например, более длинные текстовые значения, которые включают новые строки, намного легче считать с вертикальным выводом:

mysql> SELECT * FROM mails WHERE LENGTH(txt) < 300 LIMIT 300,1\G
*************************** 1. row ***************************
  msg_nro: 3068
 date: 2000-03-01 23:29:50
time_zone: +0200
mail_from: Monty
reply: monty@no.spam.com
  mail_to: "Thimble Smith" <tim@no.spam.com>
sbj: UTF-8
txt: >>>>> "Thimble" == Thimble Smith writes:

Thimble> Hi.  I think this is a good idea.  Is anyone familiar
Thimble> with UTF-8 or Unicode? Otherwise, I'll put this on my
Thimble> TODO list and see what happens.

Yes, please do that.

Regards,
Monty
 file: inbox-jani-1
 hash: 190402944
1 row in set (0.09 sec)
5.5.1.6.4. Использование опции --safe-updates

Для новичков полезная опция запуска --safe-updates (или --i-am-a-dummy). Полезно для случаев, когда Вы, возможно, скомандовали DELETE FROM tbl_name, но забыли про WHERE. Обычно такой запрос удаляет все строки из таблицы, что очень полезно в целях обучения. С --safe-updates Вы можете удалить строки только определяя значения ключа, которые идентифицируют их. Это помогает предотвратить несчастные случаи.

Когда Вы используете --safe-updates, mysql делает следующий запрос, когда соединяется с сервером MySQL:

SET sql_safe_updates=1, sql_select_limit=1000, max_join_size=1000000;
См. раздел 6.1.5.

SET имеет следующие эффекты:

  • Вам не разрешают выполнить UPDATE или DELETE, если Вы не определяете ключевое ограничение в WHERE или не зададите LIMIT (можно то и другое сразу):

    UPDATE tbl_name SET not_key_column=val
           WHERE key_column=val;
    UPDATE tbl_name SET not_key_column=val LIMIT 1;
    
  • Сервер ограничивает все большие SELECT 1000 строк, если запрос не включает LIMIT.
  • Сервер прерывает многотабличный SELECT, который, вероятно, должен обработать больше 1000000 комбинаций строк.

Чтобы определить пределы, отличающиеся от 1000 и 1000000, Вы можете переопределить значения по умолчанию при использовании опций --select_limit и --max_join_size:

shell> mysql --safe-updates --select_limit=500 --max_join_size=10000
5.5.1.6.5. Отключение mysql реконнекта

Если mysql теряет его соединение с сервером, посылая запрос, это немедленно и автоматически пытается повторно соединиться с сервером и послать запрос снова. Однако, даже если mysql преуспевает в том, чтобы повторно соединиться, Ваше первое соединение закончилось и все Ваши предыдущие объекты сеанса и настройки потеряны: временные таблицы, режим autocommit и и переменные, определяемые пользователем и сеанса. Кроме того, любая текущая транзакция откатывается. Это поведение может быть опасным для Вас, как в следующем примере, где сервер был закрыт и перезапущен между первым и вторым запросами, о чем Вы не знали:

mysql> SET @a=1;
Query OK, 0 rows affected (0.05 sec)

mysql> INSERT INTO t VALUES(@a);
ERROR 2006: MySQL server has gone away
No connection. Trying to reconnect...
Connection id:1
Current database: test

Query OK, 1 row affected (1.30 sec)

mysql> SELECT * FROM t;
+------+
| a    |
+------+
| NULL |
+------+
1 row in set (0.05 sec)
Переменная @a была потеряна с соединением и после пересоединения это неопределено. Если важно иметь mysql прерванный с ошибкой, если соединение было потеряно, Вы можете запустить клиент mysql с опцией --skip-reconnect .

См. раздел 25.8.16.

5.5.2. mysqladmin Клиент для управления сервером MySQL

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

Вызов mysqladmin :

shell> mysqladmin [options] command
                     [command-arg]
                     [command
                     [command-arg]] ...
mysqladmin поддерживает следующие команды. Некоторые из команд берут параметр после названия команды.

  • create db_name

    Создайте новую базу данных db_name.

  • debug

    Скажите серверу писать информацию об отладке в журнал ошибок. Формат и контент этой информации подвержены изменениям.

    Это включает информацию о Event Scheduler. См. раздел 21.4.5.

  • drop db_name

    Удалить базу данных db_name и все ее таблицы.

  • extended-status

    Вывести на экран переменные состояния сервера и их значения.

  • flush-hosts

    Сбросить всю информацию в кэше хоста.

  • flush-logs [log_type ...]

    Сбросить все журналы.

    mysqladmin flush-logs разрешает дополнительным типам журнала быть данными, чтобы определить, которые журналы сбросить. После flush-logs Вы можете обеспечить разделенный пробелами список из одного или больше следующих типов журнала: binary, engine, error, general, relay и slow. Они соответствуют типам журнала, которые могут быть определены для FLUSH LOGS.

  • flush-privileges

    Перезагрузить таблицы привилегий (аналог reload).

  • flush-status

    Очистить переменные статуса.

  • flush-tables

    Сбросить все таблицы.

  • flush-threads

    Сбросить кэш потока.

  • kill id,id,...

    Уничтожьте потоки сервера. Если многократные значения идентификаторов потока даны, в списке не должно быть никаких пробелов.

  • password new_password

    Установите новый пароль. Это изменяет пароль на new_password для учетной записи, которую Вы используете с mysqladmin для того, чтобы соединиться с сервером. Таким образом, в следующий раз, когда Вы вызываете mysqladmin (или любую другую программу клиента) с использованием той же самой учетной записи, Вы должны будете определить новый пароль.

    Если new_password содержит пробелы или другие символы, которые являются особенными для Вашего интерпретатора команды, Вы должны приложить его в пределах кавычек. В Windows надо убедиться, что использовали двойные кавычки, а не одинарные кавычки, одинарные кавычки не отрезаны от пароля, а интерпретируются как часть пароля. Например:

    shell> mysqladmin password "my new password"
    
    В MySQL 8.0 новый пароль может быть опущен после password. В этом случае mysqladmin запрашивает значение пароля, которое позволяет Вам избежать определять пароль в командной строке. Исключение значения пароля должно быть сделано только, если password заключительная команда в mysqladmin . Иначе следующий параметр будет взят в качестве пароля.

    Не используйте эту команду, если сервер был запущен с --skip-grant-tables. Никакое изменение пароля не будет применено. Это истина, даже если Вы перед password выполните flush-privileges на той же самой командной строке, чтобы повторно включить таблицы привилегий, потому что работа сброса происходит после того, как Вы соединяетесь. Однако, Вы можете использовать mysqladmin flush-privileges , чтобы повторно включить таблицы привилегий и затем использовать отдельную команду mysqladmin password , чтобы изменить пароль.

  • ping

    Проверьте, доступен ли сервер. Статус возврата от mysqladmin 0, если сервер работает, 1, если это не так. Это 0 даже в случае такой ошибки, как Access denied, потому что это означает, что сервер выполняется, но отказался от соединения, что отличается от не работающего сервера.

  • processlist

    Покажите список активных потоков сервера. Это походит на вывод SHOW PROCESSLIST. Если дана опция --verbose, вывод походит на вывод SHOW FULL PROCESSLIST, см. раздел 14.7.5.29.

  • reload

    Перезагрузите таблицы привилегий.

  • refresh

    Сбросить все таблицы, закрыть и открыть снова файлы системного журнала.

  • shutdown

    Остановите работу сервера.

  • start-slave

    Запустите репликацию на ведомом сервере.

  • status

    Выведите на экран короткое сообщение о состоянии сервера.

  • stop-slave

    Остановить репликацию на ведомом сервере.

  • variables

    Выведите на экран системные переменные сервера и их значения.

  • version

    Информация о версии сервера.

Все команды могут быть сокращены к любой уникальной приставке. Например:

shell> mysqladmin proc stat
+----+-------+-----------+----+---------+------+-------+------------------+
| Id | User  | Host      | db | Command | Time | State | Info             |
+----+-------+-----------+----+---------+------+-------+------------------+
| 51 | monty | localhost |    | Query   |    0 |       | show processlist |
+----+-------+-----------+----+---------+------+-------+------------------+
Uptime: 1473624  Threads: 1  Questions: 39487
Slow queries: 0  Opens: 541  Flush tables: 1
Open tables: 19  Queries per second avg: 0.0268

mysqladmin status выводит на экран следующие значения:

  • Uptime

    Число секунд, которое сервер MySQL работал.

  • Threads

    Число активных потоков (клиенты).

  • Questions

    Число запросов от клиентов, начиная с запуска сервера.

  • Slow queries

    Число запросов, которые заняли больше long_query_time секунд, см. раздел 6.4.5.

  • Opens

    Число открытых таблиц сервера.

  • Flush tables

    Число выполенных команд flush-*, refresh и reload.

  • Open tables

    Число таблиц, которые в настоящее время открыты.

Если Вы выполняете mysqladmin shutdown, соединяясь с локальным сервером, используя файл сокета Unix, mysqladmin ждет, пока файл ID процесса сервера не был удален, чтобы гарантировать, что сервер остановился должным образом.

mysqladmin поддерживает следующие опции, которые могут быть определены в командной строке или в группах [mysqladmin] и [client] файла опции. Для информации о файлах опции, используемых программами MySQL, см. раздел 5.2.6.

Таблица 5.9. Опции mysqladmin

ФорматОписание
--bind-addressИспользуйте определенный сетевой интерфейс, чтобы соединиться с MySQL Server
--compressСжать всю информацию, посланную между клиентом и сервером
--connect_timeoutЧисло секунд перед тайм-аутом соединения
--count Число итераций повторного выполнения команды
--debug Писать журнал отладки
--debug-checkИнформация об отладке, когда программа выходит
--debug-infoИнформация об отладке, памяти и статистика центрального процессора, когда программа выходит
--default-authПлагин аутентификации, чтобы использовать
--default-character-setОпределите набор символов по умолчанию
--defaults-extra-fileЧитать этот файл опции в дополнение к обычным файлам опции
--defaults-fileЧитать только этот файл опции
--defaults-group-suffixГрупповое значение суффикса опции
--enable-cleartext-plugin Включить плагин аутентификации открытого текста
--force Продолжить, даже если ошибка SQL происходит
--help Отобразить сообщение справки
--host Соединитесь с сервером MySQL на данном хосте
--login-pathЧитать опции пути входа в систему из .mylogin.cnf
--no-beepНе пищать при ошибке
--no-defaultsНе читать файлы опции
--passwordПароль, чтобы использовать, соединяясь с сервером
--pipe В Windows соединитесь с сервером, используя именованный канал
--plugin-dirКаталог, где плагины установлены
--port Номер порта TCP/IP, чтобы использовать для соединения
--print-defaultsНапечатать опции по умолчанию
--protocolПротокол соединения, чтобы использовать
--relativeПоказать различие между текущими и предыдущими значениями, когда используется с опцией --sleep
--secure-authНе посылайте пароли серверу в старом формате (pre-4.1)
--shared-memory-base-nameНазвание совместно используемой памяти, чтобы использовать для соединений совместно используемой памяти
--show-warningsПокажите предупреждения после выполнения запроса
--shutdown_timeoutМаксимальное количество секунд, которое ждать завершения работы сервера
--silent Тихий режим
--sleep Выполнить команды неоднократно, между циклами спать
--socket Для соединений с localhost файл сокета Unix
--ssl-ca Путь к файлу, который содержит список доверенных SSL CA
--ssl-capath Путь к каталогу, который содержит доверенные сертификаты SSL CA в формате PEM
--ssl-cert Путь к файлу, который содержит сертификат X509 в формате PEM
--ssl-cipher Список разрешенных шифров, чтобы использовать для шифрования соединения
--ssl-crl Путь к файлу, который содержит списки аннулирования сертификатов
--ssl-crlpathПуть к каталогу, который содержит файлы списка аннулирования сертификатов
--ssl-key Путь к файлу, который содержит ключ X509 в формате PEM
--ssl-mode Статус безопасности соединения с сервером
--tls-versionПротоколы, разрешенные для безопасных соединений
--user Имя пользователя MySQL, чтобы использовать, соединяясь с сервером
--verboseПодробный режим
--versionОтобразить информацию о версии
--verticalЗапрос выводит строки вертикально (одна строка на значение столбца)
--wait Если соединение не может быть установлено, ждать и повторить вместо прерывания
  • --help, -?

    Отобразить справочное сообщение.

  • --bind-address=ip_address

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

  • --character-sets-dir=dir_name

    Каталог, где наборы символов установлены. См. раздел 11.5.

  • --compress, -C

    Сжать всю информацию, посланную между клиентом и сервером, если оба это умеют.

  • --count=N, -c N

    Число итераций, которые сделать для повторного выполнения команды, если дана опция --sleep .

  • --debug[=debug_options], -# [debug_options]

    Писать журнал отладки. Типичная строка debug_options d:t:o,file_name. Значение по умолчанию d:t:o,/tmp/mysqladmin.trace.

  • --debug-check

    Напечатать некоторую информацию об отладке, когда программа выходит.

  • --debug-info

    Информация об отладке, памяти и статистика использования центрального процессора, когда программа выходит.

  • --default-auth=plugin

    Подсказка о клиентском плагине аутентификации, чтобы использовать. См. раздел 7.3.9.

  • --default-character-set=charset_name

    Использовать charset_name как набор символов по умолчанию. См. раздел 11.5.

  • --defaults-extra-file=file_name

    Читать этот файл опции после глобального файла опции, но (в Unix) перед пользовательским файлом опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

  • --defaults-file=file_name

    Используйте только данный файл опции. Если файл не существует или он иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

    Исключение: Даже с --defaults-file клиент читает .mylogin.cnf.

  • --defaults-group-suffix=str

    Читать не только обычные группы опции, но также и группы с обычными именами и суффиксом str. Например, mysqladmin обычно читает группы [client] и [mysqladmin]. Если дана опция --defaults-group-suffix=_other, mysqladmin также читает группы [client_other] и [mysqladmin_other].

  • --enable-cleartext-plugin

    Включите плагин аутентификации открытого текста mysql_clear_password, см. раздел 7.5.1.4.

  • --force, -f

    Не просить подтверждение для drop db_name. С многократными командами продолжить, даже если ошибка происходит.

  • --host=host_name, -h host_name

    Соединитесь с сервером MySQL на данном хосте.

  • --login-path=name

    Читать опции из названного пути входа в систему в файле пути входа в систему .mylogin.cnf. login path является группой опции, содержащей опции, которые определяют, с каким сервером MySQL соединиться и как подтвердить подлинность. Чтобы создать или изменить файл пути входа в систему, используйте mysql_config_editor , см. раздел 5.6.7.

  • --no-beep, -b

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

  • --no-defaults

    Не читать файлы опции. Если запуск программы терпит неудачу из-за чтения неизвестных опций из файла опции, --no-defaults может использоваться, чтобы препятствовать тому, чтобы они были считаны.

    Исключение: файл .mylogin.cnf, если есть, считан во всех случаях. Это разрешает паролям быть определенными более безопасным способом, чем в командной строке даже когда применена --no-defaults . .mylogin.cnf создается mysql_config_editor , см. раздел 5.6.7.

  • --password[=password], -p[password]

    Пароль, чтобы использовать, соединяясь с сервером. Если Вы используете короткую форму опции (-p), у Вас не должно быть пробелов между опцией и паролем. Если Вы опускаете password после --password или -p, mysqladmin запросит пароль явно.

    Определение пароля в командной строке нужно считать опасным, см. раздел 7.1.2.1. Вы можете использовать файл опции, чтобы избежать давать пароль в командной строке.

  • --pipe, -W

    В Windows соединитесь с сервером, используя именованный канал. Эта опция применяется, только если сервер поддерживает соединения именованного канала.

  • --plugin-dir=dir_name

    Каталог, в котором можно искать плагины. Определите эту опцию, если --default-auth используется, чтобы определить плагин аутентификации, но mysqladmin не находит его. См. раздел 7.3.9.

  • --port=port_num, -P port_num

    Номер порта TCP/IP, чтобы использовать для соединения.

  • --print-defaults

    Напечатайте название программы и все опции, которые это получает от файлов опции.

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    Протокол соединения, чтобы использовать для того, чтобы соединиться с сервером. Полезно, когда другие параметры соединения используют не тот протокол. См. раздел 5.2.2.

  • --relative, -r

    Покажите различие между текущими и предыдущими значениями, когда используется опция --sleep. Эта опция работает только с командой extended-status.

  • --show-warnings

    Покажите предупреждения, следующие из выполнения запросов, посланных серверу.

  • --secure-auth

    Не посылайте пароли в сервер в старом формате (pre-4.1). Это блокирует соединения за исключением серверов, которые используют более новый формат пароля.

    Эта опция устарела. Это всегда включается и попытка отключить это ( --skip-secure-auth, --secure-auth=0 ) всегда производит ошибку.

    Пароли, которые используют хэш pre-4.1, менее безопасны, чем пароли, которые используют родной метод хеширующего пароля и должны исключаться. Пароли Pre-4.1 устарели, и поддержка их была удалена.

  • --shared-memory-base-name=name

    В Windows имя совместно используемой памяти для соединений, сделанных, используя совместно используемую память для локального сервера. Значение по умолчанию MYSQL. Имя совместно используемой памяти является чувствительным к регистру.

    Сервер должен быть запущен с опцией --shared-memory, чтобы включить соединения совместно используемой памяти.

  • --silent, -s

    Выйти тихо, если соединение с сервером не может быть установлено.

  • --sleep=delay, -i delay

    Выполняйте команды неоднократно, засыпая на delay секунд между циклами. Опция --count определяет число итераций. Если --count не дан, mysqladmin выполняет команды пока не будет прерван.

  • --socket=path, -S path

    Для соединений с localhost файл сокета Unix или в Windows имя канала.

  • --ssl*

    Опции, которые начинаются с --ssl, определяют, соединиться ли с сервером, используя SSL, и указывают, где найти ключи и сертификаты SSL. См. раздел 7.4.5.

  • --tls-version=protocol_list

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

  • --user=user_name, -u user_name

    Имя пользователя MySQL, чтобы использовать, соединяясь с сервером.

  • --verbose, -v

    Подробный режим. Напечатать больше информации о том, что делает программа.

  • --version, -V

    Отобразить информацию о версии.

  • --vertical , -E

    Вывод вертикально. Это подобно опции --relative , но вывод печатается вертикально.

  • --wait[=count], -w[count]

    Если соединение не может быть установлено, ждать и повторить вместо прерывания. Если значение count дано, оно указывает число раз, сколько повторить. Значение по умолчанию: однократно.

Вы можете также установить следующие переменные при использовании --var_name=value.

  • connect_timeout

    Максимальное количество секунд перед тайм-аутом соединения. Значение по умолчанию 43200 (12 часов).

  • shutdown_timeout

    Максимальное количество секунд, чтобы ждать завершения работы сервера. Значение по умолчанию 3600 (1 час).

5.5.3. mysqlcheck табличная программа обслуживания

mysqlcheck выполняет табличное обслуживание: это проверяет, восстанавливает, оптимизирует или анализирует таблицы.

Каждая таблица заблокирована и поэтому недоступна другим сеансам в то время, как она обрабатывается, хотя для операций проверки таблица заблокирована только с блокировкой READ (см. раздел 14.3.5). Табличные операции обслуживания могут быть отнимающими много времени, особенно для больших таблиц. Если Вы используете опцию --databases или --all-databases, чтобы обработать все таблицы в одной или более базах данных, вызов mysqlcheck может занять много времени. Это также истина для mysql_upgrade , потому что эта программа вызывает mysqlcheck , чтобы проверить все таблицы и восстановить их в случае необходимости.

mysqlcheck подобен в функциональности myisamchk, но работает по-другому. Основное операционное различие в том, что mysqlcheck должен использоваться, когда mysqld работает, тогда как myisamchk должен использоваться, когда это не так. Выгода от использования mysqlcheck в том, что Вы не должны остановить сервер, чтобы выполнить табличное обслуживание.

mysqlcheck использует запросы SQL CHECK TABLE, REPAIR TABLE, ANALYZE TABLE и OPTIMIZE TABLE удобным для пользователя способом. Это определяет, какие запросы использовать Вы хотите выполнить, а затем посылает запросы серверу, который будет их выполнять. Для деталей о механизмах хранения см. описания этих запросов в разделе 14.7.2.

Механизм хранения MyISAM поддерживает все четыре операции обслуживания, таким образом mysqlcheck может использоваться, чтобы выполнить любую из них на таблицах MyISAM. Другие механизмы хранения не обязательно поддерживают все операции. В таких случаях на экран будет выведено сообщение об ошибке. Например, если test.t является таблицей типа MEMORY, попытка проверить это приводит к этому результату:

shell> mysqlcheck test t
test.t
note: The storage engine for the table doesn't support check
Если mysqlcheck не способен восстановить таблицу, см. раздел 2.10.4. Это будет иметь место, например, для таблиц InnoDB, которые можно проверить CHECK TABLE , но не починить их REPAIR TABLE.

Лучше делать резервное копирование таблицы прежде, чем выполнить работу ремонта таблицы, при некоторых обстоятельствах работа могла бы вызвать потерю данных. Возможные причины включают, но не ограничены ошибками файловой системы.

Есть три общих способа вызвать mysqlcheck :

shell> mysqlcheck [options] db_name
                     [tbl_name ...]
shell> mysqlcheck [options] --databases db_name ...
shell> mysqlcheck [options] --all-databases
Если Вы не называете таблиц после db_name или если Вы используете --databases или --all-databases , все базы данных проверены.

У mysqlcheck есть специальная функция по сравнению с другими программами клиента. Поведение значения по умолчанию проверки таблиц (--check) может быть изменено, переименовывая исполняемый модуль. Если Вы хотите иметь инструмент, который восстанавливает таблицы по умолчанию, Вы должны только сделать копию mysqlcheck под именем mysqlrepair или сделать символическую ссылку к mysqlcheck под именем mysqlrepair. Если Вы вызываете mysqlrepair, это восстанавливает таблицы.

Имена, показанные в следующей таблице, могут использоваться, чтобы изменить логику действий mysqlcheck.

КомандаСмысл
mysqlrepair Опция по умолчанию --repair
mysqlanalyze Опция по умолчанию --analyze
mysqloptimize Опция по умолчанию --optimize

mysqlcheck поддерживает следующие опции, которые могут быть определены в командной строке или в группах [mysqlcheck] и [client] файла опции. Для информации о файлах опции, используемых программами MySQL, см. раздел 5.2.6.

Таблица 5.10. Опции mysqlcheck

ФорматОписание
--all-databasesПроверить все таблицы во всех базах данных
--all-in-1Выполнить единственный запрос для каждой базы данных, который называет все таблицы этой базы данных
--analyzeПроанализируйте таблицы
--auto-repairЕсли проверенная таблица повреждена, автоматически восстановить
--bind-addressИспользуйте определенный сетевой интерфейс, чтобы соединиться с MySQL Server
--character-sets-dirКаталог, где наборы символов установлены
--check Проверьте таблицы на ошибки
--check-only-changedПроверка только таблиц, которые изменились, начиная с последней проверки
--check-upgradeВызовите CHECK TABLE с опцией FOR UPGRADE
--compressСжать всю информацию, посланную между клиентом и сервером
--databasesИнтерпретируйте все параметры как имена базы данных
--debug Писать журнал отладки
--debug-checkИнформация об отладке, когда программа выходит
--debug-infoИнформация об отладке, памяти и статистика центрального процессора, когда программа выходит
--default-authПлагин аутентификации, чтобы использовать
--default-character-setОпределите набор символов по умолчанию
--defaults-extra-fileЧитать этот файл опции в дополнение к обычным файлам опции
--defaults-fileЧитать только этот файл опции
--defaults-group-suffixГрупповое значение суффикса опции
--enable-cleartext-plugin Включить плагин аутентификации открытого текста
--extendedПроверьте и восстановите таблицы
--fast Проверка только таблиц, которые не были закрыты должным образом
--force Продолжите, даже если ошибка SQL происходит
--help Отобразить справку и выйти
--host Соединитесь с сервером MySQL на данном хосте
--login-pathЧитать опции пути входа в систему из .mylogin.cnf
--medium-checkСделайте проверку, которая быстрее, чем --extended
--no-defaultsНе читать файлы опции
--optimizeОптимизируйте таблицы
--passwordПароль, чтобы использовать, соединяясь с сервером
--pipe В Windows соединитесь с сервером, используя именованный канал
--plugin-dirКаталог, где плагины установлены
--port Номер порта TCP/IP, чтобы использовать для соединения
--print-defaultsНапечатайте опции по умолчанию
--protocolПротокол соединения, чтобы использовать
--quick Самый быстрый метод проверки
--repair Выполните ремонт, который может восстановить почти все, кроме уникальных ключей, которые не уникальны
--secure-authНе посылайте пароли серверу в старом формате (pre-4.1)
--shared-memory-base-nameНазвание совместно используемой памяти, чтобы использовать для соединений совместно используемой памяти
--silent Тихий режим
--skip-databaseПропустите эту базу данных в выполняемых операциях
--socket Для соединений с localhost, файл сокета Unix
--ssl-ca Путь к файлу, который содержит список доверенных SSL CA
--ssl-capath Путь к каталогу, который содержит доверенные сертиифкаты SSL CA в формате PEM
--ssl-cert Путь к файлу, который содержит сертификат X509 в формате PEM
--ssl-cipher Список разрешенных шифров, чтобы использовать для шифрования соединения
--ssl-crl Путь к файлу, который содержит списки аннулирования сертификатов
--ssl-crlpathПуть к каталогу, который содержит файлы списка аннулирования сертификатов
--ssl-key Путь к файлу, который содержит ключ X509 в формате PEM
--ssl-mode Статус безопасности соединения с сервером
--tables Переопределение опции --databases или -B
--tls-versionПротоколы, разрешенные для безопасных соединений
--use-frmДля операций ремонта на таблицах MyISAM
--user Имя пользователя MySQL, чтобы использовать, соединяясь с сервером
--verboseПодробный режим
--versionИнформация о версии и выход
--write-binlogЖурналировать запросы ANALYZE, OPTIMIZE, REPAIR в двоичный журнал. --skip-write-binlog добавляет NO_WRITE_TO_BINLOG к этим запросам.
  • --help, -?

    Отобразить справку и выйти.

  • --all-databases, -A

    Проверьте все таблицы во всех базах данных. Это то же самое, как использование --databases с перечислением всех баз данных в командной строке, за исключением того, что INFORMATION_SCHEMA и performace_schema не проверены. Они могут быть явно проверены, называя их в опции --databases .

  • --all-in-1, -1

    Вместо того, чтобы делать запрос для каждой таблицы, выполните единственный для каждой базы данных, которая называет все таблицы той базы данных, которая будет обработана.

  • --analyze, -a

    Проанализируйте указанные таблицы.

  • --auto-repair

    Если проверенная таблица повреждена, автоматически восстановите ее. Любой необходимый ремонт сделан после того, как все таблицы были проверены.

  • --bind-address=ip_address

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

  • --character-sets-dir=dir_name

    Каталог, где наборы символов установлены. См. раздел 11.5.

  • --check, -c

    Проверьте таблицы на ошибки. Это работа по умолчанию.

  • --check-only-changed, -C

    Проверка только таблиц, которые изменились, начиная с последней проверки или не были закрыты должным образом.

  • --check-upgrade, -g

    Вызов CHECK TABLE с опцией FOR UPGRADE, чтобы проверить таблицы на несовместимости с текущей версией сервера.

  • --compress

    Сжать всю информацию, посланную между клиентом и сервером.

  • --databases, -B

    Обработайте все таблицы в названных базах данных. Обычно mysqlcheck обрабатывает параметр имени в командной строке как имя базы данных и любые последующие имена как имена таблиц. С этой опцией это обрабатывает все параметры имени как имена баз данных.

  • --debug[=debug_options], -# [debug_options]

    Писать журнал отладки. Типичная строка debug_options d:t:o,file_name. По умолчанию это d:t:o.

  • --debug-check

    Напечатайте некоторую информацию об отладке, когда программа выходит.

  • --debug-info

    Информация об отладке, памяти и статистика использования центрального процессора, когда программа выходит.

  • --default-character-set=charset_name

    Использовать charset_name как набор символов по умолчанию. См. раздел 11.5.

  • --defaults-extra-file=file_name

    Читать этот файл опции после глобального файла опции, но (в Unix) перед пользовательским файлом опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

  • --defaults-file=file_name

    Используйте только данный файл опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

    Исключение: Даже с опцией --defaults-file программы клиента читают .mylogin.cnf.

  • --defaults-group-suffix=str

    Читайте не только обычные группы опции, но также и группы с обычными именами и суффиксом str. Например, mysqlcheck обычно читает группы [client] и [mysqlcheck]. Если дана опция --defaults-group-suffix=_other, mysqlcheck также читает группы [client_other] и [mysqlcheck_other].

  • --extended , -e

    Если Вы используете эту опцию, чтобы проверить таблицы, она гарантирует, что они на 100% последовательны, но занимает много времени.

    Если Вы используете эту опцию, чтобы восстановить таблицы, она выполняет расширенный ремонт, который может не только занять много времени, но может произвести много строк мусора!

  • --default-auth=plugin

    Подсказка о клиентском плагине аутентификации, см. раздел 7.3.9.

  • --enable-cleartext-plugin

    Включите плагин аутентификации открытого текста mysql_clear_password, см. раздел 7.5.1.4.

  • --fast, -F

    Проверка только таблиц, которые не были закрыты должным образом.

  • --force, -f

    Продолжите, даже если ошибка SQL происходит.

  • --host=host_name, -h host_name

    Соединитесь с сервером MySQL на данном хосте.

  • --login-path=name

    Читайте опции из названного пути входа в систему в .mylogin.cnf. login path является группой опции, содержащей опции, которые определяют, с каким сервером MySQL соединиться и как подтвердить подлинность. Чтобы создать или изменить файл пути входа в систему, используйте mysql_config_editor , см. раздел 5.6.7.

  • --medium-check, -m

    Сделайте проверку, которая быстрее --extended . Это находит только 99.99% всех ошибок, что должно быть достаточно хорошо в большинстве случаев.

  • --no-defaults

    Не читайте файлы опции. Если запуск программы терпит неудачу из-за чтения неизвестных опций из файла опции, --no-defaults может использоваться, чтобы препятствовать тому, чтобы они были считаны.

    Исключение: файл .mylogin.cnf, если это существует, считан во всех случаях. Это разрешает паролям быть определенными более безопасным способом, чем в командной строке даже когда есть опция --no-defaults . .mylogin.cnf создается mysql_config_editor , см. раздел 5.6.7.

  • --optimize , -o

    Оптимизируйте заданные таблицы.

  • --password[=password], -p[password]

    Пароль, чтобы использовать, соединяясь с сервером. Если Вы используете короткую форму опции (-p), Вы не можете иметь пробелы между опцией и паролем. Если Вы опускаете password после --password или -p в командной строке, mysqlcheck запросит пароль явно.

    Определение пароля в командной строке нужно считать опасным, см. раздел 7.1.2.1. Вы можете использовать файл опции, чтобы избежать указания пароля в командной строке.

  • --pipe, -W

    В Windows соединитесь с сервером, используя именованный канал. Эта опция применяется, только если сервер поддерживает соединения именованного канала.

  • --plugin-dir=dir_name

    Каталог, в котором можно искать плагины. Определите эту опцию, если используется опция --default-auth, чтобы определить плагин аутентификации, но mysqlcheck его не нашел, см. раздел 7.3.9.

  • --port=port_num, -P port_num

    Номер порта TCP/IP, чтобы использовать для соединения.

  • --print-defaults

    Печатать название программы и все опции, которые это получает от файлов опции.

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    Протокол соединения, чтобы использовать для того, чтобы соединиться с сервером. Полезно, когда другие параметры соединения обычно заставляли бы использовать не тот протокол. Для деталей о допустимых значениях см. раздел 5.2.2.

  • --quick, -q

    Если Вы используете эту опцию, чтобы проверить таблицы, она препятствует тому, чтобы проверка просмотрела строки, чтобы проверить на неправильные ссылки. Это самый быстрый метод проверки.

    Если Вы используете эту опцию, чтобы восстановить таблицы, она пытается восстановить только индексное дерево. Это самый быстрый метод ремонта.

  • --repair, -r

    Выполните ремонт, который может восстановить почти все, кроме уникальных ключей, которые ТЕПЕРЬ не уникальны.

  • --secure-auth

    Не посылайте пароли в старом формате (pre-4.1). Это блокирует соединения за исключением серверов, которые используют более новый формат пароля.

    Эта опция устарела. Это всегда включается и попытка выключения ( --skip-secure-auth, --secure-auth=0 ) производит ошибку авторизации.

    Пароли, которые используют хэш pre-4.1, менее безопасны, чем пароли, которые используют родной метод хеширования пароля. Пароли Pre-4.1 устарели.

  • --shared-memory-base-name=name

    В Windows имя совместно используемой памяти для соединений, сделанных, используя совместно используемую память для локального сервера. Значение по умолчанию MYSQL. Имя совместно используемой памяти является чувствительным к регистру.

    Сервер должен быть запущен с опцией --shared-memory .

  • --silent, -s

    Тихий режим. Напечатать только сообщения об ошибках.

  • --skip-database=db_name

    Не включайте названную базу данных (имя чувствительно к регистру) в операции, выполненные mysqlcheck.

  • --socket=path, -S path

    Для соединений с localhost, файл сокета Unix, чтобы использовать, или в Windows имя именованного канала.

  • --ssl*

    Опции, которые начинаются с --ssl, определяют, соединиться ли с сервером, используя SSL, и указывают, где найти ключи SSL и сертификаты, см. раздел 7.4.5.

  • --tables

    Переопределить опции --databases или -B. Все параметры имени после опции расценены как имена таблиц.

  • --tls-version=protocol_list

    Протоколы, разрешенные клиентом для зашифрованных соединений. Значение: список разделенных запятой значений, содержащий одно или более имен протокола. Протоколы, которые могут быть названы по имени в этой опции, зависят от библиотеки SSL, использовавшейся, чтобы собрать MySQL. Для деталей см. раздел 7.4.3.

  • --use-frm

    Для операций ремонта на MyISAM получите структуру таблицы из словаря данных так, чтобы таблица могла быть восстановлена, даже если файл звголовка .MYI поврежден.

  • --user=user_name, -u user_name

    Имя пользователя MySQL, чтобы использовать, соединяясь с сервером.

  • --verbose, -v

    Подробный режим. Информация о различных этапах работы программы.

  • --version, -V

    Отобразить информацию о версии.

  • --write-binlog

    Эта опция включена по умолчанию, чтобы ANALYZE TABLE, OPTIMIZE TABLE и REPAIR TABLE, произведенные mysqlcheck , записаны в двоичный журнал. Используйте --skip-write-binlog, чтобы добавить NO_WRITE_TO_BINLOG к запросам так, чтобы они не были зарегистрированы. Используйте --skip-write-binlog, когда эти запросы нельзя послать в ведомые устройства репликации или выполнить, используя двоичные журналы для восстановления после резервного копирования.

5.5.4. mysqldump Резервная программа базы данных

mysqldump выполняет логические резервные копии, производя ряд запросов SQL, которые могут быть выполнены, чтобы воспроизвести оригинальные определения объекта базы данных и табличные данные. Это выводит одну или более баз данных MySQL для резервного копирования или передачи в другой SQL-сервер. mysqldump может также произвести вывод в CSV, другом разграниченном тексте или формате XML.

mysqldump требует, по крайней мере, привилегию SELECT для выводимых таблиц, SHOW VIEW для вывода представлений, TRIGGER для резервирования триггеров и LOCK TABLES, если не используется опция --single-transaction. Определенные опции могли бы потребовать других привилегий как отмечено в описаниях опции.

Чтобы перезагрузить файл дампа, Вам нужны привилегии, чтобы выполнить запросы, которые это содержит, такие как соответствующее привилегии CREATE для объектов, которые будут созданы теми запросами.

Вывод mysqldump может включать запросы ALTER DATABASE, которые изменяют сопоставление базы данных. Они могут использоваться, когда дамп сохранил кодировки символов. Чтобы перезагружать файл дампа, содержащий такие запросы, нужна привилегия ALTER для затронутой базы данных.

Дамп, сделанный, используя PowerShell в Windows с выходным перенаправлением, создает файл, у которого есть кодирование UTF-16:

shell> mysqldump [options] > dump.sql
Но UTF-16 не разрешен как набор символов соединения (см. раздел 11.1.4), таким образом, файл дампа не будет загружаться правильно. Чтобы обойти эту проблему, используйте опцию --result-file, которая создает вывод в формате ASCII:
shell> mysqldump [options] --result-file=dump.sql

Работа и соображения масштабируемости

mysqldump включают удобство и гибкость рассмотрения или даже редактирования вывода перед восстановлением. Вы можете клонировать базы данных для развития и работы DBA или произвести небольшие изменения существующей базы данных для того, чтобы проверить. Это не быстрое или масштабируемое решение для того, чтобы поддержать значительное количество данных. С большими размерами данных, даже если резервный шаг занимает соответствующее время, восстановление данных может быть очень медленным, потому что переигрывание запросов SQL вовлекает дисковый ввод/вывод для вставки, построения индексов и так далее.

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

  • Если Ваши таблицы прежде всего InnoDB или если у Вас есть смесь InnoDB и MyISAM, рассмотрите использование mysqlbackup из MySQL Enterprise Backup (доступно как часть подписки Enterprise). Это обеспечивает лучшую работу для InnoDB с минимальным разрушением, это может также поддержать таблицы MyISAM и другие механизмы хранения, это предоставляет много удобных возможностей приспосабливать различные резервные скрипты. См. раздел 27.2.

mysqldump может получить и вывести табличное содержание построчно или это может получить весь контент таблицы и буферизовать его в памяти прежде, чем вывести. Буферизация в памяти может быть проблемой, если Вы выводите большие таблицы. Чтобы вывести таблицу построчно, используйте опцию --quick (или --opt, которая включает --quick ). Опция --opt --quick ) включена по умолчанию, так что, чтобы включить буферизацию в памяти, надо использовать --skip-quick.

Если Вы используете недавнюю версию mysqldump, чтобы произвести дамп, который будет перезагружен в очень старый сервер MySQL, используйте --skip-opt вместо --opt или --extended-insert.

См. раздел 8.4.

Синтаксис вызова

Есть общие способы использовать mysqldump, чтобы вывести одну или большее количество таблиц, одну или более полных баз данных или весь сервер MySQL, как показано здесь:

shell> mysqldump [options] db_name
                    [tbl_name ...]
shell> mysqldump [options] --databases
                    db_name ...
shell> mysqldump [options] --all-databases
Чтобы вывести все базы данных, не называйте таблицы после db_name или используйте опции --databases или --all-databases.

Чтобы видеть список опций, введите mysqldump --help .

Синтаксис опций, алфавитное резюме

mysqldump поддерживает следующие опции, которые могут быть определены в командной строке или в группах [mysqldump] и [client] файла опции. Для информации о файлах опции, используемых программами MySQL, см. раздел 5.2.6.

Таблица 5.11. Опции mysqldump

ФорматОписание
--add-drop-databaseДобавить DROP DATABASE перед каждым CREATE DATABASE
--add-drop-tableДобавить DROP TABLE перед каждым CREATE TABLE
--add-drop-triggerДобавить DROP TRIGGER перед каждым CREATE TRIGGER
--add-locks Окружите каждый табличный дамп LOCK TABLES и UNLOCK TABLES
--all-databasesВыведите все таблицы во всех базах данных
--allow-keywordsПозвольте создание имен столбцов, которые являются ключевыми словами
--apply-slave-statementsВключить STOP SLAVE перед CHANGE MASTER и START SLAVE в конце вывода
--bind-addressИспользуйте определенный сетевой интерфейс, чтобы соединиться с MySQL Server
--character-sets-dirКаталог, где наборы символов установлены
--commentsДобавьте комментарии, чтобы вывести файл
--compactПроизведите более компактный вывод
--compatibleПроизведите вывод, который более совместим с другими системами базы данных или с более старыми серверами MySQL
--complete-insertИспользуйте полные запросы INSERT, которые включают имена столбцов
--compressСжать всю информацию, посланную между клиентом и сервером
--create-optionsВключайте все MySQL-специфичные табличные опции в CREATE TABLE
--databasesИнтерпретируйте все параметры имени как имена базы данных
--debugПисать журнал отладки
--debug-checkИнформация об отладке, когда программа выходит
--debug-infoИнформация об отладке, памяти и статистика центрального процессора, когда программа выходит
--default-authПлагин аутентификации, чтобы использовать
--default-character-setОпределите набор символов по умолчанию
--defaults-extra-fileЧитать этот файл опции в дополнение к обычным файлам опции
--defaults-fileЧитать только этот файл опции
--defaults-group-suffixГрупповое значение суффикса опции
--delete-master-logsНа основном сервере репликации удалите двоичные журналы после выполнения работы дампа
--disable-keysДля каждой таблицы окружите запросы INSERT запросами, чтобы отключить и включить ключи
--dump-dateВключайте дату дампа как комменитарий "Dump completed on", если есть опция --comments
--dump-slaveВключить CHANGE MASTER, который перечисляет координаты в двоичном журнале ведущего устройства
--enable-cleartext-plugin Включите плагин аутентификации открытого текста
--eventsСобытия дампа от выведенных баз данных
--extended-insertМногострочный формат INSERT
--fields-enclosed-byОпция используется с --tab и имеет то же самое значение как соответствующий пункт для LOAD DATA INFILE
--fields-escaped-byОпция используется с --tab и имеет то же самое значение как соответствующий пункт для LOAD DATA INFILE
--fields-optionally-enclosed-by Опция используется с --tab и имеет то же самое значение как соответствующий пункт для LOAD DATA INFILE
--fields-terminated-byОпция используется с --tab и имеет то же самое значение как соответствующий пункт для LOAD DATA INFILE
--flush-logsСбросить файлы системного журнала сервера MySQL перед дампом
--flush-privilegesЗапрос FLUSH PRIVILEGES после дампа базы данных mysql
--forceПродолжите, даже если ошибка SQL происходит во время табличного дампа
--helpОтобразить справочное сообщение
--hex-blobВыведите двоичные столбцы, используя шестнадцатеричное представление
--hostХост, чтобы соединиться (IP-адрес или имя)
--ignore-errorПроигнорируйте определенные ошибки
--ignore-tableНе выводите данную таблицу
--include-master-host-portВключить MASTER_HOST/MASTER_PORT в CHANGE MASTER с --dump-slave
--insert-ignoreПисать INSERT IGNORE вместо INSERT
--lines-terminated-byОпция используется с --tab и имеет то же самое значение как соответствующий пункт для LOAD DATA INFILE
--lock-all-tablesЗаблокируйте все таблицы и все базы данных
--lock-tablesЗаблокируйте все таблицы прежде, чем вывести их
--log-errorДобавить предупреждения и ошибки к названному файлу
--login-pathЧитать опции пути входа в систему из .mylogin.cnf
--master-dataНапишите имя файла системного журнала и позицию в нем в дамп
--max_allowed_packetМаксимальная пакетная длина, чтобы послать в или получить от сервера
--net_buffer_lengthРазмер буфера для TCP/IP и коммуникации сокета
--no-autocommitДобавить запросы INSERT для каждой выведенной таблицы в пределах SET autocommit = 0 и COMMIT
--no-create-dbНе писать CREATE DATABASE
--no-create-infoНе писать CREATE TABLE, которые обновляют каждую выведенную таблицу
--no-dataНе выводите табличное содержание
--no-defaultsНе читайте файлы опции
--no-set-namesАналог --skip-set-charset
--no-tablespacesНе писать CREATE LOGFILE GROUP или CREATE TABLESPACE в вывод
--opt Сокращение для --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset
--order-by-primaryВыведите строки каждой таблицы, сортированные ее первичным ключом, или ее первым уникальным индексом
--passwordПароль, чтобы использовать, соединяясь с сервером
--pipeВ Windows соединитесь с сервером, используя именованный канал
--plugin-dirКаталог, где плагины установлены
--portНомер порта TCP/IP для соединения
--print-defaultsНапечатайте опции по умолчанию
--protocolПротокол соединения, чтобы использовать
--quick Получите строки для таблицы от сервера поштучно
--quote-namesИдентификаторы кавычки в пределах символов обратной кавычки
--replaceПисать REPLACE вместо INSERT
--result-fileПрямой вывод к данному файлу
--routinesВыведите сохраненные подпрограммы (процедуры и функции) от выведенных баз данных
--secure-authНе посылайте пароли в сервер в старом формате (pre-4.1)
--set-charsetДобавьте SET NAMES default_character_set в вывод
--set-gtid-purgedДобавить ли SET @@GLOBAL.GTID_PURGED в вывод
--shared-memory-base-nameНазвание совместно используемой памяти, чтобы использовать для соединений совместно используемой памяти
--single-transactionBEGIN прежде, чем вывести данные
--skip-add-drop-tableНе добавлять DROP TABLE перед каждым CREATE TABLE
--skip-add-locksНе добавляйте блокировки
--skip-commentsНе добавляйте комментарии
--skip-compactНе производите более компактный вывод
--skip-disable-keysНе отключайте ключи
--skip-extended-insertВыключите расширенный insert
--skip-optВыключите опции, установленные --opt
--skip-quickНе получайте строки для таблицы от сервера поштучно
--skip-quote-namesНе заключайте идентификаторы в кавычки
--skip-set-charsetНе писать SET NAMES
--skip-triggersНе выводить триггеры
--skip-tz-utcВыключить tz-utc
--socketДля соединений с localhost файл сокета Unix
--ssl-caПуть к файлу, который содержит список доверенных SSL CA
--ssl-capathПуть к каталогу, который содержит доверенные сертификаты SSL CA в формате PEM
--ssl-certПуть к файлу, который содержит сертификат X509 в формате PEM
--ssl-cipherСписок разрешенных шифров, чтобы использовать для шифрования соединения
--ssl-crlПуть к файлу, который содержит списки аннулирования сертификатов
--ssl-crlpathПуть к каталогу, который содержит файлы списка аннулирования сертификатов
--ssl-keyПуть к файлу, который содержит ключ X509 в формате PEM
--ssl-modeСтатус безопасности соединения с сервером
--tabПроизведите отделенные табуляциями файлы с данными
--tablesПерекрыть --databases или -B
--tls-versionПротоколы для безопасных соединений
--triggersДамп триггеров для каждой выведенной таблицы
--tz-utcДобавить SET TIME_ZONE='+00:00' в дамп
--userИмя пользователя MySQL, чтобы использовать, соединяясь с сервером
--verboseПодробный режим
--versionИнформация о версии
--whereВыведите только строки, выбранные данным условием WHERE
--xmlВывод в формате XML

Опции соединения

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

  • --bind-address=ip_address

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

  • --compress, -C

    Сжать всю информацию, посланную между клиентом и сервером.

  • --default-auth=plugin

    Подсказка о клиентском плагине аутентификации, см. раздел 7.3.9.

  • --enable-cleartext-plugin

    Включите плагин аутентификации открытого текста mysql_clear_password, см. раздел 7.5.1.4.

  • --host=host_name, -h host_name

    Данные о дампе от сервера MySQL на данном хосте. Хост по умолчанию localhost.

  • --login-path=name

    Читать опции из названного пути входа в систему в .mylogin.cnf. login path является группой опции, содержащей опции, которые определяют, с каким сервером MySQL соединиться и как подтвердить подлинность. Чтобы создать или изменить файл пути входа в систему, используйте mysql_config_editor , см. раздел 5.6.7.

  • --password[=password], -p[password]

    Пароль, чтобы использовать, соединяясь с сервером. Если Вы используете короткую форму опции (-p), у Вас не должно быть пробелов между опцией и паролем. Если Вы опускаете password после --password или -p, mysqldump запросит пароль явно.

    Определение пароля в командной строке нужно считать опасным, см. раздел 7.1.2.1. Вы можете использовать файл опции, чтобы избежать давать пароль в командной строке.

  • --pipe, -W

    В Windows соединитесь с сервером, используя именованный канал. Эта опция применяется, только если сервер поддерживает соединения именованного канала.

  • --plugin-dir=dir_name

    Каталог, в котором можно искать плагины. Определите эту опцию, если --default-auth используется, чтобы определить плагин аутентификации, но mysqldump не находит это. См. раздел 7.3.9.

  • --port=port_num, -P port_num

    Номер порта TCP/IP, чтобы использовать для соединения.

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    Протокол соединения. Полезно, когда другие параметры соединения обычно заставляли бы использоваться не тот протокол, см. раздел 5.2.2.

  • --secure-auth

    Не посылайте пароли в сервер в старом формате (pre-4.1). Это блокирует соединения за исключением серверов, которые используют более новый формат пароля.

    Эта опция устарела и будет удалена. Это всегда включается и попытка отключить это ( --skip-secure-auth, --secure-auth=0) приводит к ошибке.

  • --socket=path, -S path

    Для соединений с localhost файл сокета Unix. Для Windows имя именованного канала.

  • --ssl*

    Опции, которые начинаются с --ssl, определяют, соединиться ли с сервером, используя SSL и указывают, где найти ключи SSL и сертификаты, см. раздел 7.4.5.

  • --tls-version=protocol_list

    Протоколы разрешены клиентом для зашифрованных соединений. Значение: список разделенных запятой значений, содержащий одно или более имен протокола. Протоколы, которые могут быть названы по имени в этой опции, зависят от библиотеки SSL, использовавшейся, чтобы собрать MySQL. Для деталей см. раздел 7.4.3.

  • --user=user_name, -u user_name

    Имя пользователя MySQL, чтобы использовать, соединяясь с сервером.

Вы можете также установить следующие переменные при использовании --var_name=value:

  • max_allowed_packet

    Максимальный размер буфера для коммуникации клиент-сервер. Значение по умолчанию составляет 24MB, максимум 1GB.

  • net_buffer_length

    Начальный размер буфера для коммуникации клиент-сервер. Создавая многострочный INSERT (как с --extended-insert или --opt), mysqldump создает строки до net_buffer_length байт в длину. Если Вы увеличиваете эту переменную, гарантируйте, что у системной переменной net_buffer_length сервера есть значение, по крайней мере этого размера.

Опции файла опций

Эти опции используются, чтобы управлять, который файл опции читать.

  • --defaults-extra-file=file_name

    Читать этот файл опции после глобального файла опции, но (в Unix) перед пользовательским файлом опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

  • --defaults-file= file_name

    Используйте только данный файл опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

    Исключение: Даже с --defaults-file клиенты читают .mylogin.cnf.

  • --defaults-group-suffix=str

    Читать не только обычные группы опции, но также и группы с обычными именами и суффиксом str. Например, mysqldump обычно читает группы [client] и [mysqldump]. Если дана опция --defaults-group-suffix=_other, то mysqldump также читает группы [client_other] и [mysqldump_other].

  • --no-defaults

    Не читать файлы опции. Если запуск программы терпит неудачу из-за чтения неизвестных опций из файла опции, --no-defaults может использоваться, чтобы препятствовать тому, чтобы они были считаны.

    Исключение: файл .mylogin.cnf, если существует, считан во всех случаях. Это разрешает паролям быть определенными более безопасным способом, чем в командной строке, даже когда есть опция --no-defaults . .mylogin.cnf создается mysql_config_editor , см. раздел 5.6.7.

  • --print-defaults

    Напечатайте название программы и все опции, которые это получает от файлов опции.

Опции DDL

Скрипты использования для mysqldump включают создание нового экземпляра MySQL (включая таблицы базы данных), и замена данных в существующем экземпляре с существующими базами данных и таблицами. Следующие опции позволяют Вам определять, что сделать и настроить, восстанавливая дамп, кодируя различные запросы DDL в пределах файла дампа.

  • --add-drop-database

    Записать DROP DATABASE перед каждым CREATE DATABASE . Эта опция, как правило, используется в соединении с --all-databases или --databases, потому что CREATE DATABASE не записаны, если одна из тех опций не определена.

  • --add-drop-table

    Написать DROP TABLE перед каждым CREATE TABLE.

  • --add-drop-trigger

    Написать DROP TRIGGER перед каждым CREATE TRIGGER .

  • --all-tablespaces, -Y

    Добавляет к табличному дампу, все запросы SQL, которые должны были создать любые табличные пространства, используемые NDB. Эта информация иначе не включена в вывод mysqldump. Эта опция в настоящее время относится только к таблицам MySQL Cluster, которые не поддержаны в MySQL 8.0.

  • --no-create-db, -n

    Блокировать запросы CREATE DATABASE, которые иначе включены в вывод, если заданы опции --databases или --all-databases.

  • --no-create-info, -t

    Не писать CREATE TABLE, которые составляют каждую выведенную таблицу.

    Эта опция не исключает запросы, создающие группы файла системного журнала или табличные пространства из вывода mysqldump , однако, Вы можете использовать опцию --no-tablespaces именно с этой целью.

  • --no-tablespaces, -y

    Эта опция запрещает все CREATE LOGFILE GROUP и CREATE TABLESPACE в выводе mysqldump .

  • --replace

    Писать REPLACE вместо INSERT.

Опции отладки

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

  • --allow-keywords

    Создание разрешения имен столбцов, которые являются ключевыми словами. Это работает, предварительно устанавливая каждое имя столбца с именем таблицы.

  • --comments, -i

    Напишите дополнительную информацию в файле дампа, такую как версия программы, версия сервера и хост. Эта опция включена по умолчанию. Чтобы подавить эту дополнительную информацию, надо использовать --skip-comments .

  • --debug[=debug_options], -# [debug_options]

    Напишите журнал отладки. Типичная строка debug_options d:t:o,file_name. Значение по умолчанию d:t:o,/tmp/mysqldump.trace.

  • --debug-check

    Напечатайте некоторую информацию об отладке, когда программа выходит.

  • --debug-info

    Информация об отладке, памяти и статистика использования центрального процессора, когда программа выходит.

  • --dump-date

    Если дана опция --comments, mysqldump производит комментарий следующей формы в конце дампа:

    -- Dump completed on DATE
    
    Однако, дата заставляет файлы дампа, взятые в разное время, отличаться, даже если данные иначе идентичны. --dump-date и --skip-dump-date управляет, добавлена ли дата к комментарию. Значение по умолчанию --dump-date (включать дату в комментарий). --skip-dump-date блокирует печать даты.
  • --force, -f

    Проигнорируйте все ошибки: продолжите, даже если ошибка SQL происходит во время табличного дампа.

    Одно использование этой опции должно заставить mysqldump продолжать выполняться, даже когда это сталкивается с представлением, которое стало недопустимым, потому что определение относится к таблице, которая была удалена. Без --force mysqldump выходит с сообщением об ошибке. С --force mysqldump печатает сообщение об ошибке, но это также пишет комментарий SQL, содержащий определение представления в дамп, и продолжает выполняться.

    Если также дана опция --ignore-error, чтобы проигнорировать определенные ошибки, --force имеет высший приоритет.

  • --log-error=file_name

    Предупреждения и ошибки журналируются, дописывая их к названному файлу. Значение по умолчанию не должно сделать никакого журналирования.

  • --skip-comments

    См. описание --comments.

  • --verbose, -v

    Подробный режим. Напечатать больше информации о том, что делает программа.

Справочные опции

Следующие опции выводят на экран информацию о mysqldump.

  • --help, -?

    Отобразить справку и выйти.

  • --version, -V

    Отобразить информацию о версии.

Опции интернационализации

Следующие опции изменяют, как mysqldump представляет символьные данные с национальными языковыми настройками.

  • --character-sets-dir=dir_name

    Каталог, где наборы символов установлены. См. раздел 11.5.

  • --default-character-set=charset_name

    Применить charset_name как набор символов по умолчанию. См. раздел 11.5. Если никакой набор символов не определен, mysqldump использует набор utf8.

  • --no-set-names, -N

    Выключает --set-charset, то же самое как определение --skip-set-charset.

  • --set-charset

    Писать SET NAMES default_character_set в вывод. Эта опция включена по умолчанию. Чтобы блокировать запрос SET NAMES, применяется --skip-set-charset .

Опции репликации

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

  • --apply-slave-statements

    Для ведомого дампа, произведенного с опцией --dump-slave , добавить STOP SLAVE перед CHANGE MASTER TO и START SLAVE конце вывода.

  • --delete-master-logs

    На основном сервере удалите двоичные журналы, посылая PURGE BINARY LOGS серверу после выполнения дампа. Эта опция автоматически включает --master-data .

  • --dump-slave[=value]

    Эта опция подобна --master-data за исключением того, что это используется, чтобы вывести ведомый сервер, чтобы произвести файл дампа, который может использоваться, чтобы настроить другой сервер как ведомое устройство, у которого есть то же самое ведущее устройство как у выведенного сервера. Это заставляет вывод дампа включать CHANGE MASTER TO, который указывает на координаты двоичного журнала (имя файла и позиция) ведущего устройства выведенного ведомого устройства. CHANGE MASTER TO читает значения Relay_Master_Log_File и Exec_Master_Log_Pos из вывода SHOW SLAVE STATUS и использует их для MASTER_LOG_FILE и MASTER_LOG_POS. Это координаты главного сервера, от которых ведомое устройство должно начать копировать.

    Несогласованности в последовательности транзакций от журнала реле, которые были выполнены, могут заставить неправильную позицию использоваться. См. раздел 19.4.1.34.

    --dump-slave заставляет координаты от ведущего устройства использоваться, а не таковые из выведенного сервера, как сделано в --master-data . Кроме того, эта опция вызывает переопределение --master-data, если используется.

    Эта опция не должна использоваться, если сервер, куда дамп будет применен, использует gtid_mode=ON и MASTER_AUTOPOSITION=1.

    Значение опции обработано как и --master-data (отсутствие значения или 1 заставляет CHANGE MASTER TO писать в дамп, установка 2 заставляет запрос быть написанным, но в комментарии SQL), и имеет тот же самый эффект как --master-data с точки зрения включения или отключения других опций и в том, как блокировка обработана.

    Эта опция заставляет mysqldump останавливать ведомый поток SQL перед дампом и перезапускать это снова после.

    В соединении с --dump-slave --apply-slave-statements и --include-master-host-port могут также использоваться.

  • --include-master-host-port

    Для CHANGE MASTER TO в ведомом дампе, произведенном с --dump-slave , добавить MASTER_HOST и MASTER_PORT для имени хоста и номера порта TCP/IP ведущего устройства.

  • --master-data[=value]

    Используйте эту опцию, чтобы вывести основной сервер, чтобы произвести файл дампа, который может использоваться, чтобы настроить другой сервер как ведомое устройство. Это заставляет вывод дампа включать CHANGE MASTER TO, который указывает на двоичные координаты журнала (имя файла и позиция) выведенного сервера. Это координаты главного сервера, от которых ведомое устройство должно начать копировать после того, как Вы загружаете файл дампа в ведомое устройство.

    Если значение опции 2, CHANGE MASTER TO запрос написан как комментарий SQL и таким образом только информативен, это не имеет никакого эффекта, когда файл дампа перезагружен. Если значение опции 1, запрос не написан как комментарий и вступает в силу, когда файл дампа перезагружен. Если никакое значение опции не определено, значение по умолчанию 1.

    Эта опция требует привилегии RELOAD и двоичный журнал должен быть включен.

    --master-data автоматически выключает --lock-tables . Это также включает --lock-all-tables, если --single-transaction также определена, тогда глобальная блокировка чтения приобретена только в течение короткого времени в начале дампа (см. описание для --single-transaction). Во всех случаях любое действие на журналах происходит в точный момент дампа.

    Также возможно настроить ведомое устройство, выводя существующее ведомое устройство ведущего устройства, используя --dump-slave , которая перекрывает --master-data и предписывает ее проигнорировать, если обе опции используются.

  • --set-gtid-purged=value

    Эта опция включает информацию по управлению глобальным операционным ID (GTID), написанную в файл дампа, указывая, добавить ли SET @@global.gtid_purged в вывод. Эта опция может также заставить написать в вывод запрос, который отключает двоичное журналирование в то время, как файл дампа перезагружается.

    Следующая таблица показывает разрешенные значения опции. Значение по умолчанию AUTO.

    ЗначениеСмысл
    OFFНе добавлять SET в вывод.
    ON Добавить SET в вывод. Ошибка происходит, если GTID не включены на сервере.
    AUTO Добавить SET в вывод, если GTID включены на сервере.

    --set-gtid-purged имеет следующий эффект на двоичное журналирование, когда файл дампа перезагружен:

    • --set-gtid-purged=OFF: SET @@SESSION.SQL_LOG_BIN=0; не добавлен к выводу.

    • --set-gtid-purged=ON: SET @@SESSION.SQL_LOG_BIN=0; добавлен к выводу.
    • --set-gtid-purged=AUTO: SET @@SESSION.SQL_LOG_BIN=0; добавлен к выводу, если GTID включены на сервере (то есть, если AUTO оценивается к ON).

Опции формата

Следующие опции определяют, как представить весь файл дампа или определенные виды данных в файле дампа. Они также управляют, написана ли определенная дополнительная информация в файл дампа.

  • --compact

    Произведите более компактный вывод. Эта опция включает --skip-add-drop-table, --skip-add-locks , --skip-comments , --skip-disable-keys и --skip-set-charset .

  • --compatible=name

    Произведите вывод, который более совместим с другими системами базы данных или с более старыми серверами MySQL. Значение name может быть ansi, mysql323, mysql40, postgresql, oracle, mssql, db2, maxdb, no_key_options, no_table_options или no_field_options. Чтобы использовать несколько значений, отделите их запятыми. У этих значений есть то же самое значение, как соответствующие опции для того, чтобы установить серверный режим SQL. См. раздел 6.1.8.

    Эта опция не гарантирует совместимости с другими серверами. Это только включает те значения режима SQL, которые в настоящее время доступны для вывода более совместимого дампа. Например, --compatible=oracle не отображает типы данных на типы Oracle или использует синтаксис комментария Oracle.

    Эта опция требует версии сервера 4.1.0 или выше. С более старыми серверами это ничего не делает.

  • --complete-insert, -c

    Используйте полные INSERT, которые включают имена столбцов.

  • --create-options

    Включайте все MySQL-определенные табличные опции в CREATE TABLE.

  • --fields-terminated-by=..., --fields-enclosed-by=..., --fields-optionally-enclosed-by=..., --fields-escaped-by=...

    Эти опции используются с --tab и имеют то же самое значение, как передача FIELDS в LOAD DATA INFILE. См. раздел 14.2.6.

  • --hex-blob

    Выведите двоичные столбцы, используя шестнадцатеричный формат (например, 'abc' станет 0x616263). Затронутые типы данных BINARY, VARBINARY, все BLOB и BIT.

  • --lines-terminated-by=...

    Эта опция используется с --tab и имеет то же самое значение, как передача LINES для LOAD DATA INFILE. См. раздел 14.2.6.

  • --quote-names, -Q

    Цитировать идентификаторы (такие как имена баз данных, таблиц и столбцов) в пределах символов `. Если режим SQL ANSI_QUOTES включен, идентификаторы заключены в кавычки в пределах ". Эта опция включена по умолчанию. Это может быть отключено с --skip-quote-names, но эта опция должна быть дана после любой опции, такой как --compatible, которая может включить --quote-names .

  • --result-file=file_name, -r file_name

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

    Эта опция должна использоваться в Windows, чтобы предотвратить конвертацию \n в \r\n carriage return/newline.

  • --tab=dir_name, -T dir_name

    Произведите отделенные табуляциями файлы с данными текстового формата. Для каждой выведенной таблицы mysqldump создает файл tbl_name.sql, который содержит запрос CREATE TABLE, который составляет таблицу, и файл tbl_name.txt, который содержит данные. Значение опции: каталог, в котором можно написать файлы.

    Эта опция должна использоваться только, когда mysqldump выполнен на той же самой машине, что и mysqld. Поскольку сервер создает файлы *.txt в каталоге, который Вы определяете, каталог, должен быть перезаписываемым сервером, учетная запись MySQL, которую Вы используете, должна иметь привилегию FILE. Так как mysqldump создает *.sql в том же самом каталоге это должно быть перезаписываемо Вашей системной учетной записью.

    По умолчанию файлы .txt с данными отформатированы, используя символы табуляции между значениями столбцов и новой строкой в конце каждой строки. Формат может быть определен явно, используя опции --fields-xxx и --lines-terminated-by.

    Значения столбцов преобразованы в набор символов, определенный опцией --default-character-set.

  • --tz-utc

    Эта опция включает столбцы TIMESTAMP , которые будут выведены и перезагружены между серверами в различных часовых поясах. mysqldump устанавливает свою зону времени соединения в UTC и добавляет SET TIME_ZONE='+00:00' к файлу дампа. Без этой опции столбцы TIMESTAMP выведены и перезагружены в часовых поясах, местных для источника и целевого сервера, что может заставить значения изменяться, если серверы находятся в различных часовых поясах. --tz-utc также защищает от изменений из-за летнего времени. --tz-utc включен по умолчанию. Чтобы отключить это, надо использовать --skip-tz-utc.

  • --xml, -X

    Напишите вывод дампа как правильно построенный XML.

    NULL, 'NULL' и пустые значения: Для столбца, названного column_name, значение NULL, пустая строка и строковое значение 'NULL' отличны от друг друга в выводе, произведенном этой опцией, следующим образом.

    Value:XML Representation:
    NULL (unknown value )

    <field name="column_name" xsi:nil="true" />

    '' (пустая строка)

    <field name="column_name "></field>

    'NULL' (строковое значение )

    <field name="column_name ">NULL</field>

    Вывод mysql , когда выполнен используя --xml, также следует предыдущим правилам. См. раздел 5.5.1.1.

    Вывод XML из mysqldump включает пространство имен XML, как показано здесь:

    shell> mysqldump --xml -u root world City
    <?xml version="1.0"?>
    <mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <database name="world">
    <table_structure name="City">
    <field Field="ID" Type="int(11)" Null="NO" Key="PRI" Extra="auto_increment" />
    <field Field="Name" Type="char(35)" Null="NO" Key="" Default="" Extra="" />
    <field Field="CountryCode" Type="char(3)" Null="NO" Key="" Default="" Extra="" />
    <field Field="District" Type="char(20)" Null="NO" Key="" Default="" Extra="" />
    <field Field="Population" Type="int(11)" Null="NO" Key="" Default="0" Extra="" />
    <key Table="City" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="ID"
    Collation="A" Cardinality="4079" Null="" Index_type="BTREE" Comment="" />
    <options Name="City" Engine="MyISAM" Version="10" Row_format="Fixed" Rows="4079"
    Avg_row_length="67" Data_length="273293" Max_data_length="18858823439613951"
    Index_length="43008" Data_free="0" Auto_increment="4080"
    Create_time="2007-03-31 01:47:01" Update_time="2007-03-31 01:47:02"
    Collation="latin1_swedish_ci" Create_options="" Comment="" />
    </table_structure>
    <table_data name="City">
    <row>
    <field name="ID">1</field>
    <field name="Name">Kabul</field>
    <field name="CountryCode">AFG</field>
    <field name="District">Kabol</field>
    <field name="Population">1780000</field>
    </row>
    
    ...
    
    <row>
    <field name="ID">4079</field>
    <field name="Name">Rafah</field>
    <field name="CountryCode">PSE</field>
    <field name="District">Rafah</field>
    <field name="Population">92020</field>
    </row>
    </table_data>
    </database>
    </mysqldump>
    

Фильтрация опций

Следующие опции управляют, которые виды объектов схемы написаны в файл дампа: по категориям, такие как триггеры или события, по имени, например, выбирая, которые базы данных и таблицы вывести, или даже фильтруя строки табличных данных, используя WHERE.

  • --all-databases, -A

    Выведите все таблицы во всех базах данных. Это то же самое, как использование --databases и перечисление всех баз данных в командной строке.

    До MySQL 8.0 опции --routines и --events для mysqldump и mysqlpump не требуются, чтобы сдампить сохраненные подпрограммы и события, используя --all-databases : дамп включает системную базу данных mysql, а значит таблицы mysql.proc и mysql.event, содержащие сохраненные подпрограммы и определения событий. С MySQL 8.0 таблицы the mysql.event и mysql.proc не используются. Определения для соответствующих объектов сохранены в таблицах словаря данных, но те таблицы не выведены. Чтобы включать сохраненные подпрограммы и события в дамп, сделанном, используя опцию --all-databases , используйте явно опции --routines и --events.

  • --databases, -B

    Выведите несколько баз данных. Обычно mysqldump обрабатывает первый параметр имени в командной строке как имя базы данных и последующие имена как имена таблиц. С этой опцией это обрабатывает все параметры имени как имена базы данных. CREATE DATABASE и USE включены в вывод перед каждой новой базой данных.

    Эта опция может использоваться, чтобы вывести performace_schema, которая обычно не выводится даже с --all-databases . Также используйте опцию --skip-lock-tables .

  • --events, -E

    Включить события Event Scheduler для выведенных баз данных в выводе. Эта опция требует привилегию EVENT для тех баз данных.

    Вывод, произведенный при использовании --events, содержит CREATE EVENT, чтобы создать события.

  • --ignore-error=error[,error]...

    Проигнорируйте указанные ошибки. Значение опции: список разделенных запятой значений кодов ошибки, определяющих, какие ошибки проигнорировать во время mysqldump . Если дана еще и опция --force, чтобы проигнорировать все ошибки, --force имеет приоритет.

  • --ignore-table=db_name.tbl_name

    Не выводите данную таблицу, которая должна быть определена, используя имя базы данных и имя таблицы. Чтобы проигнорировать много таблиц, используйте эту опцию многократно. Эта опция также может использоваться, чтобы проигнорировать представления.

  • --no-data, -d

    Не пишите информацию о строке таблицы (то есть, не выводите табличное содержание). Это полезно, если Вы хотите вывести только CREATE TABLE для таблицы (например, чтобы создать пустую копию таблицы, загружая файл дампа).

  • --routines, -R

    Включайте сохраненные подпрограммы (процедуры и функции) для выведенных баз данных в вывод. Эта опция требует глобальной привилегии SELECT.

    Вывод, произведенный при использовании --routines включает CREATE PROCEDURE и CREATE FUNCTION, чтобы создать подпрограммы.

  • --tables

    Отменяет опции --databases или -B. mysqldump расценивает все параметры имени после опции как имена таблиц.

  • --triggers

    Включайте триггеры для каждой выведенной таблицы в вывод. Эта опция включена по умолчанию, отключите это с --skip-triggers .

    Чтобы быть в состоянии вывести триггеры таблицы, Вы должны иметь привилегию TRIGGER для этой таблицы.

    Многократные триггеры допустимы. mysqldump выводит триггеры в порядке активации, чтобы, когда файл дампа перезагружен, триггеры были созданы в том же самом порядке активации. Однако, если файл дампа содержит многократные триггеры для таблицы, у которых есть те же самые событие и момент действия, ошибка происходит для попыток загрузить файл дампа в более старый сервер, который не поддерживает многократные триггеры. См. раздел 2.10.2.1, Вы можете преобразовать триггеры, чтобы быть совместимыми с более старыми серверами.

  • --where='where_condition', -w 'where_condition'

    Выведите только строки, выбранные данным условием WHERE. Кавычки вокруг условия принудительны, если оно содержит пробелы или другие символы, которые являются особенными для Вашего интерпретатора команды.

    Например:

    --where="user='jimf'"
    -w"userid>1"
    -w"userid<1"
    

Исполнительные опции

Следующие опции являются самыми важными для исполнения, особенно операций восстановления. Для больших наборов данных, восстановление (обработка INSERT в файле дампа), самая отнимающая много времени часть. Когда не срочно восстановить данные быстро, стоит запланировать и проверить исполнение этого этапа заранее. В случае времен восстановления, измеренных в часах, Вы могли бы предпочесть альтернативное резервное копирование и восстановление, такое как MySQL Enterprise Backup для InnoDB и смешанных баз данных.

Работа также затронута транзакционнными опциями , прежде всего для работы дампа.

  • --disable-keys, -K

    Для каждой таблицы, окружите INSERT /*!40000 ALTER TABLE tbl_name DISABLE KEYS */; и /*!40000 ALTER TABLE tbl_name ENABLE KEYS */; . Это делает загрузку файла дампа быстрее, потому что индексирование создается после того, как все строки вставлены. Эта опция эффективна только для группового индекса MyISAM.

  • --extended-insert, -e

    Писать INSERT, используя синтаксис многократной строки, который включает несколько списков VALUES. Это приводит к меньшему файлу дампа и убыстряет вставки, когда файл перезагружен.

  • --insert-ignore

    Писать INSERT IGNORE вместо INSERT.

  • --opt

    Эта опция, включенная по умолчанию, является сокращением для комбинации --add-drop-table , --add-locks , --create-options, --disable-keys , --extended-insert, --lock-tables , --quick и --set-charset . Это дает быструю работу дампа и производит файл дампа, который может быть перезагружен в сервер MySQL быстро.

    Поскольку опция --opt включена по умолчанию, Вы только определяете обратную --skip-opt, чтобы выключить несколько настроек по умолчанию. См. обсуждение групп опций mysqldump для информации об отборном включении или отключении подмножества опций, затронутых --opt.

  • --quick, -q

    Эта опция полезна для дампа больших таблиц. Это вынуждает mysqldump получить строки для таблицы от сервера поштучно вместо того, чтобы получить весь набор строк и буферизовать это в памяти перед выписыванием.

  • --skip-opt

    См. описание опции --opt.

Опции транзакций

Следующие опции балансируют между исполнением работы дампа, надежностью и последовательностью экспортируемых данных.

  • --add-locks

    Окружите каждый табличный дамп LOCK TABLES и UNLOCK TABLES . Это приводит к быстрой вставке, когда файл дампа перезагружен. См. раздел 9.2.2.1.

  • --flush-logs, -F

    Сбросить файлы системного журнала сервера MySQL прежде, чем запустить дамп. Эта опция требует привилегии RELOAD. Если Вы используете эту опцию в комбинации с --all-databases , журналы сбрасываются для каждой выведенной базы данных . Исключение, используя --lock-all-tables, --master-data или --single-transaction: в этом случае журналы сбрасываются только однажды, соответствуя моменту, когда все таблицы заблокированы. Если Вы хотите, чтобы Ваш дамп и сброс данных журнала на диск произошли в точно тот же самый момент, Вы должны использовать --flush-logs с --lock-all-tables, --master-data или < code>--single-transaction.

  • --flush-privileges

    Добавить FLUSH PRIVILEGES в вывод дампа после дампа базы данных mysql. Эта опция должна использоваться в любое время, когда дамп содержит базу данных mysql и любую другую базу данных, которая зависит от данных в базе данных mysql для надлежащего восстановления.

    Для обновлений до MySQL 5.7.2 или выше от более старых версий не надо использовать --flush-privileges. Для инструкций по обновлению в этом случае см. раздел 2.10.1.1.

  • --lock-all-tables, -x

    Заблокируйте все таблицы через все базы данных. Это достигнуто, приобретая глобальную блокировку чтения на время всего дампа. Эта опция автоматически выключает --single-transaction и --lock-tables .

  • --lock-tables, -l

    Для каждой выведенной базы данных, заблокируйте все таблицы, которые будут выведены прежде, чем вывести их. Таблицы заблокированы с READ LOCAL, чтобы разрешить параллельные вставки в случае MyISAM. Для транзакционных таблиц InnoDB --single-transaction намного лучшая опция, чем --lock-tables, потому что это не должно заблокировать таблицы вообще.

    Так как --lock-tables блокирует таблицы для каждой базы данных отдельно, эта опция не гарантирует, что таблицы в файле дампа логически последовательны между базами данных. Таблицы в различных базах данных могут быть выведены в абсолютно различных статусах.

    Некоторые опции, например, --opt, автоматически включают --lock-tables. Если Вы хотите переопределить это, надо использовать --skip-lock-tables в конце списка опций.

  • --no-autocommit

    Добавить INSERT для каждой выведенной таблицы в пределах SET autocommit = 0 и COMMIT.

  • --order-by-primary

    Выведите строки каждой таблицы, сортированные ее первичным ключом или ее первым уникальным индексом, если такой индекс существует. Это полезно, выводя MyISAM, которая будет загружена в InnoDB, но заставляет дамп работать значительно дольше.

  • --shared-memory-base-name=name

    В Windows имя совместно используемой памяти для соединений, сделанных, используя совместно используемую память для локального сервера. Значение по умолчанию MYSQL. Имя совместно используемой памяти является чувствительным к регистру.

    Сервер должен быть запущен с --shared-memory .

  • --single-transaction

    Эта опция устанавливает операционный режим изоляции в REPEATABLE READ и посылает запрос SQL START TRANSACTION серверу прежде, чем вывести данные. Это полезно только с транзакционными таблицами вроде InnoDB, потому что тогда это выводит последовательное состояние базы данных в то время, как START TRANSACTION был выпущен, не блокируя приложений.

    Используя эту опцию, Вы должны иметь в виду, что только InnoDB выведены в последовательном состоянии. Например, любые таблицы MyISAM или MEMORY, выведенные, используя эту опцию, могут все еще изменить статус.

    В то время, как --single-transaction дамп в процессе, чтобы гарантировать допустимый файл дампа (правильное табличное содержание и двоичные координаты журнала), никакое другое соединение не должно использовать следующие запросы: ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE. Последовательное чтение не изолировано от этих запросов, таким образом, использование их на таблице, которая будет выведена, может вызвать SELECT, который выполнен mysqldump, чтобы получить табличное содержание, получит неправильное содержание или потерпит неудачу.

    Опции --single-transaction и --lock-tables являются взаимоисключающими, потому что LOCK TABLES заставляет любые ждущие транзакции передать неявно.

    Чтобы вывести большие таблицы, объедините --single-transaction с --quick.

Группы опций

  • --opt включает несколько настроек, которые сотрудничают, чтобы выполнить быструю работу дампа. Все эти настройки включены по умолчанию, потому что --opt включена по умолчанию. Вы можете выключить эти настройки как группу, определяя --skip-opt, произвольно повторно включая определенные настройки, определяя связанные опции позже в командной строке

  • --compact выключает несколько настроек, которые управляют тем, появляются ли дополнительные запросы и комментарии в выводе. Вы можете следовать этой опции с другими опциями, которые повторно включают определенные настройки или включают все настройки, при использовании формы --skip-compact.

Когда Вы выборочно включаете или отключаете эффект групповой опции, порядок важен, потому что опции обработаны по порядку. Например, --disable-keys --lock-tables --skip-opt не имело бы намеченного эффекта, это то же самое, как отдельно --skip-opt.

Примеры

Сделать резервное копирование всей базы данных:

shell> mysqldump db_name > em>backup-file.sql
Загрузить файл дампа назад в сервер:
shell> mysql db_name < backup-file.sql
Другой способ перезагрузить файл дампа:
shell> mysql -e "source /path-to-backup/backup-file.sql" db_name
mysqldump также очень полезен для заполнения баз данных, копируя данные от одного сервера MySQL в другой:
shell> mysqldump --opt db_name | mysql --host=remote_host
                    -C db_name
Вы можете вывести несколько баз данных одной командой:
shell> mysqldump --databases db_name1
                    [db_name2 ...] > my_databases.sql
Чтобы вывести все базы данных, используйте опцию --all-databases :
shell> mysqldump --all-databases > all_databases.sql
Для таблиц InnoDB mysqldump обеспечивает способ сделать резервное копирование онлайн:
shell> mysqldump --all-databases --master-data
                    --single-transaction > all_databases.sql
Это резервное копирование приобретает глобальную блокировку чтения на всех таблицах (с использованием FLUSH TABLES WITH READ LOCK) в начале дампа. Как только эта блокировка была приобретена, двоичные координаты журнала считаны, и блокировка снята. Если долго обновляющие запросы работают, когда запущен FLUSH, сервер MySQL может быть остановлен, пока те запросы не заканчиваются. После этого дамп освобождает блокировку и не нарушает чтения и записи на таблицах. Если запросы обновления, что сервер MySQL получает, коротки (с точки зрения времени выполнения), начальный период блокировки не должен быть примечательным, даже со многими обновлениями.

Для восстановления момента времени (также известный как roll-forward, когда Вы должны восстановить старую резервную копию и переиграть изменения, которые произошли начиная с того резервного копирования), часто полезно ротировать двоичный журнал (см. раздел 6.4.4) или, по крайней мере, знать двоичные координаты журнала, которым соответствует дамп:

shell> mysqldump --all-databases --master-data=2 > all_databases.sql
Или:
shell> mysqldump --all-databases --flush-logs --master-data=2
     >           all_databases.sql
Опции --master-data и --single-transaction могут использоваться одновременно, что обеспечивает удобный способ сделать резервное копирование онлайн подходящим для использования до восстановления момента времени, если таблицы сохранены, используя InnoDB.

См. разделы 8.2 и 8.3.

  • Чтобы выбрать эффект --opt за исключением некоторых особенностей, используйте --skip для каждой особенности. Чтобы отключить расширенную вставку и буферизацию памяти, надо использовать --opt --skip-extended-insert --skip-quick. Фактически --skip-extended-insert --skip-quick достаточно, потому что --opt включена по умолчанию.

  • Чтобы обратить --opt для всех особенностей, кроме выключения индексов и табличной блокировки, используйте --skip-opt --disable-keys --lock-tables.

Ограничения

mysqldump не выводит performance_schema или sys по умолчанию. Чтобы вывести любую из них, назовите их явно в командной строке. Вы можете также назвать их с опцией --databases . Для performance_schema также используйте опцию --skip-lock-tables .

mysqldump не выводит INFORMATION_SCHEMA.

mysqldump включает запросы, чтобы обновить таблицы general_log и slow_query_log для дампов базы данных mysql. Табличное содержание журнала не выведено.

Если Вы сталкиваетесь с проблемами поддержки представления из-за недостаточных привилегий, см. раздел C.5.

5.5.5. mysqlimport программа импорта данных

mysqlimport обеспечивает интерфейс командной строки для SQL-запроса LOAD DATA INFILE. Большинство опций mysqlimport соответствует непосредственно параметрам LOAD DATA INFILE, см. раздел 14.2.6.

Вызов mysqlimport :

shell> mysqlimport [options] db_name
                      textfile1 [textfile2 ...]
Для каждого текстового файла, названного в командной строке, mysqlimport отрезает любое расширение от имени файла и использует результат, чтобы определить название таблицы, в которую можно импортировать содержание файла. Например, файлы patient.txt, patient.text и patient все были бы импортированы в таблицу patient.

mysqlimport поддерживает следующие опции, которые могут быть определены в командной строке или в группах [mysqlimport] и [client] файла опции. Для информации о файлах опции, используемых программами MySQL, см. раздел 5.2.6.

Таблица 5.12. Опции mysqlimport

ФорматОписание
--bind-address Используйте определенный сетевой интерфейс, чтобы соединиться с MySQL Server
--columnsЭта опция берет список разделенных запятой значений имен столбцов как значение
--compressСжать всю информацию, посланную между клиентом и сервером
--debug Писать журнал отладки
--debug-checkИнформация об отладке, когда программа выходит
--debug-infoИнформация об отладке, памяти и статистика центрального процессора, когда программа выходит
--default-authПлагин аутентификации, чтобы использовать
--default-character-setОпределите набор символов значения по умолчанию
--defaults-extra-fileЧитать файл опции в дополнение к обычным файлам опции
--defaults-fileЧитать только этот файл опции
--defaults-group-suffixГрупповое значение суффикса опции
--delete Освободить таблицу прежде, чем импортировать текстовый файл
--enable-cleartext-plugin Включите плагин аутентификации открытого текста
--fields-enclosed-byУ этой опции есть то же самое значение, как соответствующий параметр LOAD DATA INFILE
--fields-escaped-byЭта опция имеет то же значение, что и соответствующий параметр LOAD DATA INFILE
--fields-optionally-enclosed-byЭта опция имеет то же значение, что и соответствующий параметр LOAD DATA INFILE
--fields-terminated-byЭта опция имеет то же значение, что и соответствующий параметр LOAD DATA INFILE
--forceПродолжите, даже если ошибка SQL происходит
--helpОтобразить справочное сообщение
--host Соединитесь с сервером MySQL на данном хосте
--ignore См. описание опции --replace
--ignore-linesПроигнорируйте первые N строк файла с данными
--lines-terminated-byЭта опция имеет то же значение, что и соответствующий параметр LOAD DATA INFILE
--local Читать входные файлы локально с хоста клиента
--lock-tablesЗаблокируйте все таблицы для записи прежде, чем обработать любые текстовые файлы
--login-pathЗагрузить опции пути входа в систему из .mylogin.cnf
--low-priorityПрименить LOW_PRIORITY, загружая таблицу
--no-defaultsНе читать файлы опций
--passwordПароль, чтобы использовать, соединяясь с сервером
--pipe В Windows соединитесь с сервером, используя именованный канал
--plugin-dirКаталог, где плагины установлены
--port Номер порта TCP/IP, чтобы использовать для соединения
--print-defaultsНапечатайте опции по умолчанию
--protocolПротокол соединения, чтобы использовать
--replaceОпции --replace и --ignore управляют обработкой входных строк, которые дублируют существующие строки на уникальных значениях ключа
--secure-authНе посылайте пароли в сервер в старом формате (pre-4.1)
--shared-memory-base-nameНазвание совместно используемой памяти, чтобы использовать для соединений совместно используемой памяти
--silent Произведите вывод только, когда ошибки происходят
--socket Для соединений с localhost файл сокета Unix
--ssl-ca Путь к файлу, который содержит список доверенных SSL CA
--ssl-capathПуть к каталогу, который содержит доверенные сертификаты SSL CA в формате PEM
--ssl-cert Путь к файлу, который содержит сертификат X509 в формате PEM
--ssl-cipherСписок разрешенных шифров, чтобы использовать для шифрования соединения
--ssl-crlПуть к файлу, который содержит списки аннулирования сертификатов
--ssl-crlpathПуть к каталогу, который содержит файлы списка аннулирования сертификатов
--ssl-keyПуть к файлу, который содержит ключ X509 в формате PEM
--ssl-modeСтатус безопасности соединения с сервером
--tls-versionПротоколы для безопасных соединений
--use-threadsЧисло потоков для параллельной загрузки файла
--user Имя пользователя MySQL, чтобы использовать, соединяясь с сервером
--verboseПодробный режим отчета
--versionОтобразить информацию о версии
  • --help, -?

    Отобразить справочное сообщение.

  • --bind-address=ip_address

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

  • --character-sets-dir=dir_name

    Каталог, где наборы символов установлены. См. раздел 11.5.

  • --columns=column_list, -c column_list

    Эта опция берет список разделенных запятой значений имен столбцов. Порядок имен столбцов указывает, как соответствуют столбцы файла с данными и столбцы таблицы.

  • --compress , -C

    Сжать всю информацию, посланную между клиентом и сервером.

  • --debug[=debug_options], -# [debug_options]

    Писать журнал отладки. Типичная строка debug_options d:t:o,file_name. По умолчанию это d:t:o.

  • --debug-check

    Напечатайте некоторую информацию об отладке, когда программа выходит.

  • --debug-info

    Информация об отладке, памяти и статистика использования центрального процессора, когда программа выходит.

  • --default-character-set=charset_name

    Использовать charset_name как набор символов по умолчанию. См. раздел 11.5.

  • --default-auth=plugin

    Подсказка о клиентском плагине аутентификации, чтобы использовать. См. раздел 7.3.9.

  • --defaults-extra-file=file_name

    Читать этот файл опции после глобального файла опции, но (в Unix) перед пользовательским файлом опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

  • --defaults-file=file_name

    Используйте только данный файл опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

    Исключение: Даже с опцией --defaults-file программы клиента читают .mylogin.cnf.

  • --defaults-group-suffix=str

    Читать не только обычные группы опции, но также и группы с обычными именами и суффиксом str. Например, mysqlimport обычно читает группы [client] и [mysqlimport]. Если есть опция --defaults-group-suffix=_other, mysqlimport также читает группы [client_other] и [mysqlimport_other].

  • --delete, -D

    Освободите таблицу прежде, чем импортировать текстовый файл.

  • --enable-cleartext-plugin

    Включите плагин аутентификации открытого текста mysql_clear_password, см. раздел 7.5.1.4.

  • --fields-terminated-by=..., --fields-enclosed-by=..., --fields-optionally-enclosed-by=..., --fields-escaped-by=...

    У этих опций есть то же самое значение, как у соответствующих параметров LOAD DATA INFILE. См. раздел 14.2.6.

  • --force, -f

    Проигнорируйте ошибки. Например, если таблица для текстового файла не существует, продолжите обрабатывать любые остающиеся файлы. Без --force mysqlimport выходит, если таблица не существует.

  • --host=host_name, -h host_name

    Импортировать данные серверу MySQL на данном хосте. Хост по умолчанию localhost.

  • --ignore, -i

    См. описание опции --replace.

  • --ignore-lines=N

    Проигнорируйте первые N строк файла с данными.

  • --lines-terminated-by=...

    У этой опции есть то же самое значение, как у соответствующего параметра LOAD DATA INFILE. Например, чтобы импортировать файлы Windows, которым закончили строки с возвратом каретки/перевода строки, надо использовать --lines-terminated-by="\r\n". Вам, возможно, придется удвоить наклонные черты влево, в зависимости от соглашений Вашего интерпретатора команд. См. раздел 14.2.6.

  • --local, -L

    Читать входные файлы локально с хоста клиента.

  • --lock-tables, -l

    Заблокируйте все таблицы на запись прежде, чем обработать любые текстовые файлы. Это гарантирует, что все таблицы синхронизированы на сервере.

  • --login-path=name

    Читать опции из названного пути входа в систему в .mylogin.cnf. login path является группой опции, содержащей опции, которые определяют, с каким сервером MySQL соединиться и как подтвердить подлинность. Чтобы создать или изменить файл пути входа в систему, используйте mysql_config_editor , см. раздел 5.6.7.

  • --low-priority

    Использовать LOW_PRIORITY, загружая таблицу. Это затрагивает только механизмы хранения, которые используют только блокировку на уровне таблицы (например, MyISAM, MEMORY и MERGE).

  • --no-defaults

    Не читайте файлы опции. Если запуск программы терпит неудачу из-за чтения неизвестных опций от файла опции, --no-defaults может использоваться, чтобы препятствовать тому, чтобы они были считаны.

    Исключение то, что файл .mylogin.cnf, если это существует, считан во всех случаях. Это разрешает паролям быть определенными более безопасным способом, чем в командной строке, даже когда применяется --no-defaults . .mylogin.cnf создается mysql_config_editor , см. раздел 5.6.7.

  • --password[=password], -p[password]

    Пароль, чтобы использовать, соединяясь с сервером. Если Вы используете короткую форму опции (-p), не должно быть пробелов между опцией и паролем. Если Вы опускаете password после --password или -p в командной строке, mysqlimport запросит его явно.

    Определение пароля в командной строке нужно считать опасным. См. раздел 7.1.2.1. Вы можете использовать файл опции, чтобы избежать давать пароль в командной строке.

  • --pipe, -W

    В Windows соединитесь с сервером, используя именованный канал. Эта опция применяется, только если сервер поддерживает соединения именованного канала.

  • --plugin-dir=dir_name

    Каталог, в котором можно искать плагины. Определите эту опцию, если опция --default-auth используется, чтобы определить плагин аутентификации, но mysqlimport его не нашел, см. раздел 7.3.9.

  • --port=port_num, -P port_num

    Номер порта TCP/IP, чтобы использовать для соединения.

  • --print-defaults

    Напечатайте название программы и все опции, которые это получает от файлов опции.

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    Протокол соединения, чтобы использовать для того, чтобы соединиться с сервером. Полезно, когда другие параметры соединения заставляют использовать не тот протокол, см. раздел 5.2.2.

  • --replace, -r

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

  • --secure-auth

    Не посылайте пароли в сервер в старом формате (pre-4.1).

    Эта опция устарела. Это всегда включается и попытка отключения ( --skip-secure-auth, --secure-auth=0) приводит к ошибке.

  • --shared-memory-base-name=name

    В Windows имя совместно используемой памяти для соединений, сделанных, используя совместно используемую память для локального сервера. Значение по умолчанию MYSQL. Имя совместно используемой памяти является чувствительным к регистру.

    Сервер должен быть запущен с --shared-memory .

  • --silent, -s

    Тихий режим. Произведите вывод только, когда ошибки происходят.

  • --socket= path, -S path

    Для соединений с localhost файл сокета Unix, в Windows имя именованного канала.

  • --ssl*

    Опции, которые начинаются с --ssl, определяют, соединиться ли с сервером, используя SSL, и указывают, где найти ключи SSL и сертификаты, см. раздел 7.4.5.

  • --tls-version=protocol_list

    Протоколы, разрешенные клиентом для зашифрованных соединений. Значение: список разделенных запятой значений, содержащий одно или более имен протокола. Протоколы, которые могут быть названы по имени в этой опции, зависят от библиотеки SSL, использовавшейся, чтобы собрать MySQL. Для деталей см. раздел 7.4.3.

  • --user=user_name, -u user_name

    Имя пользователя MySQL, чтобы использовать, соединяясь с сервером.

  • --use-threads=N

    Файлы загружаются параллельно в N потоков.

  • --verbose, -v

    Многословный режим. Напечатать больше информации о том, что делает программа.

  • --version, -V

    Отобразить информацию о версии.

Вот типовой сеанс, который демонстрирует использование mysqlimport :

shell> mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test
shell> ed
a
100 Max Sydow
101 Count Dracula
.
w imptest.txt
32
q
shell> od -c imptest.txt
0000000   1   0   0  \t   M   a   x S   y   d   o   w  \n   1   0
0000020   1  \t   C   o   u   n   t D   r   a   c   u   l   a  \n
0000040

shell> mysqlimport --local test imptest.txt
test.imptest: Records: 2  Deleted: 0  Skipped: 0  Warnings: 0
shell> mysql -e 'SELECT * FROM imptest' test
+-----+---------------+
|  id | n             |
+-----+---------------+
| 100 | Max Sydow     |
| 101 | Count Dracula |
+-----+---------------+

5.5.6. mysqlpump программа резервирования базы данных

mysqlpump выполняет логические резервные копии, производя ряд запросов SQL, которые могут быть выполнены, чтобы воспроизвести оригинальные определения объекта базы данных и табличные данные. Это выводит одну или более баз данных MySQL для резервного копирования или передачи в другой SQL-сервер.

Возможности mysqlpump :

  • Параллельная обработка баз данных и объектов в пределах баз данных, чтобы ускорить процесс дампа.

  • Лучшее управление тем, которые базы данных и объекты базы данных (таблицы, сохраненные программы, учетные записи пользователя) вывести.
  • Дамп учетных записей пользователя как запросы управления пользователями (CREATE USER, GRANT) вместо вставки в системную базу данных mysql.
  • Способность создания сжатого вывода.
  • Индикатор хода выполнения.
  • Для перезагрузки файла дампа быстрое создание вторичного индекса для InnoDB добавлением индексов после того, как строки вставлены.

mysqlpump использует функции MySQL, введенные в MySQL 5.7, и таким образом предполагает использование с MySQL 5.7 или выше.

mysqlpump требует, по крайней мере, привилегию SELECT для выведенных таблиц, SHOW VIEW для выведенных представлений, TRIGGER для выведенных триггеров и LOCK TABLES, если не применяется опция --single-transaction. Привилегия SELECT на системной базе данных mysql нужна, чтобы выводить пользовательские определения. Определенные опции могли бы потребовать других привилегий, как отмечено в описаниях опции.

Чтобы перезагрузить файл дампа, Вы должны иметь приилегии, чтобы выполнить запросы, которые это содержит, например, CREATE для объектов, которые созданы теми запросами.

Дамп, сделанный, используя PowerShell на Windows с выходным перенаправлением, создает файл, у которого есть кодирование UTF-16:

shell> mysqlpump [options] > dump.sql
Но UTF-16 не разрешен как набор символов соединения (см. раздел 11.1.4), таким образом, файл дампа не будет загружаться правильно. Чтобы решить проблему, используйте опцию --result-file, которая создает вывод в формате ASCII:
shell> mysqlpump [options] --result-file=dump.sql

Синтаксис вызова mysqlpump

По умолчанию mysqlpump выводит все базы данных (с определенными исключениями, отмеченными в ограничениях mysqlpump). Чтобы определить это поведение явно, используйте --all-databases :

shell> mysqlpump --all-databases
Чтобы вывести единственную базу данных или определенные таблицы в пределах той базы данных, укажите базу данных в командной строке, произвольно сопровождаемую именами таблиц:
shell> mysqlpump db_name
shell> mysqlpump db_name tbl_name1 tbl_name2 ...
Чтобы обработать все параметры имени как имена базы данных, используйте --databases :
shell> mysqlpump --databases db_name1 db_name2 ...
По умолчанию mysqlpump не выводит определения учетной записи пользователя, даже если Вы выводите системную базу данных mysql, которая содержит таблицы привилегий. Чтобы вывести табличное содержание привилегий как логические определения в форме CREATE USER и GRANT, используйте опцию --users и весь дамп базы данных:
shell> mysqlpump --exclude-databases=% --users
В предыдущей команде подстановочный знак % соответствует всем именам базы данных для --exclude-databases.

mysqlpump поддерживает несколько опций для включения или исключения базы данных, таблицы, сохраненных программ и пользовательских определений.

Чтобы перезагрузить файл дампа, выполните запросы, которые это содержит. Например, используйте mysql:

shell> mysqlpump [options] > dump.sql
shell> mysql < dump.sql
Следующее обсуждение обеспечивает дополнительные примеры использования mysqlpump.

Чтобы видеть список опций mysqlpump, введите команду mysqlpump --help .

Обзор опций mysqlpump

mysqlpump поддерживает следующие опции, которые могут быть определены в командной строке или в группах [mysqlpump] и [client] файла опции. Для информации о файлах опции, используемых программами MySQL, см. раздел 5.2.6.

Таблица 5.13. Опции mysqlpump

ФорматОписание
--add-drop-databaseДобавить DROP DATABASE перед каждым CREATE DATABASE
--add-drop-tableДобавить DROP TABLE перед каждым CREATE TABLE
--add-drop-userДобавить DROP USER перед каждым CREATE USER
--add-locksОкружите каждый табличный дамп LOCK TABLES и UNLOCK TABLES
--all-databasesВыведите все базы данных
--bind-addressИспользуйте определенный сетевой интерфейс, чтобы соединиться с MySQL Server
--character-sets-dirКаталог, где наборы символов установлены
--complete-insertИспользуйте полные запросы INSERT, которые включают имена столбцов
--compressСжать всю информацию, посланную между клиентом и сервером
--compress-outputВыходной алгоритм сжатия
--databasesИнтерпретируйте все параметры имени как имена базы данных
--debug Вести журнал отладки
--debug-checkИнформация об отладке, когда программа выходит
--debug-infoИнформация об отладке, памяти и статистика центрального процессора, когда программа выходит
--default-authПлагин аутентификации, чтобы использовать
--default-character-setОпределите набор символов по умолчанию
--default-parallelismЧисло потоков по умолчанию для параллельной обработки
--defaults-extra-fileЧитать файл опции в дополнение к обычным файлам опции
--defaults-fileЧитать только этот файл опции
--defaults-group-suffixГрупповое значение суффикса опции
--defer-table-indexesДля того, чтобы перезагрузить, задержать создание индекса до окончания загрузки строк таблицы
--events События дампа от выведенных баз данных
--exclude-databasesБазы данных, чтобы исключить из дампа
--exclude-eventsСобытия, чтобы исключить из дампа
--exclude-routinesСохраненные подпрограммы, чтобы исключить из дампа
--exclude-tablesТаблицы, чтобы исключить из дампа
--exclude-triggersТриггеры, чтобы исключить из дампа
--exclude-usersПользователи, чтобы исключить из дампа
--extended-insertМногострочный синтаксис INSERT
--help Вывести сообщение справки
--hex-blobВыведите двоичные столбцы, используя шестнадцатеричный формат
--host Хост сервера (IP-адрес или имя)
--include-databasesБазы данных, чтобы включать в дамп
--include-eventsСобытия, чтобы включать в дамп
--include-routinesСохраненные подпрограммы, чтобы включать в дамп
--include-tablesТаблицы, чтобы включать в дамп
--include-triggersТриггеры, чтобы включать в дамп
--include-usersПользователи, чтобы включать в дамп
--insert-ignoreПисать INSERT IGNORE вместо INSERT
--log-error-file Добавить предупреждения и ошибки к названному файлу
--login-pathСчитайте опции пути входа в систему из .mylogin.cnf
--max-allowed-packetМаксимальная пакетная длина, чтобы послать в или получить от сервера
--net-buffer-lengthРазмер буфера для TCP/IP
--no-create-dbНе писать CREATE DATABASE
--no-create-infoНе писать CREATE TABLE, которые пересоздают каждую выведенную таблицу
--no-defaultsНе читать файлы опции
--parallel-schemasОпределите обрабатывающий схему параллелизм
--passwordПароль, чтобы использовать, соединяясь с сервером
--plugin-dirКаталог, где плагины установлены
--port Номер порта TCP/IP, чтобы использовать для соединения
--print-defaultsНапечатайте опции по умолчанию
--protocolПротокол соединения, чтобы использовать
--replace Писать REPLACE вместо INSERT
--result-fileПрямой вывод к данному файлу
--routinesВыведите сохраненные подпрограммы (процедуры и функции) от выведенных баз данных
--secure-authНе посылайте пароли в сервер в старом формате (pre-4.1)
--set-charsetДобавить SET NAMES default_character_set в вывод
--single-transaction Дамп таблиц в пределах единственной транзакции
--skip-definerОпустите DEFINER и SQL SECURITY для CREATE, создающих представления и сохраненные подпрограммы
--skip-dump-rowsНе выводите строки таблицы
--socket Для соединений с localhost файл сокета Unix
--ssl-ca Путь к файлу, который содержит список доверенных SSL CAs
--ssl-capath Путь к каталогу, который содержит доверенные сертификаты SSL CA в формате PEM
--ssl-cert Путь к файлу, который содержит сертификат X509 в формате PEM
--ssl-cipher Список разрешенных шифров, чтобы использовать для шифрования соединения
--ssl-crl Путь к файлу, который содержит списки аннулирования сертификатов
--ssl-crlpath Путь к каталогу, который содержит файлы списка аннулирования сертификатов
--ssl-key Путь к файлу, который содержит ключ X509 в формате PEM
--ssl-mode Статус безопасности соединения с сервером
--tls-versionПротоколы для безопасных соединений
--triggersДамп триггеров для каждой выведенной таблицы
--tz-utc Добавить в дамп SET TIME_ZONE='+00:00'
--user Имя пользователя MySQL, чтобы использовать, соединяясь с сервером
--users Вывести учетные записи пользователей
--version Отобразить информаци о версии
--watch-progressПоказать индикатор выполнения

mysqlpump Option Descriptions

  • --help, -?

    Отобразить сообщение справки.

  • --add-drop-database

    Написать DROP DATABASE перед каждым CREATE DATABASE .

  • --add-drop-table

    Написать DROP TABLE перед каждым CREATE TABLE.

  • --add-drop-user

    Написать DROP USER перед каждым CREATE USER.

  • --add-locks

    Окружите каждый табличный дамп LOCK TABLES и UNLOCK TABLES . Это приводит к быстрым вставкам, когда файл дампа перезагружен. См. раздел 9.2.2.1.

    Эта опция не работает с параллелизмом, потому что INSERT от различных таблиц могут быть чередованы и UNLOCK TABLES после конца вставок для одной таблицы может снять блокировки таблиц, для которых вставки еще есть.

    --add-locks и --single-transaction являются взаимоисключающими.

  • --all-databases , -A

    Выведите все базы данных (с определенными исключениями, отмеченными в ограничениях). Это поведение по умолчанию, если ничто другое не определено явно.

    --all-databases и --databases являются взаимоисключающими.

    До MySQL 8.0 опции --routines и --events для mysqldump и mysqlpump не требовались для включения сохраненных подпрограмм и событий, используя --all-databases. Дамп включает системную базу данных mysql и поэтому также таблицы mysql.proc и mysql.event, содержащие сохраненные подпрограммы и определения событий. С MySQL 8.0 таблицы the mysql.event и mysql.proc не применяются. Определения для соответствующих объектов сохранены в таблицах словаря данных, но те таблицы не выведены. Чтобы включать сохраненные подпрограммы и события в дамп, сделанном, используя --all-databases , используйте --routines и --events.

  • --bind-address=ip_address

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

  • --character-sets-dir=path

    Каталог, где наборы символов установлены. См. раздел 11.5.

  • --complete-insert

    Писать полный INSERT, который включает имена столбцов.

  • --compress, -C

    Сжать всю информацию, посланную между клиентом и сервером.

  • --compress-output=algorithm

    По умолчанию mysqlpump не сжимает вывод. Эта опция определяет выходное сжатие, используя указанный алгоритм. Разрешенные алгоритмы LZ4 и ZLIB.

    Чтобы разжать сжатый вывод, у Вас должна быть соответствующая утилита. Если системные команды lz4 и openssl zlib недоступны, дистрибутивы MySQL включают lz4_decompress и zlib_decompress, которые могут использоваться, чтобы распаковать вывод mysqlpump , который был сжат, используя --compress-output=LZ4 и --compress-output=ZLIB, см. разделы 5.8.1 и 5.8.5.

  • --databases , -B

    Обычно mysqlpump обрабатывает первый параметр имени в командной строке как имя базы данных и любые последующие имена как имена таблиц. С этой опцией это обрабатывает все параметры имени как имена баз данных. CREATE DATABASE включены в вывод перед каждой новой базой данных.

    --all-databases и --databases являются взаимоисключающими.

  • --debug[= debug_options], -# [debug_options]

    Писать журнал отладки. Типичнпя строка debug_options d:t:o,file_name. Значение по умолчанию d:t:O,/tmp/mysqlpump.trace.

  • --debug-check

    Напечатайте некоторую информацию об отладке, когда программа выходит.

  • --debug-info , -T

    Информация об отладке, памяти и статистика использования центрального процессора, когда программа выходит.

  • --default-auth= plugin

    Подсказка о клиентском плагине аутентификации, чтобы использовать. См. See раздел 7.3.9.

  • --default-character-set=charset_name

    Использовать charset_name как набор символов по умолчанию. См. раздел 11.5. Если никакой набор символов не определен, mysqlpump будет использовать utf8.

  • --default-parallelism=N

    Число потоков по умолчанию для каждой параллельной очереди обработки. Значение по умолчанию 2.

    Опция --parallel-schemas также затрагивает параллелизм и может использоваться, чтобы переопределить число потоков по умолчанию.

    С --default-parallelism=0 и без --parallel-schemas mysqlpump работает как однопоточный процесс и не создает очередей.

    С включенным параллелизмом вывод от различных баз данных может быть чередованным.

  • --defaults-extra-file=file_name

    Читать этот файл опции после глобального файла опции, но (в Unix) перед пользовательским файлом опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

  • --defaults-file= file_name

    Используйте только данный файл опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

    Исключение: Даже с опцией --defaults-file программы клиента читают .mylogin.cnf.

  • --defaults-group-suffix=str

    Читать не только обычные группы опции, но также и группы с обычными именами и суффиксом str. Например, mysqlpump обычно читает группы [client] и [mysqlpump]. Если задана опция --defaults-group-suffix=_other, mysqlpump также читает группы [client_other] и [mysqlpump_other].

  • --defer-table-indexes

    В выводе дампа задержать создание индекса для каждой таблицы, пока ее строки не загружены. Это работает на всех механизмах хранения, но на InnoDB применяется только для вторичных индексов.

    Эта опция включена по умолчанию, примените --skip-defer-table-indexes, чтобы отключить это.

  • --events

    Включайте события Event Scheduler для выведенных баз данных в выводе. Дамп событий требует привилегии EVENT для базы данных.

    Вывод, произведенный при использовании --events, содержит CREATE EVENT, чтобы создать события.

    Эта опция включена по умолчанию, примените для отключения --skip-events .

  • --exclude-databases=db_list

    Не выводите базы данных в db_list, который является списком из разделенных запятой одного или более имен базы данных. Многократные случаи этой опции являются совокупными.

  • --exclude-events=event_list

    Не выводите события в event_list, который является списком из разделенных запятой одного или более имен событий. Многократные случаи этой опции являются совокупными.

  • --exclude-routines=routine_list

    Не выводите сохраненные подпрограммы в routine_list, который является списком из разделенных запятой одного или более имен сохраненных подпрограмм. Многократные случаи этой опции являются совокупными.

  • --exclude-tables=table_list

    Не выводите таблицы в table_list, который является списком из разделенных запятой одного или более имен таблиц. Многократные случаи этой опции являются совокупными.

  • --exclude-triggers=trigger_list

    Не выводите триггеры trigger_list, который является списком из разделенных запятой одного или более имен триггеров. Многократные случаи этой опции являются совокупными.

  • --exclude-users=user_list

    Не выводите учетные записи пользователя в user_list, который является списком из разделенных запятой одного или более имен учетной записи. Многократные случаи этой опции являются совокупными.

  • --extended-insert=N

    Писать INSERT, используя многострочный синтаксис, который включает несколько списков VALUES. Это приводит к меньшему файлу дампа и убыстряет вставки, когда файл перезагружен.

    Значение опции указывает на число строк, которое включать в каждый INSERT. Значение по умолчанию 250. Значение 1 производит отдельный INSERT на строку таблицы.

  • --hex-blob

    Выведите двоичные столбцы, используя шестнадцатеричный формат (например, 'abc' будет 0x616263). Затронутые типы данных: BINARY, VARBINARY, все BLOB и BIT.

  • --host=host_name, -h host_name

    Данные в дамп от сервера MySQL на данном хосте.

  • --include-databases=db_list

    Выведите базы данных в db_list, который является списком из разделенных запятой одного или более имен базы данных. Дамп включает все объекты в названные базы данных. Многократные случаи этой опции являются совокупными.

  • --include-events=event_list

    Выведите события в event_list, который является списком из разделенных запятой одного или более имен событий. Многократные случаи этой опции являются совокупными.

  • --include-routines=routine_list

    Выведите сохраненные подпрограммы в routine_list, который является списком из разделенных запятой одного или более имен сохраненных подпрограмм. Многократные случаи этой опции являются совокупными.

  • --include-tables=table_list

    Выведите таблицы в table_list, который является списком из разделенных запятой одного или более имен таблиц. Многократные случаи этой опции являются совокупными.

  • --include-triggers=trigger_list

    Выведите триггеры в trigger_list, который является списком из разделенных запятой одного или более имен триггеров. Многократные случаи этой опции являются совокупными.

  • --include-users=user_list

    Выведите учетные записи пользователя в user_list, который является списком из разделенных запятой одного или более имен пользователя. Многократные случаи этой опции являются совокупными.

  • --insert-ignore

    Писать INSERT IGNORE вместо INSERT.

  • --log-error-file=file_name

    Журналировать предупреждения и ошибки, прилагая их к названному файлу. Если эта опция не дана, mysqlpump пишет предупреждения и ошибки на стандартный вывод ошибок.

  • --login-path=name

    Считайте опции из названного пути входа в систему в .mylogin.cnf. login path является группой опции, содержащей опции, которые определяют, с каким сервером MySQL соединиться и как подтвердить подлинность. Чтобы создать или изменить файл пути входа в систему, используйте mysql_config_editor, см. раздел 5.6.7.

  • --max-allowed-packet=N

    Максимальный размер буфера для коммуникации клиент-сервер. Значение по умолчанию составляет 24 МБ, максимум 1GB.

  • --net-buffer-length=N

    Начальный размер буфера для коммуникации клиент-сервер. Создавая многострочный INSERT (как с --extended-insert), mysqlpump создает строки до N байтов в длину. Если Вы используете эту опцию, чтобы увеличить значение, гарантируйте, что у системной переменной net_buffer_length сервера MySQL есть, по крайней мере, такое же значение.

  • --no-create-db

    Блокировать CREATE DATABASE , которые могли бы иначе быть включены в вывод.

  • --no-create-info, -t

    Не писать CREATE TABLE, которые составляют каждую выведенную таблицу.

  • --no-defaults

    Не читайте файлы опции. Если запуск программы терпит неудачу из-за чтения неизвестных опций от файла опции, --no-defaults может использоваться, чтобы препятствовать тому, чтобы они были считаны.

    Исключение: если есть файл .mylogin.cnf, он считан во всех случаях. Это разрешает паролям быть определенными более безопасным способом, чем в командной строке, даже когда используется --no-defaults . .mylogin.cnf создается mysql_config_editor , см. раздел 5.6.7.

  • --parallel-schemas=[N:]db_list

    Создайте очередь для того, чтобы обработать базы данных в db_list, который является списком разделенных запятой из одного или более имен базы данных. Если дано N, очередь использует N потоков. Если N нет, --default-parallelism определяет число потоков в очереди.

    Многократные случаи этой опции создают многократные очереди. mysqlpump также создает очередь по умолчанию, чтобы использовать для баз данных, не названных в любой --parallel-schemas, и для дампа пользовательских определений, если опции команды выбирают их.

  • --password[=password], -p[password]

    Пароль, чтобы использовать, соединяясь с сервером. Если Вы используете короткую форму опции (-p), Вы не должны иметь пробелы между опцией и паролем. Если Вы опускаете password после --password или -p в командной строке, mysqlpump спросит его явно.

    Определение пароля на командной строке нужно считать опасным. См. раздел 7.1.2.1. Вы можете использовать файл опции, чтобы избежать давать пароль в командной строке.

  • --plugin-dir=dir_name

    Каталог, в котором можно искать плагины. Определите эту опцию, если опция --default-auth используется, чтобы определить плагин аутентификации, но mysqlpump не находит его. См. раздел 7.3.9.

  • --port=port_num, -P port_num

    Номер порта TCP/IP, чтобы использовать для соединения.

  • --print-defaults

    Напечатайте название программы и все опции, которые это получает от файлов опции.

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    Протокол соединения, чтобы использовать для того, чтобы соединиться с сервером. Полезно, когда другие параметры соединения применят не тот протокол, см. раздел 5.2.2.

  • --replace

    Писать REPLACE вместо INSERT.

  • --result-file=file_name

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

    Эта опция должна использоваться в Windows, чтобы предотвратить преобразование \n в \r\n carriage return/newline.

  • --routines

    Включайте сохраненные подпрограммы (процедуры и функции) для выведенных баз данных в вывод. Эта опция требует глобальной привилегии SELECT.

    Вывод, произведенный при использовании --routines содержит CREATE PROCEDURE и CREATE FUNCTION, чтобы создать сохраненные подпрограммы.

    Эта опция включена по умолчанию, для выклчения надо использовать --skip-routines .

  • --secure-auth

    Не посылайте пароли в сервер в старом формате (pre-4.1)

    Эта опция устарела. Это всегда включается и попытка отключить (--skip-secure-auth , --secure-auth=0 ) сразу производит ошибку.

  • --set-charset

    Писать в вывод SET NAMES default_character_set.

    Эта опция включена по умолчанию. Чтобы отключить это и подавить запись SET NAMES, примените --skip-set-charset .

  • --single-transaction

    Эта опция устанавливает операционный режим изоляции в REPEATABLE READ и посылает START TRANSACTION серверу прежде, чем вывести данные. Это полезно только с транзакционными таблицами, например, InnoDB, потому что тогда это выводит последовательное состояние базы данных в то время, когда START TRANSACTION был запущен, не блокируя приложений.

    Используя эту опцию, Вы должны иметь в виду, что только InnoDB выведены в последовательном состоянии. Например, любые таблицы MyISAM или MEMORY выведенные, используя эту опцию, могут все еще изменить состояние.

    В то время, как --single-transaction в процессе, чтобы гарантировать допустимый файл дампа (правильное табличное содержание и двоичные координаты журнала), никакое другое соединение не должно использовать следующие запросы: ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE. Последовательное чтение не изолировано от этих запросов, таким образом, использование их на таблице, которая будет выведена, может вызвать SELECT, вызванный mysqlpump, чтобы получить табличное содержание, рискующий получить неправильное содержание или потерпеть неудачу.

    --add-locks и --single-transaction являются взаимоисключающими.

  • --skip-definer

    Пропустить DEFINER и SQL SECURITY в CREATE для представлений и сохраненных программ. Файл дампа, когда перезагружен, создает объекты, которые используют значение по умолчанию DEFINER и SQL SECURITY, см. раздел 21.6.

  • --skip-dump-rows, -d

    Не выводите строки таблицы.

  • --socket={file_name|pipe_name} , -S {file_name|pipe_name }

    Для соединений с localhost файл сокета Unix. В Windows имя именованного канала.

  • --ssl*

    Опции, которые начинаются c --ssl, определяют, соединиться ли с сервером, используя SSL и указывают, где найти ключи SSL и сертификаты, см. раздел 7.4.5.

  • --tls-version=protocol_list

    Протоколы, разрешенные клиентом для зашифрованных соединений. Значение: список разделенных запятой значений, содержащий одно или более имен протокола. Протоколы, которые могут быть названы по имени в этой опции, зависят от библиотеки SSL, использовавшейся, чтобы собрать MySQL. Для деталей см. раздел 7.4.3 .

  • --triggers

    Включайте триггеры для каждой выведенной таблицы в выводе.

    Эта опция включена по умолчанию, для отключения надо использовать --skip-triggers .

  • --tz-utc

    Эта опция включает столбцы TIMESTAMP , которые будут выведены и перезагружены между серверами в различных часовых поясах. mysqlpump устанавливает свою зону времени соединения в UTC и добавляет SET TIME_ZONE='+00:00' к файлу дампа. Без этой опции столбцы TIMESTAMP выведены и перезагружены в часовых поясах, местных для источника и целевого сервера, что может заставить значения изменяться, если серверы находятся в различных часовых поясах. --tz-utc также защищает от изменений из-за летнего времени.

    Эта опция включена по умолчанию, для выключения используйте --skip-tz-utc .

  • --user=user_name, -u user_name

    Имя пользователя MySQL, чтобы использовать, соединяясь с сервером.

  • --users

    Выводить учетные записи пользователя как логические определения в форме CREATE USER и GRANT.

    Пользовательские определения сохранены в таблицах системной базе данных mysql. По умолчанию mysqlpump не включает эти таблицы в дамп базы данных mysql. Чтобы вывести содержание таблиц как логические определения, используйте --users и блокируйте весь дамп базы данных:

    shell> mysqlpump --exclude-databases=% --users
    
  • --version, -V

    Отобразить информацию о версии.

  • --watch-progress

    Периодически выводите на экран индикатор хода выполнения, который предоставляет информацию о завершенном и общем количестве таблиц, строк и других объектов.

    Эта опция включена по умолчанию, для отключения применяется --skip-watch-progress.

Выбор объектов mysqlpump

mysqlpump имеет ряд опций включения и исключения, которые позволяют фильтровать несколько типов объектоа и обеспечивают гибкое управление тем, которые объекты вывести:

Любая опция включения или исключения может быть дана многократно. Эффект является совокупным. Порядок этих опций не имеет значения.

Значение каждой опции включения и исключения это список разделенных запятой названий соответствующего типа объекта. Например:

--exclude-databases=test,world
--include-tables=customer,invoice
Подстановочные символы разрешены в названиях объекта:

  • % соответствует любой последовательности из ноля или большего количества символов.

  • _ соответствует любому единственному символу.

Например, --include-tables=t%,__tmp соответствует всем именам таблиц, которые начинаются на t и всем пятисимвольным именам таблиц, которые кончаются строго на tmp.

Для пользователей имя, определенное без части хоста, интерпретируется с подразумеваемым хостом %. Например, u1 и u1@% аналогичны. Это та же самая эквивалентность, которая применяется в MySQL вообще (см. раздел 7.2.3).

Опции включения и исключения взаимодействуют следующим образом:

  • По умолчанию, без опций включения или исключения, mysqlpump выводит все базы данных (с определенными исключениями, отмеченными в ограничениях mysqlpump.

  • Если опции включения даны в отсутствие опций исключения, только объекты, названные как включенные, выведены.
  • Если опции исключения даны в отсутствие опций включения, все объекты выведены, кроме названных как исключенные.
  • Если есть опции включения и исключения, все объекты, названные исключенными и не названные как включенные, не выведены. Все другие объекты выведены.

Если многократные базы данных выводятся, возможно назвать таблицы, триггеры и сохраненные подпрограммы в определенной базе данных, квалифицируя названия объекта с именем базы данных. Следующая команда выводит базы данных db1 и db2, но исключает таблицы db1.t1 и db2.t2:

shell> mysqlpump --include-databases=db1,db2 --exclude-tables=db1.t1,db2.t2

Следующие опции обеспечивают альтернативные способы определить, которые базы данных вывести:

  • --all-databases выводит все базы данных (с определенными исключениями, отмеченными в исключениях mysqlpump). Это эквивалентно неопределению никаких опций объекта вообще (значение по умолчанию mysqlpump, должен вывести все).

    --include-databases=% подобно --all-databases , но выбирает все базы данных для дампа, даже те, которые являются исключениями для --all-databases.

  • --databases заставляет mysqlpump обрабатывать все параметры имени как названия баз данных, чтобы вывести. Это эквивалентно --include-databases, которая называет те же самые базы данных.

Параллельная обработка mysqlpump

mysqlpump может использовать параллелизм, чтобы достигнуть параллельной обработки. Вы можете выбрать параллелизм между базами данных (чтобы вывести многие базы данных одновременно) и в пределах баз данных (чтобы вывести многие объекты от данной базы данных одновременно).

По умолчанию mysqlpump настраивает одну очередь с двумя потоками. Вы можете создать дополнительные очереди и управлять числом потоков, назначенных каждой, включая очередь по умолчанию:

  • --default-parallelism=N определяет число потоков по умолчанию, используемых для каждой очереди. В отсутствие этой опции N = 2.

    Очередь по умолчанию всегда использует число потоков по умолчанию. Дополнительные очереди используют число потоков по умолчанию, если Вы не определяете иное.

  • --parallel-schemas=[N:]db_list настраивает очередь обработки для дампа баз данных, названных в db_list и произвольно определяет, сколько потоков очередь использует. db_list это список разделенных запятой значений имен базы данных. Если параметр опции начинается с N:, очередь задействует N потоков. Иначе --default-parallelism определяет число потоков очереди.

    Многократные случаи --parallel-schemas создают многократные очереди.

    Имена в списке базы данных могут содержать те же самые подстановочные символы % и _, поддержанные для того, чтобы фильтровать опции.

mysqlpump использует очередь по умолчанию для того, чтобы обработать любые базы данных, не названные явно с --parallel-schemas, и для дампа пользовательских определений, если опции команды выбирают их.

Вообще, с многократными очередями, mysqlpump использует параллелизм между наборами баз данных, обработанных очередями, чтобы вывести многие базы данных одновременно. Для очереди, которая использует много потоков, mysqlpump использует параллелизм в пределах баз данных, чтобы вывести многие объекты от данной базы данных одновременно. Исключения могут произойти, например, mysqlpump может заблокировать очереди в то время, как он получает из сервера списки объектов в базах данных.

С включенным параллелизмом вывод различных баз данных может быть чередованным. Например, INSERT от многих таблиц, выведенных параллельно, могут быть чередованы, запросы не написаны ни в каком особом порядке. Это не затрагивает перезагрузку, потому что выведенные запросы квалифицируют названия объекта с именами базы данных или предваряются USE как требуется.

Степень детализации для параллелизма: единственный объект базы данных. Например, единственная таблица не может быть выведена, используя много потоков.

Примеры:

shell> mysqlpump --parallel-schemas=db1,db2 --parallel-schemas=db3
mysqlpump настраивает очередь, чтобы обработать db1 и db2, другую очередь, чтобы обработать db3 и очередь по умолчанию, чтобы обработать все другие базы данных. Все очереди используют по два потока.
shell> mysqlpump --parallel-schemas=db1,db2 --parallel-schemas=db3
                    --default-parallelism=4
Это то же самое, как предыдущий пример за исключением того, что все очереди используют по четыре потока.
shell> mysqlpump --parallel-schemas=5:db1,db2 --parallel-schemas=3:db3
Очередь для db1 и db2 применяет пять потоков, очередь для db3 три потока, а очередь по умолчанию использует значение по умолчанию из двух потоков.

Как особый случай, с --default-parallelism=0 и без --parallel-schemas mysqlpump работает как однопоточный процесс и не создает очередей.

Ограничения mysqlpump

mysqlpump не выводит performance_schema, ndbinfo или sys по умолчанию. Чтобы вывести любую из них, назовите их явно в командной строке. Вы можете также назвать их с --databases или --include-databases.

mysqlpump вообще никак не выводит INFORMATION_SCHEMA.

mysqlpump выводит учетные записи пользователя в логической форме using CREATE USER и GRANT (например, когда Вы используете --include-users или --users). Поэтому дампы системной базы данных mysql по умолчанию не включают таблицы привилегий, которые содержат пользовательские определения: user, db, tables_priv, columns_priv, procs_priv или proxies_priv. Чтобы вывести любую из этих таблиц, назовите mysql с именами таблиц:

shell> mysqlpump mysql user db ...

5.5.7. mysqlshow Показ информации о базе данных, таблице и столбце

mysqlshow может использоваться, чтобы быстро увидеть, какие базы данных существуют, их таблицы, столбцы таблиц или индексы.

mysqlshow обеспечивает интерфейс командной строки к нескольким SQL-запросам SHOW, см. раздел 14.7.5. Та же самая информация может быть получена при использовании тех запросов непосредственно. Например, Вы можете дать их из mysql.

Вызов mysqlshow :

shell> mysqlshow [options] [db_name
                    [tbl_name [col_name]]]
  • Если никакая база данных не дана, выведен список имен базы данных.

  • Если никакая таблица не дана, показывают все подходящие таблицы в базе данных.
  • Если никакой столбец не дан, показывают все подходящие столбцы и типы столбца в таблице.

Вывод выводит на экран только названия тех баз данных, таблиц или столбцов, для которых у Вас есть хоть какие-то привилегии.

Если последний параметр содержит подстановочные символы SQL или оболочки (*, ?, % или _), только те имена, которые являются соответствующими подстановочным знаком, показывают. Если имя базы данных содержит какие-либо подчеркивания, их нужно экранировать наклонной чертой влево (некоторые оболочки Unix требуют две), чтобы получить список надлежащих таблиц или столбцов. * и ? преобразованы в SQL % и _. Это могло бы вызвать некоторый беспорядок, когда Вы пытаетесь вывести на экран столбцы для таблицы с _ в имени, потому что в этом случае mysqlshow показывает Вам только имена таблиц, которые соответствуют образцу. Это легко установлено, добавляя дополнительный % последним в командной строке как отдельный параметр.

mysqlshow поддерживает следующие опции, которые могут быть определены в командной строке или в группах [mysqlshow] и [client] файла опции. Для информации о файлах опции, используемых программами MySQL, см. раздел 5.2.6.

Таблица 5.14. Опции mysqlshow

ФорматОписание
--bind-addressИспользуйте определенный сетевой интерфейс, чтобы соединиться с MySQL Server
--compressСжать всю информацию, посланную между клиентом и сервером
--count Покажите число строк в таблице
--debug Писать журнал отладки
--debug-checkИнформация об отладке, когда программа выходит
--debug-infoИнформация об отладке, памяти и статистика центрального процессора, когда программа выходит
--default-authПлагин аутентификации, чтобы использовать
--default-character-setОпределите набор символов по умолчанию
--defaults-extra-fileЧитать этот файл опции в дополнение к обычным файлам опции
--defaults-fileЧитать только этот файл опции
--defaults-group-suffixГрупповое значение суффикса опции
--enable-cleartext-plugin Включите плагин аутентификации открытого текста
--help Показать справочное сообщение
--host Соединитесь с сервером MySQL на данном хосте
--keys Покажите индексы таблицы
--login-pathЧитать опции пути входа в систему из .mylogin.cnf
--no-defaultsНе читать файлы опции
--passwordПароль, чтобы использовать, соединяясь с сервером
--pipe В Windows соединитесь с сервером, используя именованный канал
--plugin-dirКаталог, где плагины установлены
--port Номер порта TCP/IP, чтобы использовать для соединения
--print-defaultsНапечатайте опции по умолчанию
--protocolПротокол для соединения
--secure-authНе посылайте пароли серверу в старом формате (pre-4.1)
--shared-memory-base-nameНазвание совместно используемой памяти, чтобы использовать для соединений совместно используемой памяти
--show-table-typeПокажите столбец, указывающий табличный тип
--socket Для соединений с localhost файл сокета Unix
--ssl-ca Путь к файлу, который содержит список доверенных SSL CA
--ssl-capath Путь к каталогу, который содержит доверенные сертификаты SSL CA в формате PEM
--ssl-cert Путь к файлу, который содержит сертификат X509 в формате PEM
--ssl-cipher Список разрешенных шифров, чтобы использовать для шифрования соединения
--ssl-crl Путь к файлу, который содержит списки аннулирования сертификатов
--ssl-crlpath Путь к каталогу, который содержит файлы списка аннулирования сертификатов
--ssl-key Путь к файлу, который содержит ключ X509 в формате PEM
--ssl-mode Статус безопасности соединения с сервером
--status Выведите на экран дополнительную информацию о каждой таблице
--tls-versionПротоколы для безопасных соединений
--user Имя пользователя MySQL, чтобы использовать, соединяясь с сервером
--verboseПодробный режим вывода
--versionПоказать информацию о версии
  • --help, -?

    Отобразить текст справки.

  • --bind-address=ip_address

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

  • --character-sets-dir=dir_name

    Каталог, где наборы символов установлены. См. раздел 11.5.

  • --compress, -C

    Сжать всю информацию, посланную между клиентом и сервером.

  • --count

    Покажите число строк в таблице. Это может быть медленным для таблиц не-MyISAM.

  • --debug[=debug_options], -# [debug_options]

    Писать журнал отладки. Типичная строка debug_options d:t:o,file_name. Значение по умолчанию d:t:o.

  • --debug-check

    Напечатайте некоторую информацию об отладке, когда программа выходит.

  • --debug-info

    Информация об отладке, памяти и статистика использования центрального процессора, когда программа выходит.

  • --default-character-set=charset_name

    Использовать charset_name как набор символов по умолчанию. См. раздел 11.5.

  • --default-auth=plugin

    Подсказка о клиентском плагине аутентификации, чтобы использовать. См. See раздел 7.3.9.

  • --defaults-extra-file=file_name

    Читать этот файл опции после глобального файла опции, но (в Unix) перед пользовательским файлом опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

  • --defaults-file=file_name

    Используйте только данный файл опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

    Исключение: Даже с опцией --defaults-file программы клиента читают .mylogin.cnf.

  • --defaults-group-suffix=str

    Читать не только обычные группы опции, но также и группы с обычными именами и суффиксом str. Например, mysqlshow обычно читает группы [client] и [mysqlshow]. Если задана опция --defaults-group-suffix=_other, mysqlshow также читает группы [client_other] и [mysqlshow_other].

  • --enable-cleartext-plugin

    Включите плагин аутентификации открытого текста mysql_clear_password, см. раздел 7.5.1.4.

  • --host=host_name, -h host_name

    Соединитесь с сервером MySQL на данном хосте.

  • --keys, -k

    Покажите индексы таблицы.

  • --login-path=name

    Читать опции из названного пути входа в систему в .mylogin.cnf. login path является группой опции, содержащей опции, которые определяют, с каким сервером MySQL соединиться и как подтвердить подлинность. Чтобы создать или изменить файл пути входа в систему, используйте mysql_config_editor , см. раздел 5.6.7.

  • --no-defaults

    Не читайте файлы опции. Если запуск программы терпит неудачу из-за чтения неизвестных опций из файла опции, --no-defaults может использоваться, чтобы препятствовать тому, чтобы они были считаны.

    Исключение то, что файл .mylogin.cnf, если существует, считан во всех случаях. Это разрешает паролям быть определенными более безопасным способом, чем в командной строке, даже когда есть опция --no-defaults . .mylogin.cnf создается mysql_config_editor , см. раздел 5.6.7.

  • --password[=password], -p[password]

    Пароль, чтобы использовать, соединяясь с сервером. Если Вы используете короткую форму опции (-p), Вы не должны иметь пробелы между опцией и паролем. Если Вы опускаете password после --password или -p в командной строке, mysqlshow его спросит явно.

    Определение пароля в командной строке нужно считать опасным. См. раздел 7.1.2.1. Вы можете использовать файл опции, чтобы избежать задавать пароль в командной строке.

  • --pipe, -W

    В Windows соединитесь с сервером, используя именованный канал. Эта опция применяется, только если сервер поддерживает соединения именованного канала.

  • --plugin-dir=dir_name

    Каталог, в котором можно искать плагины. Определите эту опцию, если --default-auth используется, чтобы определить плагин аутентификации, но mysqlshow его не нашел, см. раздел 7.3.9.

  • --port= port_num, -P port_num

    Номер порта TCP/IP, чтобы использовать для соединения.

  • --print-defaults

    Напечатайте название программы и все опции, которые это получает от файлов опции.

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    Протокол соединения, чтобы использовать для того, чтобы соединиться с сервером. Полезно, когда другие параметры соединения используют не тот протокол, см. раздел 5.2.2.

  • --secure-auth

    Не посылайте пароли в сервер в старом формате (pre-4.1).

    Эта опция устарела. Это всегда включается и попытка отключения (--skip-secure-auth , --secure-auth=0 ) немедлено вызовет ошибку.

  • --shared-memory-base-name=name

    В Windows имя совместно используемой памяти для соединений, сделанных, используя совместно используемую память для локального сервера. Значение по умолчанию MYSQL. Имя совместно используемой памяти является чувствительным к регистру.

    Сервер должен быть запущен с опцией --shared-memory .

  • --show-table-type, -t

    Покажите столбец, указывающий на табличный тип, как в SHOW FULL TABLES. Тип BASE TABLE или VIEW.

  • --socket= path, -S path

    Для соединений с localhost файл сокета Unix. В Windows название именованного канала.

  • --ssl*

    Опции, которые начинаются с --ssl, определяют, соединиться ли с сервером, используя SSL и указывают, где найти ключи SSL и сертификаты, см. раздел 7.4.5.

  • --status, -i

    Выведите на экран дополнительную информацию о каждой таблице.

  • --tls-version=protocol_list

    Протоколы, разрешенные клиентом для зашифрованных соединений. Значение: список разделенных запятой значений, содержащий одно или более имен протокола. Протоколы, которые могут быть названы по имени в этой опции, зависят от библиотеки SSL, использовавшейся, чтобы собрать MySQL. Для деталей см. раздел 7.4.3 .

  • --user= user_name, -u user_name

    Имя пользователя MySQL, чтобы использовать, соединяясь с сервером.

  • --verbose, -v

    Подробный режим. Напечатайте больше информации о том, что делает программа. Эта опция может использоваться многократно, чтобы увеличить количество информации.

  • --version, -V

    Показать информацию о версии.

5.5.8. mysqlslap клиент эмуляции загрузки

mysqlslap это программа диагностирования, разработанная, чтобы подражать загрузке клиента для сервера MySQL и сообщить о синхронизации каждого этапа. Это работает, как будто много клиентов получают доступ к серверу.

Вызов mysqlslap :

shell> mysqlslap [options]
Некоторые опции, например, --create или --query, позволяют Вам определить строку, содержащую запрос SQL или файл, содержащий запросы. Если Вы определяете файл, по умолчанию это должно содержать один запрос на строку. Таким образом, неявный разделитель запросов это символ новой строки. Примените опцию --delimiter , чтобы определить иной разделитель, который позволяет Вам определить запросы, которые охватывают многократные строки или помещают многократные запросы в одной строке. Вы не можете включать комментарии в файл, mysqlslap не понимает их.

mysqlslap работает в три шага:

  1. Создайте схему, таблицу, и произвольно любые сохраненные программы или данные, чтобы использовать для теста. Этот этап использует единственное соединение клиента.

  2. Выполните нагрузочный тест. Этот этап может использовать много соединений клиента.
  3. Удалите таблицу, если определена. Этот этап использует единственное соединение клиента.

Пример:

Создайте таблицу и выполните запросы SQL с 50 запрашивающими клиентами и 200 выбирающими для каждого запроса (введите команду в одну строку):

mysqlslap --delimiter=";"
          --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)"
          --query="SELECT * FROM a" --concurrency=50 --iterations=200
Пусть mysqlslap создаст запрос SQL с таблицей из двух столбцов INT и трех VARCHAR. Используйте пять клиентов, запрашивающих 20 раз каждый. Не составляйте таблицу и не вставляйте данные (то есть, используйте схему предыдущего теста и данные):
mysqlslap --concurrency=5 --iterations=20
          --number-int-cols=2 --number-char-cols=3 --auto-generate-sql
Скажите программе загружать создавать вставлять и запрашивать запросы SQL от указанных файлов, где create.sql имеет много табличные запросы создания, разграниченные ';' и многократные запросы вставки, разграниченные ';'. Файл в --query разграничивает запросы ';'. Выполните все запросы загрузки, затем выполните все запросы в файле запроса с пятью клиентами (пять раз каждый):
mysqlslap --concurrency=5 --iterations=5
          --query=query.sql
          --create=create.sql --delimiter=";"
mysqlslap поддерживает следующие опции, которые могут быть определены в командной строке или в группах [mysqlslap] и [client] файла опции. Для информации о файлах опции, используемых программами MySQL, см. раздел 5.2.6.

Таблица 5.15. Опции mysqlslap

ФорматОписание
--auto-generate-sqlПроизведите запросы SQL автоматически, когда они не даны в файлах или опциях команды
--auto-generate-sql-add-autoincrement Добавить столбец AUTO_INCREMENT к автоматически произведенным таблицам
--auto-generate-sql-execute-number Определите сколько запросов произвести автоматически
--auto-generate-sql-guid-primaryДобавьте основанный на GUID первичный ключ к автоматически произведенным таблицам
--auto-generate-sql-load-type Определите испытательный тип загрузки
--auto-generate-sql-secondary-indexes Определите, сколько вторичных индексов добавить к автоматически произведенным таблицам
--auto-generate-sql-unique-query-number Сколько различных запросов произвести для автоматических тестов
--auto-generate-sql-unique-write-number Сколько различных запросов произвести для --auto-generate-sql-write-number
--auto-generate-sql-write-number Сколько строк вставлять в каждом потоке
--commit Сколько запросов выполнить перед commit
--compressСжать всю информацию, посланную между клиентом и сервером
--concurrencyЧисло клиентов, чтобы моделировать, делая SELECT
--create Файл или строка, содержащая запрос, чтобы использовать для того, чтобы составить таблицу
--create-schemaСхема, в которой можно выполнить тесты
--csv Произведите вывод в отделенном запятыми формате значений
--debug Писать журнал отладки
--debug-checkИнформация об отладке, когда программа выходит
--debug-infoИнформация об отладке, памяти и статистика центрального процессора, когда программа выходит
--default-authПлагин аутентификации, чтобы использовать
--defaults-extra-fileЧитать этот файл опции в дополнение к обычным файлам опции
--defaults-fileЧитать только этот файл опции
--defaults-group-suffixГрупповое значение суффикса опции
--delimiterРазделитель, чтобы использовать в запросах SQL
--detach Отделить (закрыть и вновь открыть) каждое соединение после каждых N запросов
--enable-cleartext-plugin Включите плагин аутентификации открытого текста
--engine Механизм хранения для того, чтобы составить таблицу
--help Отобразить сообщение справки
--host Соединитесь с сервером MySQL на данном хосте
--iterationsСколько раз выполнить тесты
--login-pathСчитайте опции пути входа в систему из .mylogin.cnf
--no-defaultsНе читайте файлы опции
--no-dropНе удалять любую схему, созданную во время испытания
--number-char-colsЧисло столбцов VARCHAR, чтобы использовать, если определена --auto-generate-sql
--number-int-colsЧисло столбцов INT, чтобы использовать, если определена --auto-generate-sql
--number-of-queriesОграничьте каждого клиента приблизительно этим числом запросов
--only-printНе соединяйтесь с базами данных. mysqlslap только печатает то, что он сделал бы
--passwordПароль, чтобы использовать, соединяясь с сервером
--pipe В Windows соединитесь с сервером, используя именованный канал
--plugin-dirКаталог, где плагины установлены
--port Номер порта TCP/IP, чтобы использовать для соединения
--post-queryФайл или строка, содержащая запрос, чтобы выполнить после тестов
--post-systemСтрока, чтобы выполнить через system() после тестов
--pre-queryФайл или строка, содержащая запрос, чтобы выполнить прежде, чем выполнить тесты
--pre-systemСтрока, чтобы выполнить через system() до тестов
--print-defaultsНапечатайте опции по умолчанию
--protocolПротокол соединения, чтобы использовать
--query Файл или строка, содержащая запрос SELECT, чтобы использовать для того, чтобы получить данные
--secure-authНе посылайте пароли серверу в старом формате (pre-4.1)
--shared-memory-base-nameНазвание совместно используемой памяти, чтобы использовать для соединений
--silent Тихий режим
--socketДля соединений с localhost файл сокета Unix
--sql-modeЗадать режим SQL для сеанса клиента
--ssl-ca Путь к файлу, который содержит список доверенных SSL CA
--ssl-capath Путь к каталогу, который содержит доверенные сертификаты SSL CA в формате PEM
--ssl-cert Путь к файлу, который содержит сертификат X509 в формате PEM
--ssl-cipher Список разрешенных шифров, чтобы использовать для шифрования соединения
--ssl-crl Путь к файлу, который содержит списки аннулирования сертификатов
--ssl-crlpath Путь к каталогу, который содержит файлы списка аннулирования сертификатов
--ssl-keyПуть к файлу, который содержит ключ X509 в формате PEM
--ssl-modeСтатус безопасности соединения с сервером
--tls-versionПротоколы для безопасных соединений
--userИмя пользователя MySQL, чтобы использовать, соединяясь с сервером
--verboseПодробный режим
--versionОтобразить информацию о версии
  • --help, -?

    Отобразить сообщение справки.

  • --auto-generate-sql, -a

    Произведите запросы SQL автоматически, когда они не даны в файлах или опциях команды.

  • --auto-generate-sql-add-autoincrement

    Добавить столбец AUTO_INCREMENT к автоматически произведенным таблицам.

  • --auto-generate-sql-execute-number=N

    Определите сколько запросов произвести автоматически.

  • --auto-generate-sql-guid-primary

    Добавьте основанный на GUID первичный ключ к автоматически произведенным таблицам.

  • --auto-generate-sql-load-type=type

    Определите испытательный тип загрузки. Допустимые значения: read (просмотр таблицы), write (вставка в таблицы), key (считывание первичных ключей), update (обновление первичных ключей) или mixed (половина вставки, половина просмотр). Значение по умолчанию mixed.

  • --auto-generate-sql-secondary-indexes=N

    Определите, сколько вторичных индексов добавить к автоматически произведенным таблицам. По умолчанию ни один не добавлен.

  • --auto-generate-sql-unique-query-number=N

    Сколько различных запросов произвести для автоматических тестов. Например, если Вы выполняете тест key, который выполняет 1000 выборок, Вы можете использовать эту опцию со значением 1000, чтобы выполнить 1000 уникальных запросов, или со значением 50, чтобы сделать разных выборок. Значение по умолчанию 10.

  • --auto-generate-sql-unique-write-number=N

    Какое количествл различных запросов произвести для --auto-generate-sql-write-number. Значение по умолчанию 10.

  • --auto-generate-sql-write-number=N

    Сколько строк вставлять. Значение по умолчанию 100.

  • --commit=N

    Сколько запросов выполнить перед commit. Значение по умолчанию 0 (no commit).

  • --compress, -C

    Сжать всю информацию, посланную между клиентом и сервером.

  • --concurrency=N, -c N

    Число параллельных клиентов.

  • --create=value

    Файл или строка, содержащая запрос, чтобы использовать для того, чтобы составить таблицу.

  • --create-schema=value

    Схема, в которой можно выполнить тесты.

    Если --auto-generate-sql тоже есть, mysqlslap удаляет схему в конце испытания. Чтобы избежать этого, используйте --no-drop .

  • --csv[=file_name]

    Произведите вывод в отделенном запятыми формате значений. Вывод идет в названный файл, или в стандартный вывод, если никакой файл не дан.

  • --debug[=debug_options], -# [debug_options]

    Писать журнал отладки. Типичная строка debug_options: d:t:o,file_name. Значение по умолчанию d:t:o,/tmp/mysqlslap.trace.

  • --debug-check

    Напечатайте некоторую информацию об отладке, когда программа выходит.

  • --debug-info, -T

    Информация об отладке, памяти и статистика использования центрального процессора, когда программа выходит.

  • --default-auth=plugin

    Подсказка о клиентском плагине аутентификации, чтобы использовать. См. раздел 7.3.9.

  • --defaults-extra-file=file_name

    Читать этот файл опции после глобального файла опции, но (в Unix) перед пользовательским файлом опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

  • --defaults-file=file_name

    Используйте только данный файл опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

    Исключение: Даже с опцией --defaults-file программы клиента читают .mylogin.cnf.

  • --defaults-group-suffix=str

    Читать не только обычные группы опции, но также и группы с обычными именами и суффиксом str. Например, mysqlslap обычно читает группы [client] и [mysqlslap]. Если есть опция --defaults-group-suffix=_other, mysqlslap также читает группы [client_other] и [mysqlslap_other].

  • --delimiter=str, -F str

    Разделитель, чтобы использовать в запросах SQL, поставляемых в файлах или опциях команды.

  • --detach=N

    Закрыть и переоткрыть каждое соединение после каждых N запросов. Значение по умолчанию 0 (соединения не отделены).

  • --enable-cleartext-plugin

    Включите плагин аутентификации открытого текста mysql_clear_password, см. раздел 7.5.1.4.

  • --engine= engine_name, -e engine_name

    Механизм хранения, чтобы использовать для того, чтобы составить таблицы.

  • --host= host_name, -h host_name

    Соединитесь с сервером MySQL на данном хосте.

  • --iterations= N, -i N

    Сколько раз выполнить тесты.

  • --login-path= name

    Читать опции из названного пути входа в систему в .mylogin.cnf. login path является группой опции, содержащей опции, которые определяют, с каким сервером MySQL соединиться и как подтвердить подлинность. Чтобы создать или изменить файл пути входа в систему, используйте mysql_config_editor , см. раздел 5.6.7.

  • --no-drop

    Не удалять любую схему, которую создали во время испытания.

  • --no-defaults

    Не читайте файлы опции. Если запуск программы терпит неудачу из-за чтения неизвестных опций из файла опции, --no-defaults может использоваться, чтобы препятствовать тому, чтобы они были считаны.

    Исключение то, что файл .mylogin.cnf, если есть, считан во всех случаях. Это разрешает паролям быть определенными более безопасным способом, чем в командной строке, даже когда задана опция --no-defaults . .mylogin.cnf создается mysql_config_editor , см. раздел 5.6.7.

  • --number-char-cols=N, -x N

    Число столбцов VARCHAR, чтобы использовать, если задана --auto-generate-sql.

  • --number-int-cols=N, -y N

    Число столбцов INT, чтобы использовать, если задана --auto-generate-sql.

  • --number-of-queries=N

    Ограничьте каждого клиента приблизительно этим числом запросов. Подсчет запросов принимает во внимание разделитель запроса. Например, если Вы вызываете mysqlslap , разделитель ; признан так, чтобы каждый случай запроса представил количество в виде строки как два запроса. В результате вставлены 5 строк (не 10).

    shell> mysqlslap --delimiter=";" --number-of-queries=10
                        --query="use test;insert into t values(null)"
    
  • --only-print

    Не соединяйтесь с базами данных. mysqlslap только печатает то, что он сделал бы.

  • --password[=password], -p[password]

    Пароль, чтобы использовать, соединяясь с сервером. Если Вы используете короткую форму опции (-p), Вы не можете иметь пробелы между опцией и паролем. Если Вы опускаете password после --password или -p в командной строке, mysqlslap запросит пароль явно.

    Определение пароля в командной строке нужно считать опасным. См. раздел 7.1.2.1. Вы можете использовать файл опции, чтобы избежать давать пароль в командной строке.

  • --pipe, -W

    В Windows соединитесь с сервером, используя именованный канал.

  • --plugin-dir=dir_name

    Каталог, в котором можно искать плагины. Определите эту опцию, если --default-auth задана, чтобы определить плагин аутентификации, но mysqlslap его не нашел, см. раздел 7.3.9.

  • --port=port_num, -P port_num

    Номер порта TCP/IP, чтобы использовать для соединения.

  • --post-query=value

    Файл или строка, содержащая запрос, чтобы выполнить после тестов. Это выполнение не посчитано в целях синхронизации.

  • --post-system=str

    Строка, чтобы выполнить с использованием system() после того, как тесты завершились. Это выполнение не посчитано в целях синхронизации.

  • --pre-query=value

    Файл или строка, содержащая запрос, чтобы выполнить прежде, чем выполнить тесты. Это выполнение не посчитано в целях синхронизации.

  • --pre-system=str

    Строка, чтобы выполнить с использованием system() прежде, чем выполнить тесты. Это выполнение не посчитано в целях синхронизации.

  • --print-defaults

    Напечатайте название программы и все опции, которые это получает от файлов опции.

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    Протокол соединения, чтобы использовать для того, чтобы соединиться с сервером. Полезно, когда другие параметры соединения заставляли бы применить не тот протокол. См. раздел 5.2.2.

  • --query= value, -q value

    Файл или строка, содержащая запрос SELECT для того, чтобы получить данные.

  • --secure-auth

    Не посылайте пароли в сервер в старом формате (pre-4.1).

    Эта опция устарела. Это всегда включается и попытка отключения ( --skip-secure-auth, --secure-auth=0 ) сразу приводит к ошибке.

  • --shared-memory-base-name=name

    В Windows имя совместно используемой памяти для соединений, сделанных, используя совместно используемую память для локального сервера. Эта опция применяется, только если сервер поддерживает соединения совместно используемой памяти.

  • --silent, -s

    Тихий режим. Никакого вывода.

  • --socket=path, -S path

    Для соединений с localhost файл сокета Unix, для Windows имя названного канала.

  • --sql-mode= mode

    Установите режим SQL для сеанса клиента.

  • --ssl*

    Опции, которые начинаются с --ssl, определяют, соединиться ли с сервером, используя SSL, и указывают, где найти ключи SSL и сертификаты, см. раздел 7.4.5.

  • --tls-version= protocol_list

    Протоколы, разрешенные клиентом для зашифрованных соединений. Значение: список разделенных запятой значений, содержащий одно или более имен протокола. Протоколы, которые могут быть названы по имени в этой опции, зависят от библиотеки SSL, использовавшейся, чтобы собрать MySQL. Для деталей см. раздел 7.4.3.

  • --user=user_name , -u user_name

    Имя пользователя MySQL, чтобы использовать, соединяясь с сервером.

  • --verbose, -v

    Многословный режим. Напечатать больше информации о том, что делает программа. Эта опция может использоваться многократно, чтобы увеличить количество информации.

  • --version, -V

    Отобразить информацию о версии.

5.6. Административные утилиты MySQL

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

5.6.1. ibd2sdi Утилита извлечения SDI табличного пространства InnoDB

ibd2sdi это утилита InnoDB, чтобы извлечь serialized dictionary information (SDI) из файлов табличного пространства InnoDB.

Данные SDI не присутствуют в постоянных табличных пространствах InnoDB в MySQL 8.0.0. ibd2sdi сохранена для будущего использования.

5.6.2. innochecksum офлайновая утилита контрольной суммы файла InnoDB

innochecksum печатает контрольные суммы для файлов InnoDB. Этот инструмент читает файл табличного пространства InnoDB, вычисляет контрольную сумму для каждой страницы, сравнивает расчетную контрольную сумму с сохраненной контрольной суммой и сообщает о несоответствиях, которые указывают на поврежденные страницы. Это было первоначально сделано, чтобы ускорить подтверждение целостности файлов табличного пространства после отключений электричества, но может также использоваться после копий файла. Поскольку несоответствия контрольной суммы InnoDB предписывают закрыть рабочий сервер, может быть предпочтительно использовать этот инструмент вместо того, чтобы столкнуться с поврежденными страницами сервера в производственном использовании.

innochecksum не может использоваться на файлах табличного пространства, которые сервер уже открыл. Для таких файлов Вы должны использовать CHECK TABLE, чтобы проверять таблицы в пределах табличного пространства. Попытка выполнить innochecksum на табличном пространстве, которое сервер уже имеет открытым, приведет к ошибке Unable to lock file.

Если несоответствия контрольной суммы найдены, Вы обычно восстанавливали бы табличное пространство от резервной копии или запускали бы сервер и использовали mysqldump , чтобы сделать резервное копирование таблиц в пределах табличного пространства.

Вызов innochecksum :

shell> innochecksum [options] file_name

Опции innochecksum

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

  • --help, -?

    Отобразить справочное сообщение.

  • --info, -I

    Синоним для --help .

  • --version, -V

    Отобразить информацию о версии.

  • --verbose, -v

    Многословный режим, печатает индикатор хода выполнения в файл системного журнала каждые пять секунд. Для индикатора хода выполнения, который будет напечатан, файл системного журнала должен быть определен, используя --log option. Чтобы включить этот режим:

    shell> innochecksum --verbose
    
    Чтобы выключить этот режим:
    shell> innochecksum --verbose=FALSE
    
    Опции --verbose и --log могут быть определены в то же самое время. Например:
    shell> innochecksum --verbose --log=/var/lib/mysql/test/logtest.txt
    
    Чтобы определить местонахождение информации об индикаторе хода выполнения в файле системного журнала, Вы можете выполнить следующий поиск:
    shell> cat ./logtest.txt | grep -i "okay"
    
    Информация об индикаторе хода выполнения в файле системного журнала подобна следующему:
    page 1663 okay: 2.863% done
    page 8447 okay: 14.537% done
    page 13695 okay: 23.568% done
    page 18815 okay: 32.379% done
    page 23039 okay: 39.648% done
    page 28351 okay: 48.789% done
    page 33023 okay: 56.828% done
    page 37951 okay: 65.308% done
    page 44095 okay: 75.881% done
    page 49407 okay: 85.022% done
    page 54463 okay: 93.722% done
    ...
    
  • --count, -c

    Напечатайте количество страниц в файле. Например:

    shell> innochecksum --count ../data/test/tab1.ibd
    
  • --start-page=num, -s num

    Начать с конкретной страницы в файле:

    shell> innochecksum --start-page=600 ../data/test/tab1.ibd
    
    Или:
    shell> innochecksum -s 600 ../data/test/tab1.ibd
    
  • --end-page=num, -e num

    Закончить на конкретной странице в файле:

    shell> innochecksum --end-page=700 ../data/test/tab1.ibd
    
    Или:
    shell> innochecksum --p 700 ../data/test/tab1.ibd
    
  • --page= num, -p num

    Проверьте только эту страницу:

    shell> innochecksum --page=701 ../data/test/tab1.ibd
    
  • --strict-check, -C

    Определите строгий алгоритм контрольной суммы. Опции включают innodb, crc32 и none.

    В этом примере алгоритм контрольной суммы innodb определен:

    shell> innochecksum --strict-check=innodb ../data/test/tab1.ibd
    
    В этом примере определен алгоритм контрольной суммы crc32:
    shell> innochecksum -C crc32 ../data/test/tab1.ibd
    
    Следующие условия применяются:
    • Если Вы не определяете --strict-check , innochecksum проверяет по innodb, crc32 и none.

    • Если Вы определяете none, допустимы только контрольные суммы, произведенные none.
    • Если Вы определяете innodb, допустимы только контрольные суммы, произведенные innodb.
    • Если Вы определяете crc32, допустимы только контрольные суммы, произведенные crc32.

  • --no-check, -n

    Проигнорируйте проверку контрольной суммы, переписывая контрольную сумму. Эта опция может использоваться только с опцией --write. Если --write не задана, innochecksum прерывается.

    В этом примере контрольная сумма innodb переписана, чтобы заменить недопустимую контрольную сумму:

    shell> innochecksum --no-check --write innodb ../data/test/tab1.ibd
    
  • --allow-mismatches, -a

    Максимальное количество несоответствий контрольной суммы, позволенных перед прерыванием innochecksum. Настройка по умолчанию 0. Если --allow-mismatches=N, где N>=0, N несоответствий разрешены, и innochecksum заканчивается на N+1. Когда --allow-mismatches установлена в 0, innochecksum заканчивается на первом несоответствии контрольной суммы.

    В этом примере контрольная сумма переписана и --allow-mismatches установлена в 1.

    shell> innochecksum --allow-mismatches=1 --write innodb ../data/test/tab1.ibd
    
    С --allow-mismatches=1, если есть несоответствие на странице 600 и другое на странице 700 в файле с 1000 страницами, контрольная сумма обновлена для страниц 0-599 и 601-699. Поскольку --allow-mismatches=1, контрольная сумма терпит первое несоответствие и заканчивается на втором несоответствии, страницы 700-999 не будут изменены.
  • --write=name, -w num

    Перепишите контрольную сумму. Переписывая недопустимую контрольную сумму, --no-check должна использоваться вместе с --write. Опция --no-check говорит innochecksum игнорировать проверку недопустимой контрольной суммы. Вы не должны определить --no-check, если текущая контрольная сумма допустима.

    Алгоритм должен быть определен, используя опцию --write. Возможные значения для --write:

    • innodb: Контрольная сумма вычислена программно, используя оригинальный алгоритм InnoDB.

    • crc32: Контрольная сумма вычислена с использованием алгоритма crc32, возможно, с аппаратной поддержкой.
    • none: Постоянное число.

    --write переписывает все страницы на диск. Если новая контрольная сумма идентична существующей контрольной сумме, новая контрольная сумма не написана на диск, чтобы минимизировать ввод/вывод.

    innochecksum получает исключительную блокировку, когда используется --write.

    Контрольная сумма crc32 написана для tab1.ibd:

    shell> innochecksum -w crc32 ../data/test/tab1.ibd
    

    Контрольная сумма crc32 переписана, чтобы заменить недопустимую crc32:

    shell> innochecksum --no-check --write crc32 ../data/test/tab1.ibd
    
  • --page-type-summary, -S

    Выведите на экран количество страниц каждого типа в табличном пространстве:

    shell> innochecksum --page-type-summary ../data/test/tab1.ibd
    
    Типовой вывод для --page-type-summary:
    File::../data/test/tab1.ibd
    ================PAGE TYPE SUMMARY==============
    #PAGE_COUNT PAGE_TYPE
    ===============================================
     2 Index page
     0 Undo log page
     1 Inode page
     0 Insert buffer free list page
     2 Freshly allocated page
     1 Insert buffer bitmap
     0 System page
     0 Transaction system page
     1 File Space Header
     0 Extent descriptor page
     0 BLOB page
     0 Compressed BLOB page
     0 Other type of page
    ===============================================
    Additional information:
    Undo page type: 0 insert, 0 update, 0 other
    Undo page state: 0 active, 0 cached, 0 to_free,
                     0 to_purge, 0 prepared, 0 other
    
  • --page-type-dump, -D

    Выведите информацию о типе страницы для каждой страницы в табличном пространстве в stderr или stdout:

    shell> innochecksum --page-type-dump=/tmp/a.txt ../data/test/tab1.ibd
    
  • --log, -l

    Журнал вывода для innochecksum. Имя файла системного журнала должно быть обеспечено. Вывод журнала содержит значения контрольной суммы для каждой страницы табличного пространства. Для несжатых таблиц также обеспечены значения LSN. --log заменяет опцию --debug, которая была доступна в более ранних выпусках:

    shell> innochecksum --log=/tmp/log.txt ../data/test/tab1.ibd
    
    Или:
    shell> innochecksum -l /tmp/log.txt ../data/test/tab1.ibd
    
  • -.

    Определите -, чтобы читать из стандартного ввода. Если - отсутствует, когда будет ожидаться чтение из стандартного ввода, innochecksum выведет информацию об использовании innochecksum , указывающую, что пропущена опция -:

    shell> cat t1.ibd | innochecksum -
    
    В этом примере innochecksum пишет контрольную сумму crc32 в a.ibd, не изменяя оригинальный файл t1.ibd.
    shell> cat t1.ibd | innochecksum --write=crc32 - > a.ibd
    

Выполнение innochecksum на многих определяемых пользователем файлах табличного пространства

Следующие примеры демонстрируют, как выполнить innochecksum на многих определяемых пользователем файлах табличного пространства (файлах .ibd).

Запустите innochecksum для всего табличного пространства (файлы .ibd) в базе данных test:

shell> innochecksum ./data/test/*.ibd
Запустите innochecksum для всех файлов табличного пространства (файлы .ibd), у которых есть имя файла, начинающееся с t:
shell> innochecksum ./data/test/t*.ibd
Запустите innochecksum для всех файлов табличного пространства (файлы .ibd) в каталоге data:
shell> innochecksum ./data/*/*.ibd

Запуск innochecksum на многих определяемых пользователем файлах табличного пространства не поддержано на операционных системах Windows, поскольку в Windows оболочка cmd.exe не понимает глобальное расширение образца. На системах Windows innochecksum должен быть выполнен отдельно для каждого определяемого пользователем файла табличного пространства. Например:

cmd> innochecksum.exe t1.ibd
cmd> innochecksum.exe t2.ibd
cmd> innochecksum.exe t3.ibd

Выполнение innochecksum на многих системных файлах табличного пространства

По умолчанию в InnoDB есть только один системный файл табличного пространства (ibdata1), но многие файлы для системного табличного пространства могут быть определены, используя опцию innodb_data_file_path. В следующем примере три файла для системного табличного пространства определены, используя innodb_data_file_path: ibdata1, ibdata2 и ibdata3.

shell> ./bin/mysqld --no-defaults
          --innodb-data-file-path="ibdata1:10M;ibdata2:10M;ibdata3:10M:autoextend"
Три файла (ibdata1, ibdata2 и ibdata3) формируют одно логическое системное табличное пространство. Чтобы выполнить innochecksum на многих файлах, которые формируют одно логическое системное табличное пространство, innochecksum требует опцию -, чтобы считать файлы табличного пространства из стандартного ввода, который эквивалентен связыванию многократных файлов, чтобы создать один единый файл. Для примера, обеспеченного выше, использовалась бы следующая команда:
  shell> cat ibdata* | innochecksum -

Запуск innochecksum на многократных файлах в том же самом табличном пространстве не поддержано на операционных системах Windows, так как в Windows оболочка cmd.exe не понимает глобальное расширение образца. На системах Windows innochecksum должен быть выполнен отдельно для каждого системного файла табличного пространства. Например:

cmd> innochecksum.exe ibdata1
cmd> innochecksum.exe ibdata2
cmd> innochecksum.exe ibdata3

5.6.3. myisam_ftdump отображение информации полнотекстового индекса

myisam_ftdump выводит на экран информацию об индексах FULLTEXT таблиц MyISAM. Это читает индексный файл MyISAM непосредственно, таким образом, это должно быть выполнено на хосте сервера, где таблица расположена. Перед использованием myisam_ftdump сначала выполните FLUSH TABLES, если сервер работает.

myisam_ftdump просматривает и выводит все индексные записи, что не особенно быстро. С другой стороны, распределение слов нечасто изменяется, таким образом, оно не должно часто выполняться.

Вызов myisam_ftdump :

shell> myisam_ftdump [options] tbl_name
                        index_num
tbl_name должен быть названием таблицы MyISAM. Вы можете также определить таблицу, называя ее индексный файл (файл с расширением .MYI). Если Вы не вызываете myisam_ftdump в каталоге, где табличные файлы расположены, имени таблицы или индексного файла должен предшествовать путь к каталогу базы данных таблицы. Индексы начинаются с 0.

Пример: Предположите, что база данных test содержит таблицу mytexttable, у которой есть следующее определение:

CREATE TABLE mytexttable (id INT NOT NULL, txt TEXT NOT NULL,
                          PRIMARY KEY (id), FULLTEXT (txt)) ENGINE=MyISAM;
Индекс на id это индекс 0, а индекс FULLTEXT на txt это индекс 1. Если Ваш рабочий каталог это каталог базы данных test, вызов myisam_ftdump :
shell> myisam_ftdump mytexttable 1
Если путь к каталогу базы данных test это /usr/local/mysql/data/test, Вы можете также определить параметр имени таблицы, используя этот путь. Это полезно, если Вы не вызываете myisam_ftdump в каталоге базы данных:
shell> myisam_ftdump /usr/local/mysql/data/test/mytexttable 1
Вы можете использовать myisam_ftdump, чтобы произвести список индекных записей в порядке частоты возникновения:
shell> myisam_ftdump -c mytexttable 1 | sort -r
myisam_ftdump понимает следующие опции:

  • --help, -h -?

    Отобразить сообщение справки.

  • --count, -c

    Вычислите статистику на слово (количество и глобальные веса).

  • --dump, -d

    Выведите индексирование, включая смещения данных и веса слова.

  • --length, -l

    Сообщите о распределении длины.

  • --stats, -s

    Глобальный отчет индексной статистики. Это работа по умолчанию, если никакая другая работа не определена.

  • --verbose , -v

    Многословный режим. Напечатать подробный вывод о том, что делает программа.

5.6.4. myisamchk утилита табличного обслуживания MyISAM

myisamchk получает информацию о Ваших таблицах, базах данных, проверяет, ремонтирует или оптимизирует их. myisamchk работает с таблицами MyISAM, которые имеют файлы .MYD и .MYI, чтобы хранить данные и индексы.

Вы можете также использовать CHECK TABLE и REPAIR TABLE для проверки и ремонта таблиц MyISAM, см. разделы 14.7.2.2 и 14.7.2.5.

Использование myisamchk с разделенными таблицами не поддержано.

Лучше делать резервное копирование таблицы прежде, чем выполнить работу ремонта, при некоторых обстоятельствах работа могла бы вызвать потерю данных. Возможные причины включают, но не ограничены ошибками файловой системы.

Вызов myisamchk :

shell> myisamchk [options] tbl_name ...
options определяют то, что Вы хотите от myisamchk. Они описаны в следующих разделах. Вы можете также получить список опций, вызывая myisamchk --help .

Без опций myisamchk просто проверяет Вашу таблицу как работа по умолчанию. Чтобы получить больше информации или сказать myisamchk принимать меры по ликвидации последствий, определите опции как описано в следующем обсуждении.

tbl_name это таблица базы данных, которую Вы хотите проверить или восстановить. Если Вы выполняете myisamchk где-то кроме каталога базы данных, Вы должны определить путь к каталогу базы данных, потому что myisamchk понятия не имеет, где база данных расположена. Фактически myisamchk не заботится, расположены ли файлы, с которыми Вы продолжаете работать, в каталоге базы данных. Вы можете скопировать файлы, которые соответствуют таблице базы данных, в некоторое другое место и выполнять операции восстановления на них там.

Вы можете назвать несколько таблиц в командной строке myisamchk. Вы можете также определить таблицу, называя ее индексный файл (файл с расширением .MYI). Это позволяет Вам определить все таблицы в каталоге при использовании образца *.MYI. Например, если Вы находитесь в каталоге базы данных, Вы можете проверить все таблицы MyISAM в этом каталоге:

shell> myisamchk *.MYI
Если Вы не находитесь в каталоге базы данных, Вы можете проверить все таблицы там, определяя путь к каталогу:
shell> myisamchk /path/to/database_dir/*.MYI
Вы можете даже проверить все таблицы во всех базах данных, определяя подстановочный знак с путем к каталогу данных MySQL:
shell> myisamchk /path/to/datadir/*/*.MYI
Рекомендуемый способ быстро проверить все таблицы MyISAM:
shell> myisamchk --silent --fast /path/to/datadir/*/*.MYI
Если Вы хотите проверить все таблицы MyISAM и отремонтировать те, которые повреждены, Вы можете использовать следующую команду:
shell> myisamchk --silent --force --fast --update-state \
                    --key_buffer_size=64M --myisam_sort_buffer_size=64M \
                    --read_buffer_size=1M --write_buffer_size=1M \
                    /path/to/datadir/*/*.MYI
Эта команда предполагает, что у Вас свободно больше 64 МБ. Для получения дополнительной информации о распределении памяти с myisamchk см. раздел 5.6.4.6.

Для дополнительной информации об использовании myisamchk см. раздел 8.6.

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

Иначе, когда Вы выполняете myisamchk, это может вывести на экран следующее сообщение об ошибке:

warning: clients are using or haven't closed the table properly
Это означает, что Вы пытаетесь проверить таблицу, которая была обновлена другой программой (такой как mysqld), которая еще не закрыла файл, или это отвалилось, не закрывая файл должным образом, что может иногда приводить к повреждению одной или больше таблиц MyISAM.

Если mysqld работает, Вы должны вынудить его сбросить любые табличные модификации, которые все еще буферизованы в памяти при использовании FLUSH TABLES. Вы должны гарантировать, что никто не использует таблицы в то время, как Вы выполняете myisamchk .

Однако, самый легкий способ избежать этой проблемы состоит в том, чтобы использовать CHECK TABLE вместо myisamchk , чтобы проверить таблицы. См. раздел 14.7.2.2.

myisamchk поддерживает следующие опции, которые могут быть определены в командной строке или в группе [myisamchk] файла опции. Для информации о файлах опции, используемых программами MySQL, см. раздел 5.2.6.

Таблица 5.16. Опции myisamchk

ФорматОписание
--analyzeПроанализируйте распределение значений ключа
--backup Сделайте резервное копирование файла .MYD как file_name-time.BAK
--block-searchНайдите запись, которой принадлежит блок при данном смещении
--check Проверьте таблицу на ошибки
--check-only-changedПроверка только таблиц, которые изменились, начиная с последней проверки
--correct-checksumИсправьте информацию о контрольной сумме для таблицы
--data-file-lengthМаксимальная длина файла с данными (для пересоздания файла с данными, когда это полно)
--debug Вести журнал отладки
--defaults-extra-fileЧитать этот файл опции в дополнение к обычным файлам опции
--defaults-fileЧитать только этот файл опций
--defaults-group-suffixГрупповое значение суффикса опции
--descriptionНапечатайте описательную информацию о таблице
--extend-checkСделайте очень полную табличную проверку или ремонт, который пытается возвратить каждую возможную строку файла с данными
--fast Проверка только таблиц, которые не были закрыты должным образом
--force Сделайте ремонт автоматически, если myisamchk находит какие-либо ошибки в таблице
--forceПерезапишите старые временные файлы. Для использования с опцией -r или -o
--ft_max_word_len Максимальная длина слова для индексов FULLTEXT
--ft_min_word_len Минимальная длина слова для индексов FULLTEXT
--ft_stopword_file Используйте стоп-слова из этого файла вместо встроенного списка
--HELPПоказать сообщение справки
--helpПоказать сообщение справки
--informationНапечатайте статистику о таблице, которая проверена
--key_buffer_sizeРазмер буфера, используемого для индексных блоков для таблиц MyISAM
--keys-usedБитовое значение, которое указывает, который индекс обновить
--max-record-lengthПропустите строки, более крупные, чем данная длина, если myisamchk не может выделить память, чтобы их обработать
--medium-checkСделайте проверку, которая быстрее, чем --extend-check
--myisam_block_sizeРазмер блока, который будет использоваться для индексных страниц MyISAM
--myisam_sort_buffer_size Буфер, который выделен, сортируя индексы, при выполнении функции REPAIR или при создании индексов с CREATE INDEX или ALTER TABLE
--no-defaultsНе читать файлы опций
--parallel-recoverИспользует тот же самый метод, как -r и -n, но создает все ключи параллельно, используя различные потоки (бета)
--print-defaultsНапечатайте опции по умолчанию
--quick Для более быстрого ремонта, не изменяя файл с данными
--read_buffer_sizeКаждый поток, который делает последовательный просмотр, выделяет буфер этого размера для каждой таблицы, которую просматривает
--read-onlyНе отмечайте таблицу как "проверено"
--recoverСделайте ремонт, который может решить почти любую проблему, кроме уникальных ключей, которые не уникальны
--safe-recoverСделайте ремонт, используя старый метод восстановления, который считывает все строки в порядке и обновляет все индексные деревья, основанные на найденных строках
--set-auto-incrementУстановить нумерацию AUTO_INCREMENT для новых записей с этого значения
--set-collationОпределите сопоставление, чтобы использовать для того, чтобы сортировать индексы таблицы
--silent Тихий режим
--sort_buffer_sizeБуфер, который выделен, сортируя индекс при выполнении REPAIR или когда индексы создаются с CREATE INDEX или ALTER TABLE
--sort-indexСортируйте индексные блоки дерева в порядке high-low
--sort-recordsСортировать записи согласно индексу
--sort-recoverИспользовать сортировку, чтобы решить ключи, даже если временные файлы были бы очень большими
--stats_methodОпределяет, как код набора индексной статистики MyISAM должен обработать NULL
--tmpdirПуть к каталогу, который будет использоваться для того, чтобы хранить временные файлы
--unpackРаспакуйте таблицу, которая была упакована myisampack
--update-stateХраните информацию в .MYI, чтобы указать, когда таблица была проверена и повреждена ли таблица
--verboseПодробный режим
--versionПоказать информацию о версии
--write_buffer_sizeРазмер буфера записи

5.6.4.1. Основные опции myisamchk

Опции, описанные в этом разделе, могут использоваться для любого типа табличной работы, выполненной myisamchk. Разделы после этого описывают опции, которые принадлежат только определенным операциям, таким как табличная проверка или восстановление.

  • --help, -?

    Отобразить справочное сообщение. Опции сгруппированы типом работы.

  • --HELP, -H

    Отобразить справочное сообщение. Опции представлены в единственном списке.

  • --debug= debug_options, -# debug_options

    Писать журнал отладки. Типичная строка debug_options это d:t:o,file_name. Значение по умолчанию d:t:o,/tmp/myisamchk.trace.

  • --defaults-extra-file=file_name

    Читать этот файл опции после глобального файла опции, но (в Unix) перед пользовательским файлом опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

  • --defaults-file=file_name

    Используйте только данный файл опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

  • --defaults-group-suffix=str

    Читать не только обычные группы опции, но также и группы с обычными именами и суффиксом str. Например, myisamchk обычно читает группу [myisamchk]. Если есть опция --defaults-group-suffix=_other, myisamchk также читает группу [myisamchk_other].

  • --no-defaults

    Не читайте файлы опции. Если запуск программы терпит неудачу из-за чтения неизвестных опций от файла опции, --no-defaults может использоваться, чтобы препятствовать тому, чтобы они были считаны.

    Исключение то, что файл .mylogin.cnf, если он существует, считан во всех случаях. Это разрешает паролям быть определенными более безопасным способом чем в командной строке, даже когда задана опция --no-defaults . .mylogin.cnf создается mysql_config_editor , см. раздел 5.6.7.

  • --print-defaults

    Напечатайте название программы и все опции, которые это получает от файлов опции.

  • --silent, -s

    Тихий режим. Напишите вывод только, когда ошибки происходят. Вы можете использовать -s дважжды (-ss) для очень тихого режима.

  • --verbose, -v

    Подробный режим. Напечатайте больше информации о том, что делает программа. Это может использоваться с -d и -e. Допустимо использовать -v многократно (-vv, -vvv) для более подробного вывода.

  • --version, -V

    Отобразить информацию о версии.

  • --wait, -w

    Вместо того, чтобы закончить с ошибкой, если таблица заблокирована, ждите, пока таблицу не освободят. Если Вы выполняете mysqld с отключенной внешней блокировкой, таблица может быть заблокирована только другой копией myisamchk .

Вы можете также установить следующие переменные при использовании --var_name=value:

Переменная Значение по умолчанию
decode_bits9
ft_max_word_lenversion-dependent
ft_min_word_len4
ft_stopword_fileВстроенный список
key_buffer_size523264
myisam_block_size1024
myisam_sort_key_blocks16
read_buffer_size262136
sort_buffer_size2097144
sort_key_blocks16
stats_methodnulls_unequal
write_buffer_size262136

Возможные переменные и их значения по умолчанию могут быть изучены с myisamchk --help :

myisam_sort_buffer_size используется, когда ключи отремонтированы, сортируя ключи, что является нормальным случаем, когда Вы используете --recover . sort_buffer_size устаревший синоним для myisam_sort_buffer_size.

key_buffer_size используется, когда Вы проверяете таблицу с --extend-check или когда ключи отремонтированы, вставляя ключевые строки поштучно в таблицу (как делают нормальные вставки). Восстановление через ключевой буфер используется в следующих случаях:

  • Применена --safe-recover.

  • Временные файлы, которые должны были сортировать ключи, будут более, чем в два раза больше, чем создать ключевой файл непосредственно. Это часто имеет место, когда у Вас есть большие значения ключа для столбцов CHAR, VARCHAR или TEXT, потому что работа сортировки должна сохранить полные значения ключа. Если у Вас есть много временного пространства, и Вы можете вынудить myisamchk восстановить, сортируя, Вы можете использовать --sort-recover .

Восстановление через ключевой буфер берет намного меньше дискового пространства, чем использование сортировки, но также намного медленнее.

Если Вы хотите более быстрый ремонт, установите переменные key_buffer_size и myisam_sort_buffer_size приблизительно к 25% от Вашей доступной памяти. Вы можете установить обе переменные в большие значения, потому что только одна из них используется за раз.

myisam_block_size размер, используемый для индексных блоков.

stats_method влияет на то, как значения NULL обработаны для набора индексной статистики, когда задана опция --analyze. Это действует как системная переменная myisam_stats_method. См. разделы 6.1.5 и 9.3.7.

ft_min_word_len и ft_max_word_len указывают на минимальную и максимальную длину слова для индексов FULLTEXT в таблицах MyISAM. ft_stopword_file имя файла стоп-слов. Они должны быть установлены при следующих обстоятельствах.

Если Вы используете myisamchk, чтобы выполнить работу, которая изменяет индексы таблицы (например, ремонт или анализ), индексы FULLTEXT пересозданы, используя значения по умолчанию параметров для минимальной и максимальной длины слова и файла стоп-слов, если Вы не определяете иначе. Это может привести к провалу попытки запросов.

Проблема происходит, потому что эти параметры известны только серверу. Они не сохранены в индексных файлах MyISAM. Чтобы избежать проблемы, если Вы изменили минимальную или максимальную длину слова или файл стоп-слов в сервере, определите те же самые ft_min_word_len, ft_max_word_len и ft_stopword_file в myisamchk, которые Вы используете для mysqld. Например, если Вы установили минимальную длину слова в 3, Вы можете восстановить таблицу с myisamchk:

shell> myisamchk --recover --ft_min_word_len=3 tbl_name.MYI
Чтобы гарантировать, что myisamchk и сервер используют те же самые значения для полнотекстовых параметров, Вы можете разместить каждый в обоих разделах [mysqld] и [myisamchk] файла опции:
[mysqld]
ft_min_word_len=3

[myisamchk]
ft_min_word_len=3
Альтернатива использованию myisamchk это применение REPAIR TABLE, ANALYZE TABLE, OPTIMIZE TABLE или ALTER TABLE. Эти запросы выполнены сервером, который знает надлежащие значения параметра.

5.6.4.2. Опции проверки myisamchk

myisamchk поддерживает следующие опции для табличных операций проверки:

  • --check, -c

    Проверьте таблицу на ошибки. Это работа по умолчанию, если Вы не определяете опции, которая выбирает тип работы явно.

  • --check-only-changed, -C

    Проверка только таблиц, которые изменились, начиная с последней проверки.

  • --extend-check, -e

    Проверьте таблицу очень тщательно. Это является довольно медленным, если таблица имеет много индексов. Эта опция должна только использоваться в крайних случаях. Обычно myisamchk или myisamchk --medium-check должны быть в состоянии определить, есть ли какие-либо ошибки в таблице.

    Если Вы используете --extend-check и имеете много памяти, установка переменной key_buffer_size к большому значению помогает работе ремонта, выполненной в итоге быстрее.

    См. также описание этой опции под опциями ремонта таблицы.

    См. раздел 5.6.4.5.

  • --fast, -F

    Проверка только таблиц, которые не были закрыты должным образом.

  • --force, -f

    Сделайте работу ремонта автоматически, если myisamchk находит какие-либо ошибки в таблице. Тип ремонта тот же самый, как определен в опциях --recover или -r.

  • --information , -i

    Напечатайте информационную статистику о таблице, которая проверена.

  • --medium-check , -m

    Сделайте проверку, которая быстрее --extend-check . Это находит только 99.99% всех ошибок, что должно быть достаточно хорошо в большинстве случаев.

  • --read-only , -T

    Не отмечайте таблицу как "проверено". Это полезно, если Вы используете myisamchk, чтобы проверить таблицу, которая используется некоторым другим приложением, которое не использует блокировку, например, mysqld, когда выполнено с отключенной внешней блокировкой.

  • --update-state, -U

    Храните информацию в файле .MYI, чтобы указать, когда таблица была проверена и отказала ли таблица. Это должно использоваться, чтобы извлечь полную пользу из --check-only-changed, но Вы не должны использовать эту опцию, если mysqld использует таблицу, и Вы выполняете это с отключенной внешней блокировкой.

5.6.4.3. Ремонтные опции myisamchk

myisamchk поддерживает следующие опции для операций ремонта таблицы (операции, выполненные, когда заданы опции вроде --recover или --safe-recover ):

  • --backup, -B

    Сделайте резервное копирование файоа .MYD как file_name-time.BAK.

  • --character-sets-dir=dir_name

    Каталог, где наборы символов установлены. См. раздел 11.5.

  • --correct-checksum

    Исправьте информацию о контрольной сумме для таблицы.

  • --data-file-length=len, -D len

    Максимальная длина файла с данными (обновляя файл с данными, когда он full).

  • --extend-check, -e

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

    См. также описание этой опции под табличными опциями проверки.

    Для описания выходного формата см. раздел 5.6.4.5.

  • --force, -f

    Перезапишите старые промежуточные файлы (файлы с именами вроде tbl_name.TMD) вместо прерывания.

  • --keys-used= val, -k val

    Для myisamchk значение опции это битовое значение, которое указывает, который индекс обновить. Каждый бит значения опции соответствует индексу таблицы, где первый индекс это 0. Значение опции 0 отключает обновления всех индексов, что может использоваться, чтобы получить более быстрые вставки. Дезактивированные индексы могут быть реактивированы при использовании опции myisamchk -r .

  • --no-symlinks , -l

    Не следовать за символическими ссылками. Обычно myisamchk восстанавливает таблицу, на которую указывает символьная ссылка. Эта опция не существует с MySQL 4.0, потому что версии с 4.0 не удаляют символьные ссылки во время операций ремонта.

  • --max-record-length=len

    Пропустите строки, более крупные, чем данная длина, если myisamchk не может выделить память, чтобы хранить их.

  • --parallel-recover, -p

    Используйте тот же самый метод как -r и -n, но создайте все ключи параллельно, используя различные потоки.

  • --quick, -q

    Достигните более быстрого ремонта, изменяя только индексный файл, но не файл с данными. Вы можете определить эту опцию дважды, чтобы вынудить myisamchk изменить оригинальный файл с данными в случае дубликата ключа.

  • --recover, -r

    Сделайте ремонт, который может решить почти любую проблему, кроме уникальных ключей, которые стали не уникальными (что является крайне маловероятной ошибкой с MyISAM). Если Вы хотите восстановить таблицу, эту опцию стоит попробовать сначала. Вы должны попробовать --safe-recover только если myisamchk сообщает, что таблица не может быть восстановлена, используя --recover. В маловероятном случае, что --recover терпит неудачу, файл с данными остается неповрежденным.

    Если у Вас есть большая память, Вы должны увеличить значение myisam_sort_buffer_size.

  • --safe-recover, -o

    Сделайте ремонт, используя старый метод восстановления, который читает все строки по порядку и обновляет все индексные деревья, основанные на найденных строках. Это явно медленнее, чем --recover, но может обработать несколько очень маловероятных случаев, недоступных --recover. Этот метод восстановления также использует намного меньше дискового пространства, чем --recover. Обычно Вы должны восстановить сначала с использованием --recover и затем с --safe-recover только если --recover точно терпит неудачу.

    Если у Вас есть большая память, Вы должны увеличить значение key_buffer_size.

  • --set-collation=name

    Определите сопоставление, чтобы использовать для того, чтобы сортировать индексы таблицы. Имя набора символов подразумевается первой частью имени сопоставления.

  • --sort-recover, -n

    Вынудите myisamchk использовать сортировку, чтобы решить ключи, даже если временные файлы были бы очень большими.

  • --tmpdir= dir_name, -t dir_name

    Путь к каталогу, который будет использоваться для того, чтобы хранить временные файлы. Если это не установлено, myisamchk использует значение переменной окружения TMPDIR. --tmpdir может быть установлен в список путей к каталогам, которые используются последовательно круговым способом для того, чтобы создать временные файлы. Символ разделителя между именами каталогов: двоеточие (:) в Unix и точка с запятой (;) в Windows.

  • --unpack, -u

    Распакуйте таблицу, которая была упакована myisampack .

5.6.4.4. Другие опции myisamchk

myisamchk поддерживает следующие опции для действий кроме табличных проверок и ремонта:

  • --analyze, -a

    Проанализируйте распределение значений ключа. Это улучшает работу соединения, позволяя оптимизатору соединений лучше выбрать порядок, в котором можно присоединиться к таблицам и который индекс использовать. Чтобы получить информацию о ключевом распределении, используйте myisamchk --description --verbose tbl_name или SHOW INDEX FROM tbl_name.

  • --block-search=offset, -b offset

    Найдите запись, которой принадлежит блок при данном смещении.

  • --description , -d

    Напечатайте некоторую описательную информацию о таблице. Определение --verbose несколько раз производит дополнительную информацию. См. раздел 5.6.4.5.

  • --set-auto-increment[=value], -A[value]

    Установить нумерацию AUTO_INCREMENT для новых записей в данное значение (или выше, если есть существующие записи с AUTO_INCREMENT больше этого. Если value не указано, AUTO_INCREMENT для новых записей в настоящее время начинаются с самого большого значения в таблице плюс один.

  • --sort-index , -S

    Сортируйте индексные блоки дерева в порядке high-low. Это оптимизирует поиск и делает сканирование таблицы, которое использует индекс, быстрее.

  • --sort-records=N, -R N

    Сортировать записи согласно индексу. Это делает Ваши данные намного больше ограниченными и может убыстрить основанные на диапазоне SELECT и ORDER BY, которые используют этот индекс. В первый раз, когда Вы используете эту опцию, чтобы сортировать таблицу, это может быть очень медленно. Чтобы определить индексы таблицы, надо использовать SHOW INDEX, который выводит на экран индексы таблицы в том же самом порядке, в каком myisamchk их потом увидит. Индексы пронумерованы, начиная с 1.

    Если ключи не упакованы (PACK_KEYS=0), у них есть та же самая длина, как когда myisamchk сортирует и перемещает записи, только перезаписываются рекордные смещения в индексировании. Если ключи упакованы (PACK_KEYS=1), myisamchk должен распаковать ключевые блоки сначала, затем обновить индексы и упаковать ключевые блоки снова. В этом случае восстановление индексов быстрее, чем обновление смещений для каждого индекса.

5.6.4.5. Получение информации о таблице с myisamchk

Получить описание таблицы MyISAM или статистику по ней можно, используя команды, показанные здесь. Вывод от этих команд объяснен позже в этом разделе.

  • myisamchk -d tbl_name

    Выполните myisamchk в режиме описания, чтобы произвести описание Вашей таблицы. Если Вы запускаете сервер MySQL с отключенной внешней блокировкой, myisamchk может сообщить об ошибке для таблицы, которая обновлена в то время, как это работает. Однако, потому что myisamchk не изменяет таблицу в режиме описания, нет никакого риска разрушения данных.

  • myisamchk -dv tbl_name

    Добавление -v выполняет myisamchk в подробном режиме так, чтобы это произвело больше информации о таблице. Добавление -v второй раз производит больше информации.

  • myisamchk -eis tbl_name

    Показать только наиболее важную информацию таблицы. Эта работа является медленной, потому что она должна считать всю таблицу.

  • myisamchk -eiv tbl_name

    Аналог -eis, но говорит Вам, что делает.

tbl_name может быть любым названием таблицы MyISAM или названием ее индексного файла, как описано в разделе 5.6.4. Несколько параметров tbl_name могут быть даны.

Предположите, что таблица названа person и имеет следующую структуру. MAX_ROWS включена так, чтобы в примере вывода myisamchk , показанному позже, некоторые значения были меньшими и соответствовали выходному формату.

CREATE TABLE person (id INT NOT NULL AUTO_INCREMENT,
                     last_name VARCHAR(20) NOT NULL,
                     first_name VARCHAR(20) NOT NULL,
                     birthDATE, deathDATE, PRIMARY KEY (id),
                     INDEX (last_name, first_name), INDEX (birth))
                     MAX_ROWS = 1000000;
Предположите также, что у таблицы есть эти размеры индексного файла и файла с данными:
-rw-rw----  1 mysql  mysql  9347072 Aug 19 11:47 person.MYD
-rw-rw----  1 mysql  mysql  6066176 Aug 19 11:47 person.MYI
Пример вывода myisamchk -dvv :
MyISAM file: person
Record format: Packed
Character set: latin1_swedish_ci (8)
File-version:1
Creation time: 2009-08-19 16:47:41
Recover time:2009-08-19 16:47:56
Status:  checked,analyzed,optimized keys
Auto increment key:           1  Last value:              306688
Data records:            306688  Deleted blocks:               0
Datafile parts:          306688  Deleted data:                 0
Datafile pointer (bytes):     4  Keyfile pointer (bytes):      3
Datafile length:        9347072  Keyfile length:         6066176
Max datafile length: 4294967294  Max keyfile length: 17179868159
Recordlength: 54

table description:
Key Start Len Index   Type            Rec/key Root  Blocksize
1   2     4   unique  long            199328        1024
2   6     20  multip. varchar prefix  5123563520    1024
2   7     20          varchar         512
3   4     83  multip. uint24 NULL     3066886065152 1024

Field Start Length Nullpos Nullbit  Type
1     1     1
2     2     4              no zeros
3     6     21                      varchar
4     27    21                      varchar
5     48    31     1       no zeros
6     51    31     2       no zeros
Объяснения типов информации myisamchk даны здесь. Keyfile обращается к индексному файлу. Record и row это синонимы, как field и column .

Начальная часть табличного описания содержит эти значения:

  • MyISAM file

    Имя MyISAM (индексного) файла.

  • Record format

    Формат хранения строк таблицы. В качестве примера использовано Fixed length. Другие возможные значения Compressed и Packed. Packed соответствует тому, что SHOW TABLE STATUS сообщает как Dynamic.

  • Chararacter set

    Табличный набор символов по умолчанию.

  • File-version

    Версия формата MyISAM, всегда 1.

  • Creation time

    Когда файл с данными создавался.

  • Recover time

    Когда индекс/файл с данными был в последний раз восстановлен.

  • Status

    Табличные флаги состояния. Возможные значения crashed, open, changed, analyzed, optimized keys и sorted index pages.

  • Auto increment key, Last value

    Ключевое число, связанное со столбцом AUTO_INCREMENT, и последний раз произведенное значение для этого столбца. Эти области не появляются, если нет такого столбца.

  • Data records

    Число строк в таблице.

  • Deleted blocks

    Сколько удаленных блоков все еще зарезервировало пространство. Вы можете оптимизировать свою таблицу, чтобы минимизировать это пространство. См. раздел 8.6.4.

  • Datafile parts

    Для формата динамической строки это указывает, сколько там блоков данных. Для оптимизированной таблицы без фрагментированных строк это то же самое, как Data records.

  • Deleted data

    Сколько там байт неосвобожденных удаленных данных. Вы можете оптимизировать свою таблицу, чтобы минимизировать это пространство. См. раздел 8.6.4.

  • Datafile pointer

    Размер указателя файла с данными в байтах. Это обычно 2, 3, 4 или 5 байтов. Большинство таблиц справляется с 2 байтами, но этим нельзя управлять от MySQL. Для фиксированных таблиц это адрес строки. Для динамических таблиц это адрес байта.

  • Keyfile pointer

    Размер указателя индексного файла в байтах. Это обычно 1, 2 или 3 байта. Большинство таблиц справляется с 2 байтами, но это вычислено автоматически MySQL. Это всегда адрес блока.

  • Max datafile length

    Насколько большим табличный файл с данными может стать в байтах.

  • Max keyfile length

    Насколько большим табличный файл индекса может стать в байтах.

  • Record length

    Сколько места каждая строка занимает в байтах.

Часть table description включает список всех ключей в таблице. Для каждого ключа myisamchk выводит на экран некоторую информацию о низком уровне:

  • Key

    Номер этого ключа. Это значение показывают только для первого столбца ключа. Если это значение отсутствует, строка соответствует второму или более позднему столбцу многостолбцового ключа. Для таблицы, показанной в примере, есть две строки table description для второго индекса. Это указывает, что это индекс из многих частей (с двумя частями).

  • Start

    Где в строке эта часть индексирования начинается.

  • Len

    Какой длины эта часть индексирования. Для упакованных чисел это должно всегда быть полной длиной столбца. Для строк это может быть короче, чем полная длина индексированного столбца, потому что Вы можете индексировать приставку строкового столбца. Полная длина ключа составного индекса это сумма значений Len для всех ключевых частей.

  • Index

    Может ли значение ключа существовать многократно в индексе. Возможные значения unique или multip. (может).

  • Type

    Какой тип данных эта часть индексирования имеет. Это тип данных MyISAM с возможными значениями packed, stripped или empty.

  • Root

    Адрес корня индексного блока.

  • Block size

    Размер каждого индексного блока. По умолчанию это 1024, но значение может быть изменено во время компиляции, когда MySQL создан из исходного текста.

  • Rec/key

    Это статистическое значение, используемое оптимизатором. Это говорит, сколько строк на значение индексируют. Уникальный индекс всегда имеет значение 1. Это может быть обновлено после того, как таблица загружена (или очень изменена) с myisamchk -a. Если это не обновлено вообще, значение по умолчанию 30.

Последняя часть вывода предоставляет информацию о каждом столбце:

  • Field

    Номер столбца.

  • Start

    Позиция байта столбца в пределах строк таблицы.

  • Length

    Длина столбца в байтах.

  • Nullpos, Nullbit

    Для столбцов, которые могут быть NULL, MyISAM хранит NULL как флаг в байте. В зависимости от того, сколько там таких столбцов, могут быть один или более байтов, используемых с этой целью. Nullpos и Nullbit, если не пустые, указывают, какие байт и бит содержат флаг, указывающий, является ли столбец NULL.

    Позиция и число байтов для хранения флагов NULL показывают в строке для области 1. Поэтому имеется 6 строк Field для таблицы person даже при том, что у нее есть только пять столбцов.

  • Type

    Тип данных. Значение может содержать любой из следующих описателей:

    • constant

      У всех строк есть то же самое значение.

    • no endspace

      Не хранить конечные пробелы.

    • no endspace, not_always

      Не хранить конечные пробелы и не делать их сжатия для всех значений.

    • no endspace, no empty

      Не хранить конечные пробелы. Не хранить пустые значения.

    • table-lookup

      Столбец был преобразован в ENUM.

    • zerofill(N)

      Старшие значащие N байт в значении всегда 0 и не сохранены.

    • no zeros

      Не храните ноли.

    • always zero

      Нулевые значения сохранены, используя один бит.

  • Huff tree

    Число дерева Хаффмана, связанное со столбцом.

  • Bits

    Сколько битов используется в дереве Хаффмана.

Huff tree и Bits выведены на экран, если таблица была сжата myisampack . См. раздел 5.6.6.

Пример вывода myisamchk -eiv:

Checking MyISAM file: person
Data records:  306688   Deleted blocks: 0
- check file-size
- check record delete-chain
No recordlinks
- check key delete-chain
block_size 1024:
- check index reference
- check data record references index: 1
Key:  1:  Keyblocks used:  98%  Packed:0%  Max levels:  3
- check data record references index: 2
Key:  2:  Keyblocks used:  99%  Packed:   97%  Max levels:  3
- check data record references index: 3
Key:  3:  Keyblocks used:  98%  Packed:  -14%  Max levels:  3
Total:Keyblocks used:  98%  Packed:   89%

- check records and index references
*** LOTS OF ROW NUMBERS DELETED ***

Records:306688  M.recordlength: 25  Packed:83%
Recordspace used: 97% Empty space:   2% Blocks/Record:   1.00
Record blocks:306688  Delete blocks: 0
Record data: 7934464  Deleted data:  0
Lost space: 256512  Linkdata:1156096

User time 43.08, System time 1.68
Maximum resident set size 0, Integral resident set size 0
Non-physical pagefaults 0, Physical pagefaults 0, Swaps 0
Blocks in 0 out 7, Messages in 0 out 0, Signals 0
Voluntary context switches 0, Involuntary context switches 0
Maximum memory usage: 1046926 bytes (1023k)
Вывод myisamchk -eiv включает следующую информацию:

  • Data records

    Число строк в таблице.

  • Deleted blocks

    Сколько удаленных блоков все еще зарезервировало пространство. Вы можете оптимизировать свою таблицу, чтобы минимизировать это пространство. См. раздел 8.6.4.

  • Key

    Число ключей.

  • Keyblocks used

    Какой процент ключевых блоков используется. Когда таблица была только что реорганизована с myisamchk , значения очень высоки (около теоретического максимума).

  • Packed

    MySQL пытается упаковать значения ключа, у которых есть общий суффикс. Это может использоваться только для индексов на CHAR и VARCHAR. Для длинных индексированных строк, у которых есть подобные крайние левые части, это может значительно уменьшить использованное пространство. В предыдущем примере второй ключ 40 байтов длиной, и сокращение пространства на 97% достигнуто.

  • Max levels

    Как глубоко B-дерево для этого ключа. Большие таблицы с длинными значениями ключа получают высокие значения.

  • Records

    Сколько строк находится в таблице.

  • M.record length

    Средняя длина строки. Это точная длина строки для таблиц со строками фиксированной длины, потому что у всех строк есть та же самая длина.

  • Packed

    MySQL отрезает пробелы от конца строк. Packed указывает на процент сбережений, достигнутых, делая это.

  • Record space used

    Какой процент файла с данными используется.

  • Empty space

    Какой процент файла с данными не использован.

  • Blocks/Record

    Среднее число блоков на строку (то есть, сколько ссылок в фрагментированной строке). Это всегда 1.0 для таблиц фиксированного формата. Это значение должно остаться так близко к 1.0, насколько возможно. Если это становится слишком большим, Вы можете реорганизовать таблицу. См. раздел 8.6.4.

  • Record blocks

    Сколько блоков используется. Для таблиц фиксированного формата это число строк.

  • Delete blocks

    Сколько блоков удалено.

  • Record data

    Сколько байтов в файле с данными используется.

  • Deleted data

    Сколько байтов в файле с данными удалено.

  • Lost space

    Если строка обновлена к более короткой, некоторое пространство потеряно. Это сумма всех таких потерь в байтах.

  • Linkdata

    Когда динамический формат таблицы используется, фрагменты строки соединены с указателями (от 4 до 7 байт каждый). Linkdata это сумма количества места, используемого всеми такими указателями.

5.6.4.6. Использование памяти myisamchk

Распределение памяти важно, когда Вы выполняете myisamchk. myisamchk не использует больше памяти, чем значения, в которые установлены его связанные с памятью переменные. Если Вы собираетесь использовать myisamchk на очень больших таблицах, Вы должны сначала решить, сколько памяти Вы хотите, чтобы он использовал. Значение по умолчанию должно использовать только приблизительно 3 МБ, чтобы выполнить ремонт. При использовании больших значений Вы можете заставить myisamchk работать быстрее. Например, если Вы имеете в наличии больше 512 МБ RAM, Вы могли бы использовать такие опции (в дополнение к любым другим опциям, которые Вы могли бы определить):

shell> myisamchk --myisam_sort_buffer_size=256M \
                    --key_buffer_size=512M \
                    --read_buffer_size=64M --write_buffer_size=64M ...
Использование --myisam_sort_buffer_size=16M достаточно вероятно для большинства случаев.

Знайте, что myisamchk использует временные файлы в TMPDIR. Если TMPDIR указывает на файловую систему в памяти, ошибки памяти могут легко произойти. Если это происходит, выполните myisamchk с --tmpdir= dir_name, чтобы определить каталог в файловой системе, у которой есть больше пространства.

При выполнении операций ремонта myisamchk также нуждается в большом количестве дискового пространства:

  • Дважды размер файла с данными (оригинальный файл и копия). Это пространство не необходимо, если Вы делаете ремонт с --quick, в этом случае только индексный файл обновлен. Это пространство должно быть доступным на той же самой файловой системе как оригинальный файл с данными, так как копия создается в том же самом каталоге, где оригинал.

  • Пространство для нового индексного файла, который заменяет старый. Старый индексный файл является усеченным в начале ремонта, таким образом, Вы обычно игнорируете это пространство. Это пространство должно быть доступным на той же самой файловой системе, где оригинальный файл с данными.
  • При применении --recover или --sort-recover (но не --safe-recover ), Вы нуждаетесь в пространстве на диске для того, чтобы сортировать. Это место выделено во временном каталоге (определенном TMPDIR или --tmpdir=dir_name). Следующая формула приводит к количеству требуемого пространства:
    (largest_key + row_pointer_length) * number_of_rows * 2
    
    Вы можете проверить длину ключей и row_pointer_length с myisamchk -dv tbl_name (см. раздел 5.6.4.5). row_pointer_length и number_of_rows это Datafile pointer и Data records в табличном описании. Определите largest_key, проверяя строки Key в табличном описании. Столбец Len указывает на число байтов для каждой ключевой части. Поскольку индекс многостолбцовый, ключевой размер это сумма значений Len для всех ключевых частей.

Если у Вас есть проблема с дисковым пространством во время ремонта, Вы можете попробовать --safe-recover вместо --recover.

5.6.5. myisamlog показ содержания файла системного журнала MyISAM

myisamlog обрабатывает содержание файла системного журнала MyISAM. Чтобы создать такой файл, запустите сервер с --log-isam=log_file.

Вызов myisamlog :

shell> myisamlog [options] [file_name
                    [tbl_name] ...]
Работа по умолчанию это обновление (-u). Если восстановление сделано (-r), все записи и возможно обновления и удаления сделаны, а ошибки только посчитаны. Имя файла системного журнала по умолчанию myisam.log, если не дана опция log_file. Если таблицы называют в командной строке, только те таблицы обновлены.

myisamlog поддерживает следующие опции:

  • -?, -I

    Показать сообщение справки.

  • -c N

    Выполните только N команд.

  • -f N

    Определите максимальное количество открытых файлов.

  • -i

    Выведите на экран дополнительную информацию перед выходом.

  • -o offset

    Определите начальное смещение.

  • -p N

    Удалить N компоненты из пути.

  • -r

    Выполните восстановление данных.

  • -R record_pos_file record_pos

    Определите файл записей и позицию записи.

  • -u

    Выполните работу обновления.

  • -v

    Подробный режим. Напечатайте вывод о том, что делает программа. Эта опция может быть дана многократно, чтобы произвести больше деталей.

  • -w write_file

    Определите записываемый файл.

  • -V

    Показать информацию о версии.

5.6.6. myisampack генератор сжатых таблиц MyISAM только для чтения

myisampack сжимает таблицы MyISAM. myisampack работает, сжимая каждый столбец в таблице отдельно. Обычно myisampack упаковывает файл с данными на 40%-70%.

Когда таблица используется позже, сервер читает в память информацию и должен распаковать столбцы. Это приводит к намного лучшей работе, получая доступ к отдельным строкам, потому что Вы должны только расжать точно одну строку.

MySQL использует mmap(), когда возможно, чтобы выполнить отображение памяти на сжатых таблицах. Если mmap() не работает, MySQL отступает к нормальным операциям чтения-записи файла.

Пожалуйста, отметьте следующее:

  • Если mysqld был вызван с отключенной внешней блокировкой, не хорошая идея вызвать myisampack , если таблица могла бы быть обновлена сервером во время упаковочного процесса. Самое безопасное это сжать таблицы с остановленным сервером.

  • После упаковки таблицы они годятся только для чтения. Это их основное назначение (например, доступ к упакованным таблицам на компакт-диске).
  • myisampack не поддерживает разделенные таблицы.

Вызов myisampack :

shell> myisampack [options] file_name ...
Каждый параметр имени файла должен быть названием индекса (.MYI). Если Вы не находитесь в каталоге базы данных, Вы должны определить путь к файлу. Допустимо опустить расширение .MYI.

После того, как Вы сжимаете таблицу myisampack, используйте myisamchk -rq для пересоздания индексов, см. раздел 5.6.4.

myisampack поддерживает следующие опции. Это также читает файлы опции и поддерживает опции для того, чтобы обработать их согласно разделу 5.2.7.

  • --help, -?

    Отобразить сообщение справки.

  • --backup, -b

    Сделайте резервное копирование файла с данными каждой таблицы, используя имя tbl_name.OLD.

  • --character-sets-dir=dir_name

    Каталог, где наборы символов установлены. См. раздел 11.5.

  • --debug[= debug_options], -# [debug_options]

    Писать журнал отладки. Типичная строка debug_options это d:t:o,file_name. Значение по умолчанию d:t:o.

  • --force, -f

    Произведите упакованную таблицу, даже если это становится больше, чем оригинал или если есть промежуточный файл от более раннего вызова myisampack . myisampack создает промежуточный файл tbl_name.TMD в каталоге базы данных в то время, как сжимает таблицу. Если Вы уничтожаете процесс myisampack , файл .TMD мог бы быть и не удален. Обычно myisampack выходит с ошибкой, если он находит, что есть tbl_name.TMD. С --force myisampack упаковывает таблицу так или иначе.

  • --join= big_tbl_name, -j big_tbl_name

    Соединить все таблицы, названные в командной строке в единственную упакованную таблицу big_tbl_name. У всех таблиц, которые должны быть объединены должна быть идентичная структура (те же самые имена столбцов и типы, те же самые индексы и т.д).

    big_tbl_name не должен существовать до работы соединения. Все исходные таблицы, названные в командной строке, которые будут слиты в big_tbl_name должны существовать. Исходные таблицы считаны, но не изменены.

  • --silent, -s

    Тихий режим. Напишите вывод только, когда ошибки происходят.

  • --test, -t

    Фактически не упаковывайте таблицу, только проверяйте упаковку.

  • --tmpdir= dir_name, -T dir_name

    Используйте названный каталог в качестве местоположения, где myisampack создает временные файлы.

  • --verbose, -v

    Подробный режим. Напишите информацию о продвижении работы и ее результате.

  • --version, -V

    Отобразить информацию о версии.

  • --wait, -w

    Ждите и повторите, если таблица используется. Если mysqld был вызван с отключенной внешней блокировкой, не хорошая идея вызвать myisampack , если таблица могла бы быть обновлена сервером во время упаковочного процесса.

Следующая последовательность команд иллюстрирует типичный табличный сеанс сжатия:

shell> ls -l station.*
-rw-rw-r--   1 montymy 994128 Apr 17 19:00 station.MYD
-rw-rw-r--   1 montymy  53248 Apr 17 19:00 station.MYI

shell> myisamchk -dvv station
MyISAM file: station
Isam-version:  2
Creation time: 1996-03-13 10:08:58
Recover time:  1997-02-02  3:06:43
Data records:  1192  Deleted blocks:  0
Datafile parts:1192  Deleted data:0
Datafile pointer (bytes): 2  Keyfile pointer (bytes): 2
Max datafile length:   54657023  Max keyfile length:   33554431
Recordlength:   834
Record format: Fixed length

table description:
Key Start Len Index   Type          Root  Blocksize Rec/key
1   2     4   unique  unsigned long 1024  1024      1
2   32    30  multip. text          10240 1024      1

Field Start Length Type
1     1     1
2     2     4
3     6     4
4     10    1
5     11    20
6     31    1
7     32    30
8     62    35
9     97    35
10    132   35
11    167   4
12    171   16
13    187   35
14    222   4
15    226   16
16    242   20
17    262   20
18    282   20
19    302   30
20    332   4
21    336   4
22    340   1
23    341   8
24    349   8
25    357   8
26    365   2
27    367   2
28    369   4
29    373   4
30    377   1
31    378   2
32    380   8
33    388   4
34    392   4
35    396   4
36    400   4
37    404   1
38    405   4
39    409   4
40    413   4
41    417   4
42    421   4
43    425   4
44    429   20
45    449   30
46    479   1
47    480   1
48    481   79
49    560   79
50    639   79
51    718   79
52    797   8
53    805   1
54    806   1
55    807   20
56    827   4
57    831   4

shell> myisampack station.MYI
Compressing station.MYI: (1192 records)
- Calculating statistics

normal: 20  empty-space:   16  empty-zero: 12  empty-fill:  11
pre-space:   0  end-space: 12  table-lookups:   5  zero: 7
Original trees:  57  After join: 17
- Compressing file
87.14%
Remember to run myisamchk -rq on compressed tables

shell> myisamchk -rq station
- check record delete-chain
- recovering (with sort) MyISAM-table 'station'
Data records: 1192
- Fixing index 1
- Fixing index 2

shell> mysqladmin -uroot flush-tables
shell> ls -l station.*
-rw-rw-r--   1 montymy 127874 Apr 17 19:00 station.MYD
-rw-rw-r--   1 montymy  55296 Apr 17 19:04 station.MYI

shell> myisamchk -dvv station
MyISAM file: station
Isam-version:  2
Creation time: 1996-03-13 10:08:58
Recover time:  1997-04-17 19:04:26
Data records:   1192  Deleted blocks:  0
Datafile parts: 1192  Deleted data:0
Datafile pointer (bytes):3  Keyfile pointer (bytes): 1
Max datafile length:16777215  Max keyfile length: 131071
Recordlength:834
Record format: Compressed

table description:
Key Start Len Index   Type          Root     Blocksize Rec/key
1   2     4   unique  unsigned long 10240    1024      1
2   32    30  multip. text          54272    1024      1

Field   Start Length Type                               Huff tree  Bits
1       1     1      constant                           1          0
2       2     4      zerofill(1)                        2          9
3       6     4      no zeros, zerofill(1)              2          9
4       10    1                                         3          9
5       11    20     table-lookup                       4          0
6       31    1                                         3          9
7       32    30     no endspace, not_always            5          9
8       62    35     no endspace, not_always, no empty  6          9
9       97    35     no empty                           7          9
10      132   35     no endspace, not_always, no empty  6          9
11      167   4      zerofill(1)                        2          9
12      171   16     no endspace, not_always, no empty  5          9
13      187   35     no endspace, not_always, no empty  6          9
14      222   4      zerofill(1)                        2          9
15      226   16     no endspace, not_always, no empty  5          9
16      242   20     no endspace, not_always            8          9
17      262   20     no endspace, no empty              8          9
18      282   20     no endspace, no empty              5          9
19      302   30     no endspace, no empty              6          9
20      332   4      always zero                        2          9
21      336   4      always zero                        2          9
22      340   1                                         3          9
23      341   8      table-lookup                       9          0
24      349   8      table-lookup                       10         0
25      357   8      always zero                        2          9
26      365   2                                         2          9
27      367   2      no zeros, zerofill(1)              2          9
28      369   4      no zeros, zerofill(1)              2          9
29      373   4      table-lookup                       11         0
30      377   1                                         3          9
31      378   2      no zeros, zerofill(1)              2          9
32      380   8      no zeros                           2          9
33      388   4      always zero                        2          9
34      392   4      table-lookup                       12         0
35      396   4      no zeros, zerofill(1)              13         9
36      400   4      no zeros, zerofill(1)              2          9
37      404   1                                         2          9
38      405   4      no zeros                           2          9
39      409   4      always zero                        2          9
40      413   4      no zeros                           2          9
41      417   4      always zero                        2          9
42      421   4      no zeros                           2          9
43      425   4      always zero                        2          9
44      429   20     no empty                           3          9
45      449   30     no empty                           3          9
46      479   1                                         14         4
47      480   1                                         14         4
48      481   79     no endspace, no empty              15         9
49      560   79     no empty                           2          9
50      639   79     no empty                           2          9
51      718   79     no endspace                        16         9
52      797   8      no empty                           2          9
53      805   1                                         17         1
54      806   1                                         3          9
55      807   20     no empty                           3          9
56      827   4      no zeros, zerofill(2)              2          9
57      831   4      no zeros, zerofill(1)              2          9
myisampack выводит на экран следующие виды информации:

  • normal

    Число столбцов, для которых не используется никакая дополнительная упаковка.

  • empty-space

    Число столбцов, содержащих значения, которые являются только пробелами. Они занимают один бит.

  • empty-zero

    Число столбцов, содержащих значения, которые являются только двоичными нулями. Они занимают один бит.

  • empty-fill

    Число столбцов целого числа, которые не занимают полный диапазон байта их типа. Они изменены на меньший тип. Например, BIGINT (восемь байтов) может быть сохранен как TINYINT (один байт), если все его значения находятся в диапазоне от -128 до 127.

  • pre-space

    Число десятичных столбцов, которые сохранены с лидирующими пробелами. В этом случае каждое значение содержит счетчик для числа лидирующих пробелов.

  • end-space

    Число столбцов, у которых есть много конечных пробелов. В этом случае каждое значение содержит счетчик для числа конечных пробелов.

  • table-lookup

    У столбца было только небольшое количество различных значений, которые были преобразованы в ENUM перед сжатием Хаффмана.

  • zero

    Число столбцов, для которых все значения ноль.

  • Original trees

    Начальное число деревьев Хаффмана.

  • After join

    Число отличных деревьев Хаффмана, оставленных после присоединения деревьев, чтобы оставить некоторое свободное место в заголовке.

После того, как таблица была сжата, строки Field, выведенные на экран myisamchk -dvv , включают дополнительную информацию о каждом столбце:

  • Type

    Тип данных. Значение может содержать любой из следующих описателей:

    • constant

      У всех строк есть то же самое значение.

    • no endspace

      Не храните конечные пробелы.

    • no endspace, not_always

      Не храните конечные пробелы и не делайте сжатие конечных пробелов для всех значений.

    • no endspace, no empty

      Не храните конечные пробелы и пустые значения.

    • table-lookup

      Столбец был преобразован в ENUM.

    • zerofill(N)

      Старшие N байт в значении всегда 0 и не сохранены.

    • no zeros

      Не храните ноли.

    • always zero

      Нулевые значения сохранены, используя один бит.

  • Huff tree

    Число деревьев Хаффмана, связанных со столбцом.

  • Bits

    Сколько битов используется в дереве Хаффмана.

После того, как Вы выполняете myisampack, используйте myisamchk, чтобы пересоздать индексы. В это время Вы можете также сортировать индексные блоки и создать статистику, необходимую для оптимизатора MySQL, чтобы работать более эффективно:

shell> myisamchk -rq --sort-index --analyze tbl_name.MYI
После того, как Вы установили упакованную таблицу в каталог базы данных MySQL, Вы должны выполнить mysqladmin flush-tables, чтобы mysqld начал использовать новую таблицу.

Чтобы распаковать упакованную таблицу, используйте опцию --unpack в myisamchk.

5.6.7. mysql_config_editor утилита конфигурации MySQL

mysql_config_editor позволяет Вам сохранить параметры аутентификации в зашифрованном файле пути входа в систему .mylogin.cnf . Местоположение файла %APPDATA%\MySQL в Windows и корневой каталог текущего пользователя на системах не-Windows. Файл может быть считан позже программами клиента MySQL, чтобы получить параметры аутентификации для того, чтобы соединиться с MySQL Server.

Незашифрованный формат .mylogin.cnf состоит из групп опции, подобных другим файлам опции. Каждая группа опций в .mylogin.cnf называется login path, который является группой, которая разрешает только определенные опции: host, user, password, port и socket. Думайте о группе опции пути входа в систему как о ряде опций, которые определяют, с каким сервером MySQL соединиться и которые указывают, как подтвердить подлинность. Вот незашифрованный пример:

[client]
user = mydefaultname
password = mydefaultpass
host = 127.0.0.1
[mypath]
user = myothername
password = myotherpass
host = localhost
Когда Вы вызываете программу клиента, чтобы соединиться с сервером, клиент использует .mylogin.cnf в соединении с другими файлами опции. Его приоритет выше, чем другие файлы опции, но меньше чем опции, определенные явно в командной строке клиента. Для информации о порядке, в котором используются файлы опции, см. раздел 5.2.6.

Чтобы определить дополнительное имя файла пути входа в систему, установите переменную окружения MYSQL_TEST_LOGIN_FILE. Эта переменная признана mysql_config_editor, стандартными клиентами MySQL (mysql, mysqladmin и т.д.) и утилитой тестирования mysql-test-run.pl .

Программы используют группы в файле пути входа в систему следующим образом:

  • mysql_config_editor воздействует на путь входа в систему client по умолчанию, если Вы не определяете --login-path= name, чтобы указать явно путь входа в систему.

  • Без --login-path программы клиента читают те же самые группы опции из файла пути входа в систему, который они читают из других файлов опции. Рассмотрите эту команду:
    shell> mysql
    
    По умолчанию mysql читает группы [client] и [mysql] от других файлов опции, таким образом, это читает их из файла пути входа в систему также.
  • С --login-path программы клиента дополнительно читают названный путь входа в систему из файла пути входа в систему. Групповое чтение опции от других файлов опции остается тем же самым. Рассмотрите эту команду:
    shell> mysql --login-path=mypath
    
    mysql читает группы [client] и [mysql] из других файлов опции и [client], [mysql] и [mypath] из файла пути входа в систему.
  • Программы клиента читают файл пути входа в систему даже когда дана опция --no-defaults . Это разрешает паролям быть определенными более безопасным способом чем в командной строке, даже если есть опция --no-defaults .

mysql_config_editor шифрует файл .mylogin.cnf, таким образом, это не может быть считано как открытый текст и его содержание, когда дешифровано программами клиента, используется только в памяти. Таким образом, пароли могут быть сохранены в файле в формате не открытого текста и использоваться позже, никогда не будучи выставленными в командной строке или в переменной окружения. mysql_config_editor обеспечивает команду print для того, чтобы вывести на экран содержание файла пути входа в систему, но даже в этом случае значения пароля замаскированы, чтобы никогда не появляться так, чтобы другие пользователи могли увидеть их.

Шифрование, используемое mysql_config_editor препятствует тому, чтобы пароли появились в .mylogin.cnf как открытый текст и обеспечивает меры безопасности, предотвращая небрежное хранение пароля. Например, если Вы выводите на экран незашифрованный файл опций клиента my.cnf, любые пароли, которые это содержит, видимы для любого. С .mylogin.cnf это не истина. Но используемое шифрование не будет удерживать решительного нападавшего, и Вы не должны считать это невскрываемым. Пользователь, который может получить привилегии системного администрирования на Вашей машине, чтобы получить доступ к Вашим файлам, может дешифровать .mylogin.cnf с некоторым усилием.

Файл пути входа в систему должен быть читаемым и перезаписываемым текущим пользователем и недоступным другим пользователям. Иначе mysql_config_editor игнорирует его, и программы клиента также не используют.

Вызов mysql_config_editor:

shell> mysql_config_editor [program_options]
                               command
                               [command_options]
Если файл пути входа в систему не существует, mysql_config_editor его создаст автоматически.

Параметры команды даны следующим образом:

  • program_options состоит из общих опций mysql_config_editor .

  • command указывает действие с .mylogin.cnf. Например, set пишет путь входа в систему в файл, remove удаляет путь входа в систему, а and print покажет содержание пути входа в систему.
  • command_options указывает на любые дополнительные опции, определенные для команды, такие как путь входа в систему и значения, чтобы использовать в пути входа в систему.

Позиция названия команды в пределах набора параметров программы является существенной. Например, эти командные строки имеют те же самые параметры, но приводят к различным результатам:

shell> mysql_config_editor --help set
shell> mysql_config_editor set --help
Первая командная строка выводит на экран общее сообщение справки mysql_config_editor и игнорирует команду set. Вторая командная строка выводит на экран сообщение справки, определенное именно для команды set.

Предположите, что Вы хотите установить путь входа в систему client, который определяет Ваши параметры соединения по умолчанию, и дополнительный путь входа в систему remote для того, чтобы соединить с сервером MySQL хост remote.example.com. Вы хотите войти в систему следующим образом:

  • По умолчанию в локальный сервер с именем пользователя и паролем localuser и localpass

  • К удаленному серверу с именем пользователя и паролем remoteuser и remotepass

Чтобы настраивать пути входа в систему в файле .mylogin.cnf, используйте следующие команды set. Введите каждую команду в одну строку, и введите соответствующие пароли, когда они запрошены:

shell> mysql_config_editor set --login-path=client
                --host=localhost --user=localuser --password
Enter password: enter password "localpass" here

shell> mysql_config_editor set --login-path=remote
                --host=remote.example.com --user=remoteuser --password
Enter password: enter password "remotepass" here
mysql_config_editor использует путь входа в систему по умолчанию client, таким образом, опция --login-path=client может быть опущена в первой команде, не изменяя ее эффект.

Чтобы увидеть, что mysql_config_editor пишет в файл .mylogin.cnf, используйте команду print:

shell> mysql_config_editor print --all
[client]
user = localuser
password = *****
host = localhost
[remote]
user = remoteuser
password = *****
host = remote.example.com
Команда print выводит на экран каждый путь входа в систему как ряд строк, начинающихся с группового заголовка, указывающего на путь входа в систему в квадратных скобках, сопровождаемых значениями опции для пути входа в систему. Значения пароля замаскированы и не появляются как открытый текст.

Если Вы не определяете --all, чтобы вывести на экран все пути входа в систему или --login-path=name, чтобы вывести на экран названный путь входа в систему, команда print выводит на экран путь входа в систему по умолчанию client, если он есть.

Как показано предыдущим примером, файл пути входа в систему может содержать многократные пути входа в систему. Таким образом, mysql_config_editor облегчает настройку многих multiple персонализаций для того, чтобы соединиться с различными серверами MySQL или для того, чтобы соединиться с данным сервером, используя различные учетные записи. Любая из них может быть выбрана по имени через опцию --login-path, когда Вы вызываете программу клиента. Например, чтобы соединиться с удаленным сервером, используйте эту команду:

shell> mysql --login-path=remote
mysql читает группы опции [client] и [mysql] из других файлов опции и группы [client], [mysql] и [remote] из файла пути входа в систему.

Чтобы соединиться с локальным сервером, используйте эту команду:

shell> mysql --login-path=client
Так как mysql читает пути входа в систему по умолчанию client и mysql, --login-path ничего не добавляет в этом случае. Команда эквивалентна:
shell> mysql
Опции, считанные из файла пути входа в систему, имеют приоритет перед опциями, считанным из других файлов опции. Опции, считанные из групп пути входа в систему, упомянутых позже в файле пути входа в систему, имеют приоритет перед опциями из групп, приведенных ранее в файле.

mysql_config_editor добавляет пути входа в систему к файлу пути входа в систему в том порядке, в каком Вы создаете их, таким образом, Вы должны создать более общие пути входа в систему первыми, а более определенные пути позже. Если Вы должны переместить путь входа в систему в пределах файла, Вы можете удалить и пересоздать обновить его, чтобы добавить ближе к концу файла.

Когда Вы используете команду set с mysql_config_editor , чтобы создать путь входа в систему, Вы не должны определить все возможные значения опций (имя хоста, имя пользователя, пароль, порт, сокет). Любые недостающие значения позже могут быть определены, когда Вы вызываете путь клиента, чтобы соединиться с сервером MySQL, в других файлах опции или в командной строке. Любые опции, определенные в командной строке, переопределяют определенные в файле пути входа в систему или других файлах опции. Например, если параметры пути входа в систему remote также применимы к хосту remote2.example.com, соединитесь с сервером на том хосте примерно так:

shell> mysql --login-path=remote --host=remote2.example.com

Основные опции mysql_config_editor

mysql_config_editor поддерживает следующие общие параметры, которые могут использоваться, предшествуя любой команде, названной в командной строке.

Таблица 5.17. Основные опции mysql_config_editor

ФорматОписание
--debug Писать журнал отладки
--helpОтобразить справочное сообщение
--verboseПодробный режим
--versionИнформация о версии
  • --help , -?

    Отобразить справочное сообщение.

    Чтобы видеть определенное для команды сообщение справки, вызовите mysql_config_editor вот так, здесь command это любая команда, кроме help:

    shell> mysql_config_editor command --help
    
  • --debug[= debug_options], -# debug_options

    Писать журнал отладки. Типичная строка debug_options: d:t:o,file_name. Значение по умолчанию d:t:o,/tmp/mysql_config_editor.trace.

  • --verbose, -v

    Подробный режим. Напечатайте больше информации о том, что делает программа. Эта опция может быть полезной в диагностировании проблем, если работа не будет иметь эффекта, который Вы ожидаете.

  • --version, -V

    Информация о версии.

Команды и определенные для команды опции mysql_config_editor

Этот раздел описывает разрешенные команды mysql_config_editor и, для каждой, определенные для команды опции после названия команды в командной строке.

Кроме того, mysql_config_editor поддерживает общие параметры, которые могут использоваться, предшествуя любой команде.

mysql_config_editor поддерживает эти команды:

  • help

    Выведите на экран общее сообщение справки. Эта команда не берет никаких опций.

    Чтобы видеть определенное для команды сообщение справки, вызовите mysql_config_editor так, здесь command любая команда, кроме help:

    shell> mysql_config_editor command --help
    
  • print [options]

    Напечатайте содержание файла пути входа в систему в незашифрованной форме, за исключением того, что пароли выведены на экран как *****.

    Путь входа в систему по умолчанию client, если никакой путь входа в систему не называют. Если обе опции --all и --login-path заданы, --all имеет приоритет.

    print разрешает эти опции после названия команды:

    • --help, -?

      Выведите на экран сообщение справки для print.

      Чтобы видеть общее сообщение справки, используйте mysql_config_editor --help.

    • --all

      Напечатайте содержание всех путей входа в систему в файле пути входа в систему.

    • --login-path=name, -G name

      Напечатайте содержание названного пути входа в систему.

  • remove [options]

    Удалите путь входа в систему из файла пути входа в систему или измените путь входа в систему, удаляя опции из него.

    Эта команда удаляет из пути входа в систему только такие опции, как определенные параметрами --host, --password, --port, --socket и --user. Если ни одна из тех опций не дана, remove удаляет весь путь входа в систему. Например, эта команда удаляет только user из пути входа в систему mypath, а не весь путь mypath:

    shell> mysql_config_editor remove --login-path=mypath --user
    
    Эта команда удаляет весь путь mypath:
    shell> mysql_config_editor remove --login-path=mypath
    
    Команда remove разрешает эти опции после названия команды:

    • --help, -?

      Выведите на экран сообщение справки для remove.

      Чтобы видеть общее сообщение справки, используйте mysql_config_editor --help.

    • --host, -h

      Удалите имя хоста из пути входа в систему.

    • --login-path=name, -G name

      Путь входа в систему, чтобы удалить или изменить. Путь входа в систему по умолчанию client, если эта опция не дана.

    • --password, -p

      Удалите пароль из пути входа в систему.

    • --port, -P

      Удалите номер порта TCP/IP из пути входа в систему.

    • --socket, -S

      Удалите имя файла сокета Unix из пути входа в систему.

    • --user, -u

      Удалите имя пользователя из пути входа в систему.

    • --warn, -w

      Предупредите и запросите подтверждение у пользователя, если команда пытается удалить путь входа в систему по умолчанию (client) и не указано --login-path=client. Эта опция включена по умолчанию, надо использовать --skip-warn, чтобы отключить это.

  • reset [options]

    Сбросьте содержание файла пути входа в систему.

    Команда reset разрешает эти опции после названия команды:

    • --help, -?

      Выведите на экран сообщение справки для reset.

      Чтобы видеть общее сообщение справки, используйте mysql_config_editor --help.

  • set [options]

    Допишите путь входа в систему к файлу пути входа в систему.

    Эта команда пишет в пути входа в систему только такие опции, как определены с параметрами --host, --password, --port, --socket и --user. Если ни одна из тех опций не дана, mysql_config_editor пишет путь входа в систему как пустую группу.

    Команда set разрешает эти опции после названия команды:

    • --help, -?

      Выведите на экран сообщение справки для set.

      Чтобы видеть общее сообщение справки, используйте mysql_config_editor --help.

    • --host=host_name, -h host_name

      Имя хоста, чтобы написать в пути входа в систему.

    • --login-path=name, -G name

      Путь входа в систему, чтобы создать. Путь входа в систему по умолчанию client, если эта опция не дана.

    • --password, -p

      Запрос пароля, чтобы написать в пути входа в систему. После того, как mysql_config_editor выводит на экран подсказку, введите пароль и нажмите Enter. Чтобы препятствовать тому, чтобы другие пользователи видели пароль mysql_config_editor не повторяет его.

      Чтобы определить пустой пароль, нажмите Enter при подсказке пароля. Получающийся путь входа в систему, написанный в файл пути входа в систему, будет включать такую строку:

      password =
      
    • --port=port_num, -P port_num

      Номер порта TCP/IP, чтобы написать в пути входа в систему.

    • --socket=file_name, -S file_name

      Имя файла сокета Unix, чтобы написать в пути входа в систему.

    • --user=user_name, -u user_name

      Имя пользователя, чтобы написать в пути входа в систему.

    • --warn, -w

      Предупредите и запросите у пользователя подтверждение, если команда пытается перезаписать существующий путь входа в систему. Эта опция включена по умолчанию, надо использовать для выключения --skip-warn.

5.6.8. mysqlbinlog утилита для обработки двоичных файлов системного журнала

Двоичный журнал сервера состоит из файлов, содержащих события, которые описывают модификации содержания базы данных. Сервер пишет эти файлы в двоичном формате. Чтобы вывести на экран их содержание в текстовом формате, используйте mysqlbinlog . Вы можете также использовать mysqlbinlog , чтобы вывести на экран содержание файлов системного журнала реле, написанных ведомым сервером в установке репликации, потому что у журналов реле есть тот же самый формат, как у двоичных журналов. Двоичный журнал и журнал реле обсуждены далее в разделах 6.4.4 и 19.2.4.

Вызов mysqlbinlog :

shell> mysqlbinlog [options] log_file ...
Например, чтобы вывести на экран содержание двоичного файла системного журнала binlog.000003 надо:
shell> mysqlbinlog binlog.0000003
Вывод включает события, содержавшиеся в binlog.000003. Для основанного на запросе журналирования информация о событии включает запрос SQL, идентификатор сервера, на котором это было выполнено, timestamp, когда запрос было выполнено, сколько времени потребовалось и т.д. Для основанного на строке журналирования событие указывает на изменение строки, а не запрос SQL. См. раздел 19.2.1.

Событиям предшествуют комментарии заголовка, которые обеспечивают дополнительную информацию. Например:

# at 141
#100309  9:28:36 server id 123  end_log_pos 245
  Query thread_id=3350  exec_time=11  error_code=0
В первой строке чисор после at указывает на смещение файла или стартовую позицию события в двоичном файле системного журнала.

Вторая строка начинается с даты и времени, указывая, когда запрос запускался на сервере, где событие произошло. Для репликации этот timestamp размножен к ведомым серверам. server id это server_id сервера, где событие произошло. end_log_pos указывает, где следующее событие начинается (то есть, это позиция конца текущего события + 1). thread_id указывает, какой поток запускал событие. exec_time потраченное на выполнение время на главном сервере. На ведомом устройстве это время конца выполнения на ведомом устройстве минус время начала выполнения на ведущем устройстве. Различие служит индикатором того, на сколько репликация отстает от ведущего устройства. error_code указывает на результат выполнения события. Ноль означает, что никакая ошибка не произошла.

Используя группы событий, смещения файла событий могут группироваться и комментарии событий могут группироваться. Не принимайте эти сгруппированные события за пустые смещения файла.

Вывод mysqlbinlog может быть повторно выполнен (например, при использовании этого как входа mysql), чтобы сделать заново запросы в журнале. Это полезно для операций восстановления после катастрофического отказа сервера. Для других примеров использования см. обсуждение позже в этом разделе и в разделе 8.5.

Обычно Вы используете mysqlbinlog, чтобы считать двоичные файлы системного журнала непосредственно и применить их к местному серверу MySQL. Также возможно считать двоичные журналы из удаленного сервера при использовании опции --read-from-remote-server. Чтобы считать удаленные двоичные журналы, опции параметра соединения могут быть даны, чтобы указать, как соединиться с сервером. Это опции --host, --password , --port, --protocol , --socket и --user , они проигнорированы кроме тех случаев, когда Вы также используете --read-from-remote-server.

Выполняя mysqlbinlog для большого двоичного журнала, надо быть осторожным, что у файловой системы есть достаточно пространства для получающихся файлов. Чтобы сконфигурировать каталог для применения mysqlbinlog для временных файлов, используйте переменную окружения TMPDIR .

mysqlbinlog поддерживает следующие опции, которые могут быть определены в командной строке или в группах [mysqlbinlog] и [client] файла опции. Для информации о файлах опции, используемых программами MySQL, см. раздел 5.2.6.

Таблица 5.18. Опции mysqlbinlog

ФорматОписание
--base64-output Напечатайте двоичные записи журнала, используя кодировку base-64
--bind-addressИспользуйте определенный сетевой интерфейс, чтобы соединиться с MySQL Server
--binlog-row-event-max-size Максимальный размер событий двоичного журнала
--character-sets-dirКаталог, где наборы символов установлены
--connection-server-idИспользуется для тестирования и отладки. См. текст для применимых значений по умолчанию и других подробных сведений
--databaseЗаписи списка только для этой базы данных
--debugПисать журнал ошибок
--debug-checkИнформация об отладке, когда программа выходит
--debug-infoИнформация об отладке, памяти и статистика центрального процессора, когда программа выходит
--default-authПлагин аутентификации, чтобы использовать
--defaults-extra-fileЧитать этот файл опции в дополнение к обычным файлам опции
--defaults-fileЧитать только этот файл опции
--defaults-group-suffixГрупповое значение суффикса опции
--disable-log-binОтключите двоичное журналирование
--exclude-gtidsНе показывайте группы в наборе GTID
--force-if-openСчитайте двоичные файлы системного журнала даже если они открыты или не закрыты должным образом
--force-readЕсли mysqlbinlog читает событие двоичного журнала, которое он не понял, он печатает предупреждение
--help Отобразить сообщение справки
--hexdumpВыведите на экран шестнадцатеричный дамп журнала в комментариях
--hostСоединитесь с сервером MySQL на данном хосте
--idempotentЗаставьте сервер использовать идемпотентный режим, обрабатывая двоичные обновления журнала только от этого сеанса
--include-gtidsПокажите только группы в обеспеченном наборе GTID
--local-loadПодготовьте местные временные файлы к LOAD DATA INFILE в указанном каталоге
--login-pathСчитайте опции пути входа в систему из .mylogin.cnf
--no-defaultsНе читать файлы опций
--offset Пропустите первые N записей в журнале
--passwordПароль, чтобы использовать, соединяясь с сервером
--plugin-dirКаталог, где плагины установлены
--port Номер порта TCP/IP, чтобы использовать для соединения
--print-defaultsНапечатайте опции по умолчанию
--protocolПротокол для соединения
--raw Напишите события в сыром (двоичном) формате в выходные файлы
--read-from-remote-masterСчитайте двоичный журнал с ведущего устройства MySQL вместо того, чтобы читать местный файл системного журнала
--read-from-remote-serverСчитайте двоичный журнал с сервера MySQL, а не местный файл системного журнала
--result-fileПрямой вывод к названному файлу
--rewrite-dbСоздайте правила подстановки для баз данных, воспроизводя от журналов, написанных в основанном на строке формате. Может использоваться многократно.
--secure-authНе посылайте пароли в сервер в старом формате (pre-4.1)
--server-idИзвлеките только события, создаваемые сервером, имеющим данный идентификатор сервера
--server-id-bits Скажите mysqlbinlog, как интерпретировать server ID в двоичном журнале, когда журнал был написан mysqld, у которого его server-id-bits меньше, чем максимум, поддержано только версией MySQL Cluster mysqlbinlog
--set-charsetДобавить SET NAMES charset_name в вывод
--shared-memory-base-nameНазвание совместно используемой памяти, чтобы использовать для соединений совместно используемой памяти
--short-formВыведите на экран только запросы, содержавшиеся в журнале
--skip-gtidsНе печатайте GTID, используйте это при записи файла дампа от двоичных журналов, содержащих GTID
--socket Для соединений с localhost файл сокета Unix
--ssl-ca Путь к файлу, который содержит список доверенных SSL CA
--ssl-capathПуть к каталогу, который содержит доверенные сертификаты SSL CA в формате PEM
--ssl-certПуть к файлу, который содержит сертификат X509 в формате PEM
--ssl-cipherСписок разрешенных шифров, чтобы использовать для шифрования соединения
--ssl-crlПуть к файлу, который содержит списки аннулирования сертификатов
--ssl-crlpathПуть к каталогу, который содержит файлы списка аннулирования сертификатов
--ssl-keyПуть к файлу, который содержит ключ X509 в формате PEM
--ssl-modeСтатус безопасности соединения с сервером
--start-datetimeСчитайте двоичный журнал с первого события с timestamp, равным или позже, чем параметр datetime
--start-positionСчитайте двоичный журнал с первого события с позицией, равной или больше, чем параметр
--stop-datetimeПрекратите читать двоичный журнал на первом событии с timestamp, равным или больше, чем параметр datetime
--stop-neverОстаньтесь соединенными с сервером после чтения последнего двоичного файла системного журнала
--stop-never-slave-server-idИдентификатор ведомого сервера
--stop-positionПрекратите читать двоичный журнал на первом событии с позицией, равной или больше, чем параметр
--tls-versionПротоколы для безопасных соединений
--to-last-logНе останавливайтесь в конце требуемого двоичного журнала с сервера MySQL, а продолжайте печать до конца последнего двоичного журнала
--user Имя пользователя MySQL
--verboseВосстановите события строки как запросы SQL
--verify-binlog-checksum Проверьте контрольные суммы в двоичном журнале
--versionОтобразить информацию о версии
  • --help, -?

    Отобразить сообщение справки.

  • --base64-output=value

    Эта опция определяет, что события должны быть выведены на экран закодированные как base-64 с использованием BINLOG. У опции есть эти допустимые значения (нечувствительны к регистру):

    • AUTO ("automatic") или UNSPEC ("unspecified") покажет запросы BINLOG автоматически, когда необходимо (то есть, для событий описания формата и событий строки). Если нет опции --base64-output, эффект тот же самый, как --base64-output=AUTO.

      Автоматический BINLOG единственное безопасное поведение, если Вы намереваетесь использовать вывод mysqlbinlog , чтобы повторно выполнить содержание двоичного файла системного журнала. Другие значения опции предназначены только для отладки или тестирования, потому что они могут произвести вывод, который не включает все события в выполнимой форме.

    • NEVER предписывает не отображать запросы BINLOG. mysqlbinlog выходит с ошибкой, если найдено событие строки, которое должно быть выведен на экран, используя BINLOG.

    • DECODE-ROWS определяет для mysqlbinlog , что Вы намереваетесь расшифровать и вывести на экран события строки как комментируемые запросы SQL, также определяя --verbose. Подобно NEVER, DECODE-ROWS подавляет показ BINLOG, но в отличие от NEVER, это не выходит с ошибкой, если найдено событие строки.

    Для примеров, которые показывают эффект --base64-output и --verbose на вывод строки событий, см. раздел 5.6.8.2.

  • --bind-address=ip_address

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

  • --binlog-row-event-max-size=N

    Формат командной строки --binlog-row-event-max-size=#
    Допустимые значения (64-bit platforms)Тип numeric
    Значение по умолчанию 4294967040
    Минимум 256
    Максимум 18446744073709547520

    Определите максимальный размер основанного на строке двоичного события журнала в байтах. Строки сгруппированы в события меньше, чем этот размер, если возможно. Значение должно быть кратным 256. Значение по умолчанию 4GB.

  • --character-sets-dir=dir_name

    Каталог, где наборы символов установлены. См. раздел 11.5.

  • --connection-server-id=server_id

    Эта опция используется, чтобы проверить сервер MySQL на поддержку флага BINLOG_DUMP_NON_BLOCK, который был неосторожно удален в MySQL 5.6.5 и восстановлен в MySQL 5.7.5 (Bug #18000079, Bug #71178). Это не требуется для нормального функционирования.

    Эффективное значение по умолчанию и минимальные значения для этой опции зависят от того, выполнен ли mysqlbinlog в блочном режиме. Когда mysqlbinlog выполнен в блочном режиме, значение по умолчанию (и минимум) = 1, иначе 0.

  • --database=db_name, -d db_name

    Эта опция заставляет mysqlbinlog выводить записи из двоичного журнала (только местный журнал), которые происходят в то время, как db_name выбрана как база данных по умолчанию USE.

    --database подобна --binlog-do-db для mysqld, но может использоваться, чтобы определить только одну базу данных. Если --database дана многократно, только последний экземпляр используется.

    Эффекты этой опции зависят от того, используется ли основанный на запросе или на строке формат журналирования, таким же образом, как --binlog-do-db зависит от формата журналирования.

    Основанное на запросе журналирование. --database работает следующим образом:

    • В то время, как db_name база данных по умолчанию, запросы выведены, изменяют ли они таблицы в db_name или в иной базе данных.

    • Если db_name выбрана как база данных по умолчанию, запросы не выведены, даже если они изменяют таблицы в db_name.
    • Есть исключение для CREATE DATABASE, ALTER DATABASE и DROP DATABASE. База данных, создаваемая, измененная или удаленная является базой данных по умолчанию, определяя, вывести ли запрос.

    Предположите, что двоичный журнал создавался, выполняя эти запросы, используя журналирование на основе запроса:

    INSERT INTO test.t1 (i) VALUES(100);
    INSERT INTO db2.t2 (j)  VALUES(200);
    USE test;
    INSERT INTO test.t1 (i) VALUES(101);
    INSERT INTO t1 (i)VALUES(102);
    INSERT INTO db2.t2 (j)  VALUES(201);
    USE db2;
    INSERT INTO test.t1 (i) VALUES(103);
    INSERT INTO db2.t2 (j)  VALUES(202);
    INSERT INTO t2 (j)VALUES(203);
    
    mysqlbinlog --database=test не выводит первые два INSERT, потому что нет никакой базы данных по умолчанию. Это выводит три INSERT после USE test, но не три INSERT после USE db2.

    mysqlbinlog --database=db2 не выводит первые два INSERT, потому что нет никакой базы данных по умолчанию. Это не выводит три INSERT после USE test, но выводит три INSERT после USE db2.

    Основанное на строке журналирование. mysqlbinlog выводит только записи, которые изменяют таблицы, принадлежащие db_name. База данных по умолчанию не имеет никакого значения. Предположите, что только что описанный двоичный журнал создавался, используя основанное на строке журналирование. mysqlbinlog --database=test выводит только те записи, которые изменяют t1 в базе данных test, независимо от USE и того, какова база данных по умолчанию.

    Если сервер работает с binlog_format = MIXED и Вы хотите, чтобы было возможно использовать mysqlbinlog с --database, Вы должны гарантировать, что таблицы, которые изменены, находятся в базе данных, выбранной USE . В частности, никакие обновления между базами данных не должны использоваться.

    Когда используется вместе с --rewrite-db, --rewrite-db применена сначала, тогда the --database применена, используя переписанное имя базы данных. Порядок, в котором предоставлены опции, не имеет никакого значения в этом отношении.

  • --debug[=debug_options], -# [debug_options]

    Писать журнал отладки. Типичная строка debug_options d:t:o,file_name. Значение по умолчанию d:t:o,/tmp/mysqlbinlog.trace.

  • --debug-check

    Напечатайте некоторую информацию об отладке, когда программа выходит.

  • --debug-info

    Информация об отладке, памяти и статистика использования центрального процессора, когда программа выходит.

  • --default-auth=plugin

    Подсказка о клиентском плагине аутентификации, чтобы использовать. См. See раздел 7.3.9.

  • --defaults-extra-file=file_name

    Считайте этот файл опции после глобального файла опции, но (в Unix) перед пользовательским файлом опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

  • --defaults-file=file_name

    Используйте только данный файл опции. Если файл не существует или иначе недоступен, ошибка происходит. file_name интерпретируется относительно текущего каталога, если дано как относительный путь, а не полный.

    Исключение: Даже с опцией --defaults-file программы клиента читают .mylogin.cnf.

  • --defaults-group-suffix=str

    Считайте не только обычные группы опции, но также и группы с обычными именами и суффиксом str. Например, mysqlbinlog обычно читает группы [client] и [mysqlbinlog]. Если дана опция --defaults-group-suffix=_other, mysqlbinlog также читает группы [client_other] и [mysqlbinlog_other].

  • --disable-log-bin, -D

    Отключите двоичное журналирование. Это полезно для ухода от бесконечной петли, если Вы используете --to-last-log и посылает вывод в тот же самый сервер MySQL. Эта опция также полезна, восстанавливая после катастрофического отказа, чтобы избежать дублирования запросов, которые Вы зарегистрировали.

    Эта опция требует, чтобы Вы имели привилегию SUPER. mysqlbinlog добавит в вывод SET sql_log_bin = 0, чтобы отключить двоичное журналирование остающегося вывода. SET неэффективен, если Вы не имеете привилегии SUPER.

  • --exclude-gtids=gtid_set

    Не выводите на экран ни одну из групп, перечисленных в gtid_set.

  • --force-if-open, -F

    Считайте двоичные файлы системного журнала, даже если они открыты или не были закрыты должным образом.

  • --force-read, -f

    Если mysqlbinlog читает событие двоичного журнала, которое не понимает, то с этой опцией, он печатает предупреждение, игнорирует событие и продолжает. Без этой опции mysqlbinlog останавливается, если читает такое событие.

  • --hexdump, -H

    Выведите на экран шестнадцатеричный дамп журнала в комментариях, как описано в разделе 5.6.8.1. Это может быть полезным для отладки репликации.

  • --host=host_name, -h host_name

    Получите двоичный журнал от сервера MySQL на данном хосте.

  • --idempotent

    Предписывает MySQL Server использовать идемпотентный режим, обрабатывая обновления, это вызывает подавление любых ошибок duplicate-key или key-not-found, с которыми сервер сталкивается в текущем сеансе, обрабатывая обновления. Эта опция может оказаться полезной всякий раз, когда желательно или необходимо переиграть один или более двоичных журналов MySQL Server, который, возможно, не содержит все данные, к которым обращаются журналы.

    Контекст эффекта для этой опции включает только текущий сеанс mysqlbinlog .

  • --include-gtids=gtid_set

    Выведите на экран только группы, перечисленные в gtid_set.

  • --local-load=dir_name, -l dir_name

    Подготовьте местные временные файлы в указанном каталоге к LOAD DATA INFILE.

    Эти временные файлы автоматически не удалены mysqlbinlog и никакой другой программой MySQL.

  • --login-path=name

    Считайте опции из названного пути входа в систему в .mylogin.cnf. login path является группой опции, содержащей опции, которые определяют, с каким сервером MySQL соединиться и как подтвердить подлинность. Чтобы создать или изменить файл пути входа в систему, используйте mysql_config_editor , см. раздел 5.6.7.

  • --no-defaults

    Не читайте файлы опции. Если запуск программы терпит неудачу из-за чтения неизвестных опций от файла опции, --no-defaults может использоваться, чтобы препятствовать тому, чтобы они были считаны.

    Исключение: файл .mylogin.cnf, если это существует, считан во всех случаях. Это разрешает паролям быть определенными более безопасным способом чем в командной строке, даже когда задана опция --no-defaults . .mylogin.cnf создается mysql_config_editor , см. раздел 5.6.7.

  • --offset=N, -o N

    Пропустите первые N записей в журнале.

  • --password[=password], -p[password]

    Пароль, чтобы использовать, соединяясь с сервером. Если Вы используете короткую форму опции (-p), у Вас не может быть пробелов между опцией и паролем. Если Вы опускаете password после --password или -p в командной строке, mysqlbinlog спросит пароль явно.

    Определение пароля в командной строке нужно считать опасным. См. раздел 7.1.2.1. Вы можете использовать файл опции, чтобы избежать давать пароль в командной строке.

  • --plugin-dir=dir_name

    Каталог, в котором можно искать плагины. Определите эту опцию, если --default-auth используется, чтобы определить плагин аутентификации, но mysqlbinlog его не нашел, см. раздел 7.3.9.

  • --port=port_num, -P port_num

    Номер порта TCP/IP, чтобы использовать для того, чтобы соединиться с удаленным сервером.

  • --print-defaults

    Напечатайте название программы и все опции, которые это получает от файлов опции.

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    Протокол соединения, чтобы использовать, чтобы соединиться с сервером. Полезно, когда другие параметры соединения обычно используют не тот протокол.

  • --raw

    По умолчанию mysqlbinlog читает двоичные файлы системного журнала и пишет события в текстовом формате. --raw говорит mysqlbinlog писать в их оригинальном двоичном формате. Использование требует, чтобы --read-from-remote-server также использовалась, потому что файлы требуют от сервера. mysqlbinlog пишет выходной файл для каждого файла, считанного из сервера. --raw может использоваться, чтобы сделать резервное копирование двоичного журнала сервера. С --stop-never резервное копирование живое, поскольку mysqlbinlog остается соединенным с сервером. По умолчанию выходные файлы написаны в текущем каталоге с теми же самыми именами как оригинальные файлы системного журнала. Выходные имена файла могут быть изменены, используя --result-file . См. раздел 5.6.8.3 .

  • --read-from-remote-master=type

    Считайте двоичные журналы из сервера MySQL с COM_BINLOG_DUMP или COM_BINLOG_DUMP_GTID, устанавливая опцию а BINLOG-DUMP-NON-GTIDS или BINLOG-DUMP-GTIDS, соответственно. Если --read-from-remote-master=BINLOG-DUMP-GTIDS объединена с --exclude-gtids , транзакции могут быть отфильтрованы на ведущем устройстве, избегая ненужного сетевого трафика.

  • --read-from-remote-server, -R

    Считайте двоичной журнал из сервера MySQL вместо того, чтобы читать местный файл системного журнала. Любые опции параметра соединения проигнорированы, если эта опция не дана также. Это опции are --host, --password , --port, --protocol , --socket и --user .

    Эта опция требует, чтобы удаленный сервер работал. Это работает только для двоичных файлов системного журнала на удаленном сервере, не файлов системного журнала реле.

    Эта опция походит на --read-from-remote-master=BINLOG-DUMP-NON-GTIDS.

  • --result-file=name, -r name

    Без --raw эта опция указывает на файл, в который mysqlbinlog пишет текстовый вывод. С --raw mysqlbinlog пишет один файл двоичного вывода для каждого файла системного журнала, переданного от сервера, по умолчанию в текущем каталоге, используя те же самые имена как у оригинального файла системного журнала. В этом случае --result-file значение опции обработано как приставка, которая изменяет выходные имена файла.

  • --rewrite-db='from_name->to_name '

    Читая из основанного на строке или основанного на запросе журнала, перепишите все возникновения from_name в to_name. Перезапись сделана на строках, для основанных на строке журналов, так же как в USE для основанных на запросе журналов.

    Запросы, в которых имена таблиц квалифицированы с именами базы данных, не переписаны, чтобы использовать новое имя, используя эту опцию.

    Правило подстановки, используемое как значение для этой опции, является строкой, имеющей форму 'from_name-> to_name', как показано ранее, и по этой причине должно быть экранировано кавычками.

    Чтобы использовать многократные правила подстановки, определите опцию многократно, как показано здесь:

    shell> mysqlbinlog --rewrite-db='dbcurrent->dbold' \
                          --rewrite-db='dbtest->dbcurrent' \
                          binlog.00001 > /tmp/statements.sql
    
    Когда используется вместе с --database , --rewrite-db применена сначала, тогда --database применена, используя переписанное имя базы данных. Порядок, в котором предоставлены опции, не имеет никакого значения в этом отношении.

    Это означает, что, например, если mysqlbinlog запущен с --rewrite-db='mydb->yourdb' --database=yourdb, все обновления любых таблиц в базах данных mydb и yourdb включены в вывод. С другой стороны, если это запущено с --rewrite-db='mydb->yourdb' --database=mydb, mysqlbinlog не выводит никакие запросы вообще: все обновления mydb сначала переписаны как обновления yourdb прежде, чем применить --database, в результате не остается никаких обновлений, которые соответствуют --database=mydb.

  • --secure-auth

    Не посылайте пароли в сервер в старом формате (pre-4.1).

    Эта опция устарела и всегда включается, попытка выключения ( --skip-secure-auth, --secure-auth=0) приводит к ошибке.

  • --server-id=id

    Выведите только те события, создаваемые сервером, которые имеют этот server ID.

  • --set-charset=charset_name

    Добавить SET NAMES charset_name в вывод, чтобы определить набор символов, который будет использоваться для того, чтобы обработать файлы системного журнала.

  • --shared-memory-base-name=name

    В Windows имя совместно используемой памяти для соединений, сделанных, используя совместно используемую память для локального сервера. Значение по умолчанию MYSQL. Имя совместно используемой памяти является чувствительным к регистру.

    Сервер должен быть запущен с --shared-memory .

  • --short-form, -s

    Выведите только запросы, содержавшиеся в журнале, без любой дополнительной информации или основанных на строке событий. Это для того, чтобы только проверить и не должно использоваться в производственных системах.

  • --skip-gtids[=(true|false)]

    Не выводите GTID. Это необходимо при записи в файл дампа от одного или более двоичных журналов, содержащих GTID, как показано в этом примере:

    shell> mysqlbinlog --skip-gtids binlog.000001 >  /tmp/dump.sql
    shell> mysqlbinlog --skip-gtids binlog.000002 >> /tmp/dump.sql
    shell> mysql -u root -p -e "source /tmp/dump.sql"
    
    Использование этой опции иначе обычно не рекомендуется в производстве.
  • --socket=path, -S path

    Для соединений с localhost файл сокета Unix, в Windows название именованного канала.

  • --ssl*

    Опции, которые начинаются с --ssl, определяют, соединиться ли с сервером, используя SSL, и указывают, где найти ключи SSL и сертификаты, см. раздел 7.4.5.

  • --start-datetime=datetime

    Начните читать двоичной журнал на первом событии, имеющем timestamp равное или позже, чем datetime. Значение datetime относительно зоны местного времени на машине, где Вы выполняете mysqlbinlog. Значение должно быть в формате, принятом для типов DATETIME или TIMESTAMP:

    shell> mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000003
    
    Эта опция полезна для восстановления момента времени. См. раздел 8.3.
  • --start-position=N, -j N

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

    Эта опция полезна для восстановления момента времени. См. раздел 8.3.

  • --stop-datetime=datetime

    Прекратите читать двоичной журнал на первом событии, имеющем timestamp равное или позже, чем datetime. Эта опция полезна для восстановления момента времени. См. описание --start-datetime.

    Эта опция полезна для восстановления момента времени. См. раздел 8.3.

  • --stop-never

    Эта опция используется с --read-from-remote-server. Это говорит mysqlbinlog оставаться соединенным с сервером. Иначе mysqlbinlog выходит, когда последний файл системного журнала был передан от сервера. --stop-never подразумевает --to-last-log, так что только первый файл системного журнала, который передается, должен быть названным в командной строке.

    --stop-never обычно используется с --raw, чтобы сделать живое двоичное резервное копирование журнала, но также может использоваться и без --raw, чтобы поддержать непрерывное текстовое отображение событий журнала.

  • --stop-never-slave-server-id=id

    С --stop-never mysqlbinlog сообщает о server ID = 65535, когда он соединяется с сервером. --stop-never-slave-server-id явно определяет идентификатор сервера. Это может использоваться, чтобы избежать конфликта с ID ведомого сервера или другого процесса mysqlbinlog , см. раздел 5.6.8.4.

  • --stop-position=N

    Прекратите читать двоичной журнал на первом событии, имеющем позицию, равную или больше, чем N. Эта опция относится к последнему файлу системного журнала, названному в командной строке.

    Эта опция полезна для восстановления момента времени. См. раздел 8.3.

  • --tls-version=protocol_list

    Протоколы, разрешенные клиентом для зашифрованных соединений. Значение: список разделенных запятой значений, содержащий одно или более имен протокола. Протоколы, которые могут быть названы по имени в этой опции, зависят от библиотеки SSL, использовавшейся, чтобы собрать MySQL. Для деталей см. раздел 7.4.3 .

  • --to-last-log, -t

    Не останавливайтесь в конце требуемого двоичного журнала от сервера MySQL, а продолжайте печатать до конца последнего двоичного журнала. Если Вы посылаете вывод в тот же самый сервер MySQL, это может привести к бесконечной петле. Эта опция требует --read-from-remote-server.

  • --user= user_name, -u user_name

    Имя пользователя MySQL, чтобы использовать, соединяясь с удаленным сервером.

  • --verbose, -v

    Восстановите события строки и выведите их на экран как комментирующийся запрос SQL. Если эта опция дана дважды ("-vv" или "--verbose --verbose"), вывод включает комментарии, чтобы указать на типы данных столбца и некоторые метаданные, а также события журнала запроса строки.

    Для примеров, которые показывают эффект --base64-output и --verbose на выводе событий строки, см. раздел 5.6.8.2.

  • --verify-binlog-checksum, -c

    Проверьте контрольные суммы в двоичных файлах системного журнала.

  • --version, -V

    Показать информацию о версии.

    Номер версии mysqlbinlog , показанный, используя эту опцию, 3.4.

Вы можете также установить следующую переменную при использовании --var_name=value:

  • open_files_limit

    Определите число открытых описателей файла.

Вы можете передать вывод mysqlbinlog по каналу в mysql, чтобы запустить события, содержавшиеся в двоичном журнале. Этот метод используется, чтобы восстановиться от катастрофического отказа, когда у Вас есть старая резервная копия (см. раздел 8.5 ):

shell> mysqlbinlog binlog.000001 | mysql -u root -p
Или:
shell> mysqlbinlog binlog.[0-9]* | mysql -u root -p
Если запросы, произведенные mysqlbinlog, могут содержать значения BLOB, они могут вызвать проблемы, когда mysql их обрабатывает. В этом случае вызовите mysql с опцией --binary-mode .

Вы можете также перенаправить вывод mysqlbinlog к текстовому файлу вместо этого, если Вы должны изменить запросы сначала (например, чтобы удалить запросы, которые Вы не хотите выполнять по некоторым причинам). После редактирования файла, выполните запросы при использовании этого как входного потока mysql :

shell> mysqlbinlog binlog.000001 > tmpfile
shell> ... edit tmpfile ...
shell> mysql -u root -p < tmpfile
Когда mysqlbinlog вызван с --start-position, это выводит на экран только события со смещением в двоичном журнале больше чем или равным данной позиции (данная позиция должна соответствовать началу одного события). Также есть опции, чтобы остановиться и запуститься, когда это видит событие с данной датой и временем. Это позволяет Вам выполнить восстановление момента времени, используя --stop-datetime (чтобы быть в состоянии сказать, например, продвинуть вперёд мои базы данных к тому состоянию, в каком они были сегодня в 10:30 a.m.).

Если у Вас есть больше, чем один двоичной журнал, чтобы выполнить на сервере MySQL, безопасный метод должен обработать их все с использованием единственного соединения с сервером. Вот пример, который демонстрирует то, что может быть опасно:

shell> mysqlbinlog binlog.000001 | mysql -u root -p # DANGER!!
shell> mysqlbinlog binlog.000002 | mysql -u root -p # DANGER!!
Обработка двоичных журналов этим способом использует много соединений и создает проблему, если первый файл системного журнала содержит CREATE TEMPORARY TABLE, а второй содержит запрос, которое использует временную таблицу. Когда первый процесс mysql заканчивается, сервер удаляет временную таблицу. Когда второй процесс mysql пытается использовать таблицу, сервер сообщает unknown table.

Чтобы избежать проблем, используйте один процесс mysql, чтобы выполнить содержание всех двоичных журналов, которые Вы хотите обработать. Вот один способ сделать так:

shell> mysqlbinlog binlog.000001 binlog.000002 | mysql -u root -p
Другой подход должен написать все журналы в один файл и затем обработать файл:
shell> mysqlbinlog binlog.000001 >  /tmp/statements.sql
shell> mysqlbinlog binlog.000002 >> /tmp/statements.sql
shell> mysql -u root -p -e "source /tmp/statements.sql"
mysqlbinlog может произвести вывод, который воспроизводит LOAD DATA INFILE без оригинального файла с данными. mysqlbinlog копирует данные к временному файлу и пишет LOAD DATA LOCAL INFILE, который относится к файлу. Местоположение каталога по умолчанию, где эти файлы написаны, является определенным для системы. Чтобы определить каталог явно, используйте --local-load .

Так как mysqlbinlog преобразовывает LOAD DATA INFILE в LOAD DATA LOCAL INFILE (то есть, добавляет LOCAL), клиент и сервер, который Вы используете, чтобы обработать запросы, должны быть сконфигурированы с включенной поддержкой LOCAL, см. раздел 7.1.6.

Временные файлы, создаваемые для LOAD DATA LOCAL, не удалены автоматически, потому что они необходимы, пока Вы фактически не выполняете те запросы. Вы должны удалить временные файлы самостоятельно после того, как Вы больше не нуждаетесь в журнале. Файлы могут быть найдены во временном каталоге и иметь имена вроде original_file_name-#-#.

5.6.8.1. Формат шестнадцатеричного дампа mysqlbinlog

--hexdump предписывает mysqlbinlog производить шестнадцатеричный дамп содержания двоичного журнала:

shell> mysqlbinlog --hexdump master-bin.000001
Шестнадцатеричный вывод состоит из строк, начинающихся с комментария #, таким образом, вывод мог бы быть похожим на это для предыдущей команды:
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
# at 4
#051024 17:24:13 server id 1  end_log_pos 98
# Position  Timestamp   Type   Master ID SizeMaster PosFlags
# 00000004 9d fc 5c 43   0f   01 00 00 00   5e 00 00 00   62 00 00 00   00 00
# 00000017 04 00 35 2e 30 2e 31 35  2d 64 65 62 75 67 2d 6c |..5.0.15.debug.l|
# 00000027 6f 67 00 00 00 00 00 00  00 00 00 00 00 00 00 00 |og..............|
# 00000037 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 |................|
# 00000047 00 00 00 00 9d fc 5c 43  13 38 0d 00 08 00 12 00 |.......C.8......|
# 00000057 04 04 04 04 12 00 00 4b  00 04 1a|.......K...|
# Start: binlog v 4, server v 5.0.15-debug-log created 051024 17:24:13
# at startup
ROLLBACK;
Вывод дампа в настоящее время содержит элементы в следующем списке. Этот формат подвержен изменениям. Для получения дополнительной информации о двоичном формате журнала см. MySQL Internals: The Binary Log.

  • Position: Позиция байта в пределах файла системного журнала.

  • Timestamp: timestamp события. В показанном примере '9d fc 5c 43' шестнадцатеричное представление '051024 17:24:13'.
  • Type: Код типа событий. В показанном примере '0f' означает FORMAT_DESCRIPTION_EVENT. Следующая таблица приводит возможные коды типа.

    ТипИмя Смысл
    00UNKNOWN_EVENT Это событие никогда не должно присутствовать в журнале
    01START_EVENT_V3 Это указывает на начало файла системного журнала, написанного MySQL 4 или ранее
    02QUERY_EVENT Наиболее распространенный тип событий. Они содержат запросы, выполненные на ведущем устройстве
    03STOP_EVENT Указывает, что ведущее устройство остановилось
    04ROTATE_EVENT Записан, когда ведущее устройство переключается на новый файл системного журнала
    05INTVAR_EVENT Применяется для значений AUTO_INCREMENT или функция LAST_INSERT_ID() используется в текущем запросе
    06LOAD_EVENT Применяется для LOAD DATA INFILE в MySQL 3.23
    07SLAVE_EVENT Зарезервировано на будущее
    08CREATE_FILE_EVENT Применяется для LOAD DATA INFILE. Это указывает на запуск выполнения такого запроса. Временный файл создается на ведомом устройстве. Используемый только в MySQL 4
    09APPEND_BLOCK_EVENT Содержит данные для использования в LOAD DATA INFILE. Данные хранятся во временном файле на ведомом устройстве
    0aEXEC_LOAD_EVENT Применяется для LOAD DATA INFILE. Содержание временного файла сохранено в таблице на ведомом устройстве. Используемый только в MySQL 4
    0bDELETE_FILE_EVENT Отмена LOAD DATA INFILE. Временный файл должен быть удален на ведомом устройстве
    0cNEW_LOAD_EVENT Применяется для LOAD DATA INFILE в MySQL 4 и ранее
    0dRAND_EVENT Используемый, чтобы послать информацию о случайных значениях, если в запросе применяется функция RAND()
    0eUSER_VAR_EVENT Используемый, чтобы копировать пользовательские переменные
    0fFORMAT_DESCRIPTION_EVENT Это указывает на запуск файла системного журнала, написанного MySQL 5 или позже
    10XID_EVENT Событие commit для транзакции XA
    11BEGIN_LOAD_QUERY_EVENT Применяется для LOAD DATA INFILE в MySQL 5 или позже
    12EXECUTE_LOAD_QUERY_EVENT Применяется для LOAD DATA INFILE в MySQL 5 или позже
    13TABLE_MAP_EVENT Информация о табличном определении. Используется в MySQL 5.1.5 и позже
    14PRE_GA_WRITE_ROWS_EVENT Данные о строке для единственной таблицы, которая должна быть составлена. Используемый в MySQL 5.1.5-5.1.17
    15PRE_GA_UPDATE_ROWS_EVENT Данные о строке для единственной таблицы, которая должна быть обновлена. Используемый в MySQL 5.1.5-5.1.17
    16PRE_GA_DELETE_ROWS_EVENT Данные о строке для единственной таблицы, которая должна быть удалена. Используемый в MySQL 5.1.5-5.1.17
    17WRITE_ROWS_EVENT Данные о строке для единственной таблицы, которая должна быть составлена. Используемый в MySQL 5.1.18 и позже
    18UPDATE_ROWS_EVENT Данные о строке для единственной таблицы, которая должна быть обновлена. Используемый в 5.1.18 и позже
    19DELETE_ROWS_EVENT Данные о строке для единственной таблицы, которая должна быть удалена. Используемый в MySQL 5.1.18 и позже
    1aINCIDENT_EVENT Что-то необычное произошло. Добавлен в MySQL 5.1.18
  • Master ID: ID сервера ведущего устройства, которое создало событие.

  • Size: Размер события в байтах.
  • Master Pos: Позиция следующего события в оригинальном основном файле системного журнала.
  • Flags: 16 флагов. Следующие флаги используются. Другие сохранены для будущего использования.

    ФлагИмя Смысл
    01 LOG_EVENT_BINLOG_IN_USE_F Файл системного журнала правильно закрылся. Используется только в FORMAT_DESCRIPTION_EVENT. Если этот флаг установлен (если флаги, например, '01 00') в FORMAT_DESCRIPTION_EVENT, файл системного журнала не был должным образом закрыт. Наиболее вероятно, это из-за основного катастрофического отказа (например, из-за перебоя в питании)
    02 Зарезервировано на будущее
    04 LOG_EVENT_THREAD_SPECIFIC_F Установлен, если событие зависит от соединения (например, '04 00'), например, если событие использует временные таблицы
    08LOG_EVENT_SUPPRESS_USE_F Установлен при некоторых обстоятельствах, когда событие не зависит от базы данных по умолчанию

5.6.8.2. Показ строк событий в mysqlbinlog

Следующие примеры иллюстрируют, как mysqlbinlog выводит на экран события строки, которые определяют модификации данных. Они соответствуют событиям с кодами типов WRITE_ROWS_EVENT, UPDATE_ROWS_EVENT и DELETE_ROWS_EVENT. Опции --base64-output=DECODE-ROWS и --verbose могут использоваться, чтобы затронуть вывод строки событий.

Предположите, что сервер использует основанное на строке двоичное журналирование и что Вы выполняете следующую последовательность запросов:

CREATE TABLE t (id INT NOT NULL, name VARCHAR(20) NOT NULL,
                date DATE NULL) ENGINE = InnoDB;
START TRANSACTION;
INSERT INTO t VALUES(1, 'apple', NULL);
UPDATE t SET name = 'pear', date = '2009-01-01' WHERE id = 1;
DELETE FROM t WHERE id = 1;
COMMIT;
По умолчанию mysqlbinlog выводит на экран события строки, закодированные как строки base-64 с использованием BINLOG. Опуская посторонние строки, вывод для событий строки, произведенных предыдущей последовательностью запросов, похож на это:
shell> mysqlbinlog log_file
...
# at 218
#080828 15:03:08 server id 1  end_log_pos 258   Write_rows: table id 17 flags: STMT_END_F

BINLOG '
fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ==
'/*!*/;
...
# at 302
#080828 15:03:08 server id 1  end_log_pos 356   Update_rows: table id 17 flags: STMT_END_F

BINLOG '
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
'/*!*/;
...
# at 400
#080828 15:03:08 server id 1  end_log_pos 442   Delete_rows: table id 17 flags: STMT_END_F

BINLOG '
fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP
'/*!*/;
Чтобы рассмотреть события строки как комментарии в форме pseudo-SQL, выполните mysqlbinlog с --verbose или -v. Вывод будет содержать строки, начинающиеся с ###:
shell> mysqlbinlog -v log_file
...
# at 218
#080828 15:03:08 server id 1  end_log_pos 258   Write_rows: table id 17 flags: STMT_END_F

BINLOG '
fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ==
'/*!*/;
### INSERT INTO test.t
### SET
###   @1=1
###   @2='apple'
###   @3=NULL
...
# at 302
#080828 15:03:08 server id 1  end_log_pos 356   Update_rows: table id 17 flags: STMT_END_F

BINLOG '
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
'/*!*/;
### UPDATE test.t
### WHERE
###   @1=1
###   @2='apple'
###   @3=NULL
### SET
###   @1=1
###   @2='pear'
###   @3='2009:01:01'
...
# at 400
#080828 15:03:08 server id 1  end_log_pos 442   Delete_rows: table id 17 flags: STMT_END_F

BINLOG '
fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP
'/*!*/;
### DELETE FROM test.t
### WHERE
###   @1=1
###   @2='pear'
###   @3='2009:01:01'
Определите --verbose или -v дважды, чтобы также вывести на экран типы данных и некоторые метаданные для каждого столбца. Вывод будет содержать дополнительный комментарий после каждого изменения столбца:
shell> mysqlbinlog -vv log_file
...
# at 218
#080828 15:03:08 server id 1  end_log_pos 258   Write_rows: table id 17 flags: STMT_END_F

BINLOG '
fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ==
'/*!*/;
### INSERT INTO test.t
### SET
###   @1=1 /* INT meta=0 nullable=0 is_null=0 */
###   @2='apple' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
###   @3=NULL /* VARSTRING(20) meta=0 nullable=1 is_null=1 */
...
# at 302
#080828 15:03:08 server id 1  end_log_pos 356   Update_rows: table id 17 flags: STMT_END_F

BINLOG '
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
'/*!*/;
### UPDATE test.t
### WHERE
###   @1=1 /* INT meta=0 nullable=0 is_null=0 */
###   @2='apple' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
###   @3=NULL /* VARSTRING(20) meta=0 nullable=1 is_null=1 */
### SET
###   @1=1 /* INT meta=0 nullable=0 is_null=0 */
###   @2='pear' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
###   @3='2009:01:01' /* DATE meta=0 nullable=1 is_null=0 */
...
# at 400
#080828 15:03:08 server id 1  end_log_pos 442   Delete_rows: table id 17 flags: STMT_END_F

BINLOG '
fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP
'/*!*/;
### DELETE FROM test.t
### WHERE
###   @1=1 /* INT meta=0 nullable=0 is_null=0 */
###   @2='pear' /* VARSTRING(20) meta=20 nullable=0 is_null=0 */
###   @3='2009:01:01' /* DATE meta=0 nullable=1 is_null=0 */
Вы можете сказать mysqlbinlog подавлять BINLOG для событий строки при использовании опции --base64-output=DECODE-ROWS. Это подобно --base64-output=NEVER, но не выходит с ошибкой, если событие строки найдено. Комбинация --base64-output=DECODE-ROWS и --verbose обеспечивает удобный способ рассмотреть события строки только как запросы SQL:
shell> mysqlbinlog -v --base64-output=DECODE-ROWS log_file
...
# at 218
#080828 15:03:08 server id 1  end_log_pos 258   Write_rows: table id 17 flags: STMT_END_F
### INSERT INTO test.t
### SET
###   @1=1
###   @2='apple'
###   @3=NULL
...
# at 302
#080828 15:03:08 server id 1  end_log_pos 356   Update_rows: table id 17 flags: STMT_END_F
### UPDATE test.t
### WHERE
###   @1=1
###   @2='apple'
###   @3=NULL
### SET
###   @1=1
###   @2='pear'
###   @3='2009:01:01'
...
# at 400
#080828 15:03:08 server id 1  end_log_pos 442   Delete_rows: table id 17 flags: STMT_END_F
### DELETE FROM test.t
### WHERE
###   @1=1
###   @2='pear'
###   @3='2009:01:01'

Вы не должны подавить BINLOG, если Вы намереваетесь повторно выполнить вывод mysqlbinlog .

Запросы SQL, произведенные --verbose для строки события намного больше читаемы, чем соответствующие BINLOG. Однако, они не соответствуют точно оригинальным запросам SQL, которые произвели события. Следующие ограничения применяются:

  • Оригинальные имена столбцов потеряны и заменены @N, где N задает номер столбца.

  • Информация о наборе символов недоступна в двоичном журнале, который затрагивает строковое отображение столбца:

    • Нет никакого различия между соответствующими двоичными и недвоичными строковыми типами (BINARY и CHAR, VARBINARY и VARCHAR, BLOB и TEXT). Вывод использует тип данных STRING для строк фиксированной длины и VARSTRING для строк переменной длины.

    • Для многобайтовых наборов символов максимальное количество байтов на символ не присутствует в двоичном журнале, таким образом, длина для строковых типов выведена на экран в байтах, а не в символах. Например, STRING(4) будет использоваться в качестве типа данных для значений любого из этих типов столбца:
      CHAR(4) CHARACTER SET latin1
      CHAR(2) CHARACTER SET ucs2
      
    • Из-за формата хранения для событий типа UPDATE_ROWS_EVENT, запросы UPDATE выведены на экран с WHERE, предшествующим SET.

Правильная интерпретация событий строки запрашивает информацию от описания формата в начале двоичного журнала. Поскольку mysqlbinlog не знает заранее, содержит ли остальная часть журнала события строки, по умолчанию это выводит на экран описание формата, используя BINLOG в начальной части вывода.

Если двоичной журнал не содержит какие-либо события, требующие BINLOG (то есть, никаких событий строки), --base64-output=NEVER может использоваться, чтобы препятствовать тому, чтобы этот заголовок был написан.

5.6.8.3. Применение mysqlbinlog для резервирования двоичных файлов системного журнала

По умолчанию mysqlbinlog читает двоичные файлы системного журнала и выводит на экран их содержание в текстовом формате. Это позволяет Вам изучить события в пределах файлов более легко и повторно выполнить их (например, при использовании вывода как входа для mysql). mysqlbinlog может считать файлы системного журнала непосредственно из местной файловой системы или с опцией --read-from-remote-server это может соединиться с сервером и запросить содержание журнала с того сервера. mysqlbinlog пишет текстовый вывод на стандартный вывод или в файл, названный как значение опции --result-file=file_name, если та опция дана.

mysqlbinlog может считать двоичные файлы системного журнала и написать новые файлы, содержащие тот же самый контент, то есть, в текстовом, а не в двоичном формате. Эта способность позволяет легко поддержать журнал регистрации в его оригинальном формате. mysqlbinlog может сделать статическое резервное копирование, поддерживая ряд файлов системного журнала и останавливаясь, когда конец последнего файла достигнут. Это может также сделать непрерывное (живое) резервное копирование, оставаясь соединенным с сервером, когда это достигает конца последнего файла системного журнала и продолжая копировать новые события, когда они произведены. В непрерывно-резервной работе mysqlbinlog выполняется до конца соединения (например, когда сервер завершается) или mysqlbinlog явно закончен. Когда соединение заканчивается, mysqlbinlog не ждет и повторяет соединение, в отличие от ведомого сервера репликации. Чтобы продолжить живое резервное копирование после того, как сервер был перезапущен, Вы должны также перезапустить mysqlbinlog .

Двоичное резервное копирование журнала требует, чтобы Вы вызвали mysqlbinlog минимум с двумя опциями:

  • --read-from-remote-server (или -R) говорит mysqlbinlog соединяться с сервером и просить свой двоичной журнал. Это подобно ведомому серверу репликации, соединяющемуся с главным сервером.

  • --raw предписывает mysqlbinlog писать сырой (двоичный), а не текстовый вывод.

Наряду с --read-from-remote-server, стоит определить другие опции: --host указывает, где сервер работает, и Вы, возможно, также должны определить такие опции соединения, как --user и --password.

Несколько других опций полезны в соединении с --raw:

  • --stop-never: Останьтесь соединенным с сервером после достижения конца последнего файла системного журнала и продолжите читать новые события.

  • --stop-never-slave-server-id=id: ID сервера, который mysqlbinlog сообщает серверу, когда применена --stop-never . Значение по умолчанию 65535. Это может использоваться, чтобы избежать конфликта с ID ведомого сервера или другого процесса mysqlbinlog , см. раздел 5.6.8.4.
  • --result-file: Приставка для выходных имен файла, как описано позже.

Чтобы поддержать двоичные файлы системного журнала сервера с mysqlbinlog , Вы должны определить имена файла, которые фактически существуют на сервере. Если Вы не знаете имена, соединяетесь с сервером и используете SHOW BINARY LOGS, чтобы видеть текущие имена. Предположите, что запрос производит этот вывод:

mysql> SHOW BINARY LOGS;
+---------------+-----------+
| Log_name      | File_size |
+---------------+-----------+
| binlog.000130 | 27459     |
| binlog.000131 | 13719     |
| binlog.000132 | 43268     |
+---------------+-----------+
С этой информацией Вы можете использовать mysqlbinlog , чтобы поддержать двоичной журнал к текущему каталогу следующим образом (введите каждую команду в одну строку):

  • Чтобы сделать статическое резервное копирование с binlog.000130 до binlog.000132, используйте любую из этих команд:

    mysqlbinlog --read-from-remote-server --host=host_name --raw
                binlog.000130 binlog.000131 binlog.000132
    mysqlbinlog --read-from-remote-server --host=host_name --raw
                --to-last-log binlog.000130
    
    Первая команда определяет каждое имя файла явно. Вторая называет только первый файл и использует --to-last-log , чтобы читать последний. Различие между этими командами: если сервер открывает binlog.000133 до того, как mysqlbinlog достигает конца binlog.000132, первая команда не будет читать это, но вторая команда будет.
  • Чтобы сделать живое резервное копирование, в котором mysqlbinlog запускается с binlog.000130, чтобы скопировать существующие файлы системного журнала, а затем остается соединенным с сервером и копирует новые события, когда сервер производит их:
    mysqlbinlog --read-from-remote-server --host=host_name
                --raw --stop-never binlog.000130
    
    С --stop-never не надо определять --to-last-log , чтобы читать последний файл системного журнала, потому что эта опция подразумевается.

Выходное обозначение файла

Без --raw mysqlbinlog производит текстовый вывод, и если есть опция --result-file , определяет название единственного файла, в который написан весь вывод. С --raw mysqlbinlog пишет один файл вывода для каждого файла системного журнала, переданного с сервера. По умолчанию mysqlbinlog пишет файлы в текущем каталоге с теми же самыми именами, как оригинальные файлы системного журнала. Чтобы изменить выходные имена файла, используйте --result-file . В соединении с --raw значение опции --result-file обработано как приставка, которая изменяет выходные имена файлов.

Предположите, что серверу в настоящее время указали файлы системного журнала binlog.000999 и выше. Если Вы используете mysqlbinlog --raw , чтобы зарезервировать файлы, --result-file производит выходные имена файла как показано в следующей таблице. Вы можете написать файлы в определенный каталог, используя --result-file с путем к каталогу. Если --result-file состоит только из имени каталога, значение должно закончиться символом разделителя пути. Выходные файлы перезаписаны, если они существуют.

Опция --result-fileВыходные имена файла
--result-file=x xbinlog.000999 и выше
--result-file=/tmp/ /tmp/binlog.000999 и выше
--result-file=/tmp/x /tmp/xbinlog.000999 и выше
Пример: mysqldump + mysqlbinlog для резервного копирования и восстановления

Следующий пример описывает простой скрипт, который показывает, как использовать mysqldump и mysqlbinlog вместе, чтобы поддержать данные сервера и двоичный журнал, и как использовать резервное копирование, чтобы восстановить сервер, если потеря данных происходит. Пример предполагает, что сервер работает на хосте host_name и его первый двоичной файл системного журнала называется binlog.000999. Введите каждую команду в одну строку.

Используйте mysqlbinlog , чтобы сделать непрерывное резервное копирование двоичного журнала:

mysqlbinlog --read-from-remote-server --host=host_name
            --raw --stop-never binlog.000999
Используйте mysqldump , чтобы создать файл дампа как снимок данных сервера. Используйте --all-databases, --events и --routines, чтобы зарезервировать все данные и --master-data=2 , чтобы включить текущие координаты двоичного журнала в файл дампа.
mysqldump --host=host_name --all-databases --events \
          --routines --master-data=2dump_file
Выполните mysqldump периодически, чтобы создать более новые снимки.

Если потеря данных происходит (например, если сервер отказывает), используйте новый файл дампа, чтобы восстановить данные:

mysql --host=host_name -u root -p < dump_file
Теперь используйте двоичное резервное копирование журнала, чтобы повторно запустить события, которые были написаны после координат в файле дампа. Предположите, что координаты в файле похожи на это:
-- CHANGE MASTER TO MASTER_LOG_FILE='binlog.001002', MASTER_LOG_POS=27284;
Если новый файл системного журнала называют binlog.001004, повторно запустите события журнала так:
mysqlbinlog --start-position=27284 binlog.001002 binlog.001003 binlog.001004
            | mysql --host=host_name -u root -p
Вы могли бы счесть, что легче скопировать резервные файлы (файл дампа и двоичные файлы системного журнала) на хост сервера, чтобы облегчить работу восстановления, или если MySQL не позволяет удаленный доступ root .

5.6.8.4. Определение mysqlbinlog Server ID

При вызове с опцией --read-from-remote-server mysqlbinlog соединяется с сервером MySQL, определяет идентификатор сервера, чтобы идентифицировать себя, и просит двоичные файлы системного журнала от сервера. Вы можете использовать mysqlbinlog, чтобы запросить файлы системного журнала от сервера несколькими способами:

  • Определите явно названный набор файлов: для каждого файла mysqlbinlog соединяется и выполняет команду Binlog dump. Сервер посылает файл и разъединяет связь. Есть одно соединение на файл.

  • Определите начинающий файл и опцию --to-last-log : mysqlbinlog соединяется и выполняет команду Binlog dump для всех файлов. Сервер посылает все файлы и разъединяет связь.
  • Определите начинающий файл и опцию --stop-never (что подразумевает --to-last-log ): mysqlbinlog соединяется и выполняет команду Binlog dump для всех файлов. Сервер посылает все файлы, но не разъединяет связь после посылки последнего.

Только с --read-from-remote-server mysqlbinlog соединяется с использованием ID = 0, который говорит серверу разъединять связь после посылки последнего требуемого файла системного журнала.

С --read-from-remote-server и --stop-never mysqlbinlog соединяется с использованием ID, отличного от нуля, таким образом, сервер не разъединяет связь после посылки последнего файла системного журнала. Идентификатор сервера 65535 по умолчанию, но это может быть изменено опцией --stop-never-slave-server-id.

Таким образом, для первых двух способов запросить файлы, сервер разъединяет связь, потому что mysqlbinlog указывает server ID = 0. Это не разъединяет связь, если --stop-never дана, потому что mysqlbinlog определяет идентификатор сервера, отличный от нуля.

5.6.9. mysqldumpslow обзор файлов медленного системного журнала

Медленный журнал запроса MySQL содержит информацию о запросах, которые занимают много времени (см. раздел 6.4.5). mysqldumpslow разбирает MySQL файлы медленного системного журнала запроса и печатает резюме их содержания.

Обычно mysqldumpslow группирует запросы, которые подобны за исключением особых значений числа, и представляют значения данных в виде строки. Это абстрагирует эти значения к N и 'S', выводя на экран итоговый вывод. Опции -a и -n могут использоваться, чтобы изменить поведение реферирования значения.

Вызов mysqldumpslow :

shell> mysqldumpslow [options] [log_file ...]
mysqldumpslow поддерживает следующие опции.

Таблица 5.19. Опции mysqldumpslow

ФорматОписание
-a Не резюмируйте все числа к N и строки к S
-n Отвлеченные числа с, по крайней мере, указанным количеством цифр
--debug Писать информацию об отладке
-g Только рассмотрите запросы, которые соответствуют образцу
--help Вывести справочное сообщение
-h Имя хоста сервера в имени файла системного журнала
-i Название экземпляра сервера
-l Не вычитайте время блокировки из полного времени
-r Реверсировать порядок сортировки
-s Как сортировать вывод
-t Выведите на экран только первые цифровые запросы
--verboseПодробный режим вывода
  • --help

    Отобразить сообщение справки.

  • -a

    Не резюмируйте все числа к N и строки к 'S'.

  • --debug, -d

    Работа в режиме отладки.

  • -g pattern

    Рассмотрите только запросы, которые соответствуют образцу в стиле (grep).

  • -h host_name

    Имя хоста сервера MySQL для имени файла *-slow.log. Значение может содержать подстановочный знак. Значение по умолчанию * (все).

  • -i name

    Название экземпляра сервера (используя скрипт mysql.server).

  • -l

    Не вычитайте время блокировки из полного времени.

  • -n N

    Отвлеченные числа с, по крайней мере, N цифрами в пределах имен.

  • -r

    Реверсировать порядок сортировки.

  • -s sort_type

    Как сортировать вывод. Значение sort_type должно быть выбрано из следующего списка:

    • t, at: По времени запроса или среднему времени запроса.

    • l, al: По времени блокировки или среднему времени блокировки.
    • r, ar: По посланным строкам или среднему числу посланных строк.
    • c: Сортировать по количеству.

    По умолчанию mysqldumpslow сортирует по среднему времени запроса (эквивалентно -s at).

  • -t N

    Выведите на экран только первые N запросов в выводе.

  • --verbose , -v

    Подробный режим. Напечатать больше информации о том, что делает программа.

Пример использования програмы:

shell> mysqldumpslow

Reading mysql slow query log from /usr/local/mysql/data/mysqld51-apple-slow.log
Count: 1  Time=4.32s (4s)  Lock=0.00s (0s)  Rows=0.0 (0), root[root]@localhost
 insert into t2 select * from t1

Count: 3  Time=2.53s (7s)  Lock=0.00s (0s)  Rows=0.0 (0), root[root]@localhost
 insert into t2 select * from t1 limit N

Count: 3  Time=2.13s (6s)  Lock=0.00s (0s)  Rows=0.0 (0), root[root]@localhost
 insert into t1 select * from t1

5.7. Утилиты развития MySQL

Этот раздел описывает некоторые утилиты, которые Вы можете счесть полезными, развивая программы MySQL.

В скриптах оболочки Вы можете использовать my_print_defaults, чтобы разобрать файлы опции и видеть, какие опции использовались бы данной программой. Следующий пример показывает вывод my_print_defaults, который мог быть произведен, когда запрошено показать варианты, найденные в группах [client] и [mysql]:

shell> my_print_defaults client mysql
--port=3306
--socket=/tmp/mysql.sock
--no-auto-rehash
Отметьте: обработка файла опции осуществлена в библиотеке клиента C, просто обрабатывая все опции в соответствующей группе или группах перед любыми параметрами командной строки. Это работает хорошо в программах, которые используют последний случай опции, которая определена многократно. Если у Вас есть C или C++ программа, которая обрабатывает определенные многократно опции этим путем, но не читает файлы опции, Вы должны добавить только три строки, чтобы дать такую возможность. Проверьте исходный код любого из стандартных клиентов MySQL, чтобы увидеть, как сделать это.

Несколько других языковых интерфейсов к MySQL основаны на библиотеке клиента C и некоторые из них обеспечивают способ получить доступ к содержанию файла опции. Они включают Perl и Python. Для деталей см. документацию для своего интерфейса.

5.7.1. mysql_config показ опций для компилирования клиентов

mysql_config предоставляет Вам полезную информацию для того, чтобы собрать Вашего клиента MySQL и соединить с MySQL. Это скрипт оболочки, таким образом, это доступно только в Unix и подобных Unix системах.

pkg-config может использоваться в качестве альтернативы mysql_config , чтобы получить такую информацию, как флаги компилятора или библиотеки требуемые, чтобы собирать приложения MySQL. Для получения дополнительной информации см. раздел 25.8.4.2.

Для двоичных дистрибутивов для Solaris mysql_config не обеспечивает параметры соединения со встроенной библиотекой. Чтобы получить параметры соединения с встроенной библиотекой, используйте скрипт mysql_server_config.

mysql_config поддерживает следующие опции.

  • --cflags

    Флаги компилятора C, чтобы найти включаемые файлы и определения, используемые, собирая библиотеку libmysqlclient. Опции возвращаются, привязанные к определенному компилятору, который использовался, когда библиотека создавалась, и не факт, что подойдут для Вашего собственного компилятора. Используйте --include для большего количества портабельных опций, которые содержат только включаеме пути.

  • --cxxflags

    Аналог --cflags , но для компилятора C++.

  • --include

    Опции компилятора, чтобы найти включаемые файлы MySQL.

  • --libmysqld-libs, --embedded

    Библиотеки и опции, требуемые, чтобы соединяться с встраиваемым сервером MySQL.

  • --libs

    Библиотеки и опции, требуемые, чтобы соединяться с библиотекой клиента MySQL.

  • --libs_r

    Библиотеки и опции, требуемые, чтобы соединяться с поточно-безопасной библиотекой клиента MySQL. В MySQL 8.0 все библиотеки клиента поточно-безопасны, таким образом, эта опция не должна использоваться. Опция --libs может использоваться во всех случаях.

  • --plugindir

    Имя пути к каталогу плагинов по умолчанию, определенное, конфигурируя MySQL.

  • --port

    Значение по умолчанию порта TCP/IP, определенное, конфигурируя MySQL.

  • --socket

    Файл сокета Unix по умолчанию, определенный, конфигурируя MySQL.

  • --variable= var_name

    Выведите на экран значение названной переменной конфигурации. Допустимые var_name: pkgincludedir (каталог заголовочных файлов), pkglibdir (каталог библиотек) и plugindir (каталог плагинов).

  • --version

    Номер версии для дистрибутива MySQL.

Если Вы вызываете mysql_config без опций, он выводит на экран список всех опций, которые он поддерживает, и их значения:

shell> mysql_config
Usage: /usr/local/mysql/bin/mysql_config [options]
Options:
  --cflags [-I/usr/local/mysql/include/mysql -mcpu=pentiumpro]
  --cxxflags [-I/usr/local/mysql/include/mysql -mcpu=pentiumpro]
  --include[-I/usr/local/mysql/include/mysql]
  --libs   [-L/usr/local/mysql/lib/mysql -lmysqlclient
   -lpthread -lm -lrt -lssl -lcrypto -ldl]
  --libs_r [-L/usr/local/mysql/lib/mysql -lmysqlclient_r
   -lpthread -lm -lrt -lssl -lcrypto -ldl]
  --plugindir[/usr/local/mysql/lib/plugin]
  --socket [/tmp/mysql.sock]
  --port   [3306]
  --version[5.8.0-m17]
  --libmysqld-libs [-L/usr/local/mysql/lib/mysql -lmysqld
   -lpthread -lm -lrt -lssl -lcrypto -ldl -lcrypt]
  --variable=VAR   VAR is one of:
  pkgincludedir [/usr/local/mysql/include]
  pkglibdir [/usr/local/mysql/lib]
  plugindir [/usr/local/mysql/lib/plugin]
Вы можете использовать mysql_config в пределах командной строки, используя обратные галочки, чтобы включать вывод, который он производит для особых опций. Например, чтобы собрать программу клиента MySQL, используйте mysql_config :
gcc -c `mysql_config --cflags` progname.c
gcc -o progname progname.o `mysql_config --libs`

5.7.2. my_print_defaults показ опций из файлов опций

my_print_defaults выводит на экран опции, которые присутствуют в группах опции файлов опции. Вывод указывает на то, какие опции будут использоваться программами, которые читают указанные группы опции. Например, mysqlcheck читает группы [mysqlcheck] и [client]. Чтобы видеть, какие опции присутствуют в тех группах в стандартных файлах опции, вызовите my_print_defaults так:

shell> my_print_defaults mysqlcheck client
--user=myusername
--password=secret
--host=localhost
Вывод состоит из опций, по одной в строке, в той форме, как они были бы определены в командной строке.

my_print_defaults поддерживает следующие опции.

  • --help, -?

    Отобразить сообщение справки.

  • --config-file=file_name, --defaults-file=file_name, -c file_name

    Читать только данный файл опции.

  • --debug= debug_options, -# debug_options

    Писать журнал отладки. Типичная строка debug_options d:t:o,file_name. Значение по умолчанию d:t:o,/tmp/my_print_defaults.trace.

  • --defaults-extra-file=file_name, --extra-file=file_name, -e file_name

    Считайте этот файл опции после глобального файла опции, но (в Unix) перед пользовательским файлом опции.

  • --defaults-group-suffix=suffix, -g suffix

    В дополнение к группам, названным на командной строке, считайте группы, у которых есть данный суффикс.

  • --login-path=name, -l name

    Считайте опции из названного пути входа в систему в файле пути входа в систему .mylogin.cnf. login path является группой, содержащей опции, которые определяют, с каким сервером MySQL соединиться и как подтвердить подлинность. Чтобы создать или изменить файл пути входа в систему, используйте mysql_config_editor , см. раздел 5.6.7.

  • --no-defaults, -n

    Возвратите пустую строку.

  • --show, -s

    my_print_defaults маскирует пароли по умолчанию. Используйте эту опцию, чтобы вывести на экран пароли в открытом тексте.

  • --verbose , -v

    Подробный режим. Напечатайте больше информации о том, что делает программа.

  • --version , -V

    Показать информацию о версии.

5.7.3. resolve_stack_dump преобразование числового дампа трассировки стека к символам

resolve_stack_dump преобразует числовой дамп трассировки стека к символам.

Вызов resolve_stack_dump:

shell> resolve_stack_dump [options] symbols_file
                             [numeric_dump_file]
Файл символов должен включать вывод от команды nm --numeric-sort mysqld. Числовой файл дампа должен содержать числовую трассировку стека от mysqld. Если никакой числовой файл дампа не называют в командной строке, трассировка стека считана из стандартного ввода.

resolve_stack_dump поддерживает следующие опции.

  • --help , -h

    Отобразить сообщение справки.

  • --numeric-dump-file=file_name, -n file_name

    Считайте трассировку стека из данного файла.

  • --symbols-file=file_name, -s file_name

    Используйте данный файл символов.

  • --version , -V

    Показать информацию о версии.

См. раздел 26.5.1.5.

5.8. Разные программы

5.8.1. lz4_decompress распаковывает сжатый LZ4 вывод mysqlpump

lz4_decompress распаковывает вывод mysqlpump, который создавался, используя сжатие LZ4.

Если MySQL был сконфигурирован с опцией -DWITH_LZ4=system , lz4_decompress не создана. В этом случае системная команда lz4 может использоваться вместо этого.

Вызов lz4_decompress :

shell> lz4_decompress input_file output_file
Например:
shell> mysqlpump --compress-output=LZ4 > dump.lz4
shell> lz4_decompress dump.lz4 dump.txt
Чтобы увидеть сообщение справки, вызовите lz4_decompress без параметров вообще.

Чтобы распаковать ZLIB-сжатый вывод mysqlpump, используйте zlib_decompress . См. раздел 5.8.5.

5.8.2. perror объясняет коды ошибки

Для большинства системных ошибок MySQL в дополнение к внутреннему текстовому сообщению, показывает системный код ошибки в одном из следующих стилей:

message ... (errno: #)
message ... (Errcode: #)
Вы можете узнать то, что код ошибки подразумевает, изучая документацию для Вашей системы или при использовании perror.

perror печатает описание для системного кода ошибки или для кода ошибки механизма хранения (табличный обработчик).

Вызов perror :

shell> perror [options] errorcode ...
Например:
shell> perror 13 64
OS error code  13:  Permission denied
OS error code  64:  Machine is not on the network
Чтобы получить сообщение об ошибке для кода ошибки MySQL Cluster, вызовите perror с опцией --ndb:
shell> perror --ndb errorcode
Значение системных сообщений об ошибках может зависеть от Вашей операционной системы. Данный код ошибки может означать разные вещи на различных операционных системах.

perror поддерживает следующие опции.

  • --help, --info, -I, -?

    Отобразить сообщение справки.

  • --ndb

    Напечатайте сообщение об ошибке для кода ошибки MySQL Cluster.

  • --silent, -s

    Тихий режим. Напечатайте только сообщение об ошибке.

  • --verbose, -v

    Подробный режим. Печатается код ошибки и сообщение. Это поведение по умолчанию.

  • --version, -V

    Показать информацию о версии.

5.8.3. replace утилита строковой замены

replace изменяет строки в файлах или стандартном вводе.

Вызов replace выполняется одним из следующих способов:

shell> replace from to
                  [from to] ...
                  -- file_name [file_name] ...
shell> replace from to
                  [from to] ...
                  < file_name
from представляет строку, чтобы искать, а to представляет ее замену. Могут быть одна или более пар строк.

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

Если опции -- нет, replace читает стандартный ввод и пишет на стандартный вывод.

replace использует конечный автомат, чтобы соответствовать более длинным строкам сначала. Это может использоваться, чтобы обменивать строки. Например, следующяя команда обменивает строки a и b в данных файлах file1 и file2:

shell> replace a b b a -- file1 file2 ...
replace поддерживает следующие опции.

  • -?, -I

    Отобразить сообщение справки.

  • -#debug_options

    Включить режим отладки.

  • -s

    Тихий режим. Напечатайте меньше информации, что делает программа.

  • -v

    Подробный режим. Напечатайте больше информации о том, что делает программа.

  • -V

    Показать информацию о версии.

5.8.4. resolveip преобразование имени хоста к IP-адресу или наоборот

resolveip обеспечивает преобразование имени хоста к IP-адресу и наоборот.

Вызов resolveip :

shell> resolveip [options]
                    {host_name|ip-addr} ...
resolveip поддерживает следующие опции.

  • --help, --info, -?, -I.

    Отобразить сообщение справки.

  • --silent, -s

    Тихий режим. Произведите меньше вывода.

  • --version, -V

    Показать информацию о версии.

5.8.5. zlib_decompress распаковывает ZLIB-сжатый вывод mysqlpump

zlib_decompress распаковывает ZLIB-сжатый вывод mysqlpump.

Если MySQL был сконфигурирован с опцией -DWITH_ZLIB=system , zlib_decompress не создана. В этом случае системная команда openssl zlib может использоваться вместо этого.

Вызов zlib_decompress :

shell> zlib_decompress input_file output_file
Например:
shell> mysqlpump --compress-output=ZLIB > dump.zlib
shell> zlib_decompress dump.zlib dump.txt
Чтобы увидеть справочное сообщение, вызовите zlib_decompress без параметров.

Чтобы распаковать вывод mysqlpump, сжатый LZ4, примените lz4_decompress . См. раздел 5.8.1.

5.9. Переменные окружения программы MySQL

Этот раздел перечисляет переменные окружения, которые используются прямо или косвенно MySQL. Большинство из них может также быть найдено в других местах в этом руководстве.

Опции в командной строке имеют приоритет перед значениями, определенными в файлах опции и переменных окружения, а значения в файлах опции имеют приоритет перед значениями в переменных окружения. Во многих случаях предпочтительно использовать файл опции вместо переменных окружения, чтобы изменить поведение MySQL. См. раздел 5.2.6.

ПеременнаяОписание
CXX Название Вашего компилятора C++ (для того, чтобы выполнить CMake).
CC Название Вашего компилятора C (для того, чтобы выполнить CMake).
DBI_USER Имя пользователя по умолчанию для Perl DBI.
DBI_TRACE Опции трассировки для Perl DBI.
HOME Путь по умолчанию для файла истории mysql $HOME/.mysql_history.
LD_RUN_PATH Используется, чтобы определить местоположение libmysqlclient.so.
LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN Включить плагин mysql_clear_password, см. раздел 7.5.1.4.
LIBMYSQL_PLUGIN_DIR Каталог, в котором можно искать плагины клиента.
LIBMYSQL_PLUGINS Плагины клиента, чтобы предварительно загрузить.
MYSQL_DEBUG Опции трассировки отладки.
MYSQL_GROUP_SUFFIX Групповое значение суффикса опции (как определение --defaults-group-suffix).
MYSQL_HISTFILE Путь к файлу истории mysql . Если эта переменная установлена, ее значение переопределяет значение по умолчанию для $HOME/.mysql_history.
MYSQL_HISTIGNORE Образцы, определяющие запросы, которые mysql не должен зарегистрировать в $HOME/.mysql_history или syslog, если дана опция --syslog.
MYSQL_HOME Путь к каталогу, в котором находится определенный для сервера файл my.cnf.
MYSQL_HOST Имя хоста по умолчанию для mysql.
MYSQL_PS1Командная строка, чтобы использовать в mysql .
MYSQL_PWDПароль по умолчанию, соединяясь с mysqld . Использование этого опасно. См. раздел 7.1.2.1.
MYSQL_TCP_PORT Значение по умолчанию порта TCP/IP.
MYSQL_TEST_LOGIN_FILE Название файла пути входа в систему .mylogin.cnf.
MYSQL_TEST_TRACE_CRASH Разрушает ли испытательный плагин трассировки протокола клиентов.
MYSQL_TEST_TRACE_DEBUG Производит ли испытательный плагин трассировки протокола вывод.
MYSQL_UNIX_PORTИмя файла сокета Unix по умолчанию для соединений с localhost.
PATHИспользуется оболочкой, чтобы найти программы MySQL.
PKG_CONFIG_PATH Расположение файла mysqlclient.pc pkg-config.
TMPDIR Каталог, в котором создаются временные файлы.
TZЭто должно быть установлено в Вашу зону местного времени. См. раздел B.5.3.7.
UMASK Режим создания пользовательского файла.
UMASK_DIR Режим создания пользовательского каталога.
USER Имя пользователя по умолчанию в Windows, соединяясь с mysqld.

Для информации о файле истории mysql см. раздел 5.5.1.3.

MYSQL_TEST_LOGIN_FILE путь файла пути входа в систему (файл, создаваемый mysql_config_editor). Если не задано, значение по умолчанию %APPDATA%\MySQL\.mylogin.cnf в Windows и $HOME/.mylogin.cnf в не-Windows. См. раздел 5.6.7.

Переменные MYSQL_TEST_TRACE_DEBUG и MYSQL_TEST_TRACE_CRASH управляют испытательным плагином клиента трассировки протокола, если MySQL собран с этим включенным плагином. Для получения дополнительной информации см. раздел 26.2.4.11.1.

Значение по умолчанию UMASK и UMASK_DIR: соответственно 0640 и 0750. MySQL предполагает, что значение для UMASK или UMASK_DIR восьмеричное, если это начинается с 0. Например, установка UMASK=0600 равнозначна UMASK=384, так как восьмеричное 0600 это десятичное 384.

UMASK и UMASK_DIR, несмотря на их имена, используются в качестве режимов, не масок:

  • Если установлена UMASK, mysqld использует ($UMASK | 0600) как режим для создания файла, чтобы у создаваемых файлов был режим в диапазоне от 0600 до 0666 (все значения восьмеричные).

  • Если установлена UMASK_DIR, mysqld применяет ($UMASK_DIR | 0700) как основной режим для создания каталога, который тогда является AND с ~(~$UMASK & 0666), чтобы у создаваемых каталогов был режим в диапазоне от 0700 до 0777 (все значения восьмеричные). AND может удалить разрешения режима чтения и записи каталога, но не разрешение выполнения.

Может быть необходимо установить PKG_CONFIG_PATH, если Вы используете pkg-config для создания программ MySQL. См. раздел 25.8.4.2.

Поиск

 

Найди своих коллег!

Вы можете направить письмо администратору этой странички, Алексею Паутову. mailto:alexey.v.pautov@mail.ru