Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / MySQL / Администрирование баз данных /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Клиентские сценарии и утилиты MySQL - Программирование от RIN.RU
Клиентские сценарии и утилиты MySQL



Использование mysqlcheck для сопровождения и аварийного восстановления таблиц


Начиная с версии MySQL 3.23.38 можно применять новый инструмент для проверки и восстановления MyISAM-таблиц. Отличие mysqlcheck от myisamchk состоит в том, что утилита mysqlcheck должна использоваться при работающем сервере mysqld, в то время как myisamchk - при остановленном. Преимущество же заключается в том, что теперь не нужно останавливать сервер для проверки или восстановления таблиц.


Утилита mysqlcheck использует соответствующие команды MySQL-сервера CHECK, REPAIR, ANALYZE и OPTIMIZE удобным для пользователя образом.


Существует три альтернативных способа запуска mysqlcheck:


shell> mysqlcheck [OPTIONS] database [tables]
shell> mysqlcheck [OPTIONS] --databases DB1 [DB2 DB3...]
shell> mysqlcheck [OPTIONS] --all-databases


Таким образом, утилита может использоваться подобно mysqldump по отношению к выбранным базам данных и таблицам.


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


Для изменения поведения mysqlcheck по умолчанию можно использовать следующие обозначения:


mysqlrepair: Значение по умолчанию будет -r
mysqlanalyze: Значение по умолчанию будет -a
mysqloptimize: Значение по умолчанию будет -o


Ниже приведены возможные опции для mysqlcheck. Какие из них поддерживает ваша версия, можно проверить с помощью команды mysqlcheck --help.


-A, --all-databases

Проверить все базы данных. Аналогична опции --databases, если указать все базы данных.

-1, --all-in-1

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

-a, --analyze

Анализировать данные таблицы.

--auto-repair

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

-#, --debug=...

Выводит информацию журнала отладки. Часто используется следующий набор параметров: 'd:t:o,filename'

--character-sets-dir=...

Директория, где находятся установки символов.

-c, --check

Проверить таблицу на наличие ошибок.

-C, --check-only-changed

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

--compress

Использовать сжатие данных в протоколе сервер/клиент.

-?, --help

Вывести данную вспомогательную информацию и выйти из программы.

-B, --databases

Проверить несколько баз данных. Обратите внимание на разницу в использовании: в этом случае таблицы не указываются. Все имена аргументов
рассматриваются как имена баз данных.

--default-character-set=...

Установить набор символов по умолчанию.

-F, --fast

Проверить только базы данных, которые не были закрыты должным образом.

-f, --force

Продолжать даже при получении ошибки SQL.

-e, --extended

При использовании данного параметра совместно с CHECK TABLE можно быть на 100 процентов быть уверенным в целостности таблицы, хотя это и займет много времени. Если же использовать этот параметр с REPAIR TABLE, запустится расширенное восстановление таблицы, которое может потребовать не только длительного времени выполнения, но и привнесет также массу ненужных строк!

-h, --host=...

Подключиться к хосту.

-m, --medium-check

Быстрее, чем --extended-check, но находит только 99,99 процентов всех ошибок. Для большинства случаев этот вариант вполне подходит.

-o, --optimize

Оптимизировать таблицу.

-p, --password[=...]

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

-P, --port=...

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

-q, --quick

При использовании данной опции совместно с CHECK TABLE предотвращается сканирование строк для корректировки неправильных связей. Это наиболее быстрый метод проверки. Если же использовать этот параметр с REPAIR TABLE, программа попытается восстановить только систему индексов. Это наиболее быстрый метод восстановления таблицы.

-r, --repair

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

-s, --silent

Выводить только сообщения об ошибках.

-S, --socket=...

Файл сокета, используемый для подсоединения.

--tables

Перекрывает опцию --databases (-B).

-u, --user=#

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

-v, --verbose

Вывести информацию о различных этапах.

-V, --version

Вывести информацию о версии и выйти из программы.




mysqldump, Получение дампов данных и структуры таблицы


Данная утилита позволяет получить дамп ("моментальный снимок") содержимого базы данных или совокупности баз для создания резервной копии или пересылки данных на другой SQL-сервер баз данных (не обязательно MySQL-сервер). Дамп будет содержать набор команд SQL для создания и/или заполнения таблиц.


Если же резервная копия создается на сервере, то вместо описываемой утилиты следует использовать mysqlhotcopy. См. раздел mysqlhotcopy, Копирование баз данных и таблиц MySQL.


shell> mysqldump [OPTIONS] database [tables]
или mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
или mysqldump [OPTIONS] --all-databases [OPTIONS]


Если не указывать имена таблиц или использовать параметры --databases или --all-databases, то будет получен дамп базы данных в целом (соответственно - всех баз данных).


Перечень опций, поддерживаемых вашей конкретной версией утилиты mysqldump, можно получить, выполнив команду mysqldump --help.


Следует иметь в виду, что утилита mysqldump, используемая без опций --quick или --opt, перед тем, как сделать дамп результата выборки информации, загрузит весь результат в память. Это может создать проблемы при получении дампа большой базы данных.


Учтите, что не следует применять параметры --opt или -e, если вы собираетесь использовать для получения дампа новую копию программы mysqldump, а затем воспроизводить его на очень старом MySQL-сервере.


Утилита mysqldump поддерживает следующие опции:


--add-locks

Добавить команды LOCK TABLES перед выполнением и UNLOCK TABLE после выполнения каждого дампа таблицы (для ускорения доступа к MySQL).

--add-drop-table

Добавить команду DROP TABLE перед каждой командой CREATE TABLE.

-A, --all-databases

Произвести дамп всех баз данных. Аналогично опции --databases с указанием всех баз данных.

-a, --all

Включить все опции создания объектов, специфичные для MySQL.

--allow-keywords

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

-c, --complete-insert

Использовать полные команды INSERT (с именами столбцов).

-C, --compress

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

-B, --databases

Выполнить дамп нескольких баз данных. Обратите внимание на разницу в использовании: в этом случае таблицы не указываются. Все имена аргументов рассматриваются как имена баз данных. Оператор USE db_name; включается в вывод перед каждой новой базой данных.

--delayed

Использовать команду INSERT DELAYED при вставке строк.

-e, --extended-insert

Использовать команду INSERT с новым многострочным синтаксисом (повышает компактность и быстродействие операторов ввода).

-#, --debug[=option_string]

Отслеживать прохождение программы (для отладки).

--help

Вывести справочную информацию и выйти из программы.

--fields-terminated-by=...


--fields-enclosed-by=...


--fields-optionally-enclosed-by=...


--fields-escaped-by=...


--lines-terminated-by=...

Эти опции используются совместно с параметром -T и имеют то же самое значение, что и соответствующие операторы для LOAD DATA INFILE. См. раздел Синтаксис оператора LOAD DATA INFILE.

-F, --flush-logs

Записать на диск данные системного журнала из буфера MySQL-сервера перед началом выполнения дампа.

-f, --force,

Продолжать даже при получении ошибки SQL при выполнении дампа таблицы.

-h, --host=..

Выполнить дамп данных MySQL сервера на указанном хосте. Значение хоста по умолчанию - localhost.

-l, --lock-tables.

Заблокировать все таблицы перед началом выполнения дампа. Таблицы блокируются оператором READ LOCAL, чтобы разрешить параллельные записи для MyISAM-таблиц. Следует отметить, что при выполнении дампа совокупности баз данных опция --lock-tables блокирует таблицы каждой базы по отдельности. Таким образом, использование этого параметра не гарантирует, что таблицы будут логически непротиворечивы в пределах этих баз данных. В различных базах данных при выполнении дампа таблицы могут находиться в совершенно разных состояниях.

-K, --disable-keys

Добавляет выражение /*!40000 ALTER TABLE tb_name DISABLE KEYS */; и /*!40000 ALTER TABLE tb_name ENABLE KEYS */;
в выводе результата. Это ускорит загрузку данных на сервер MySQL 4.0, так как индексы создаются после внесения всех данных.

-n, --no-create-db

В выводе результата выражение CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name; будет отсутствовать. Данная строка будет добавлена в любом случае при использовании опций --databases или --all-databases.

-t, --no-create-info

Не записывать информацию о создании таблицы (команда CREATE TABLE).

-d, --no-data

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

--opt

То же, что и --quick --add-drop-table --add-locks --extended-insert --lock-tables. Должно дать наиболее быстрый дамп для чтения на
MySQL-сервере.

-pyour_pass, --password[=your_pass]

Используемый пароль при подключении к серверу. Если аргумент =your_pass не введен, mysqldump предложит ввести пароль.

-P port_num, --port=port_num

Номер порта TCP/IP, используемого для подключения к хосту (применяется при подсоединении к хостам, отличным от localhost, для которого используются сокеты Unix ).

-q, --quick

Выводить дамп непосредственно на стандартный вывод stdout без буферизации запроса. Для этого используется функция mysql_use_result().

-Q, --quote-names

Взять в кавычки имена таблиц и столбцов без символов '''.

-r, --result-file=...

Прямой вывод указанного файла. Этот опцию следует использовать в MS DOS, так как она предотвращает преобразование символа новой строки '\n' в
последовательность '\n\r' (новая строка + возврат каретки).

--single-transaction

Данная опция выдает SQL-команду BEGIN перед выполнением дампа данных с сервера. Наиболее часто используется с InnoDB-таблицамии и уровнем изоляции транзакций READ_COMMITTED, так как именно в этом режиме можно получить дамп с непротиворечивым состоянием базы данных после выполнения команды BEGIN без блокирования каких-либо приложений. Используя эту опцию,
необходимо помнить, что при выполнении дампа только транзакционные таблицы будут находиться в непротиворечивом состоянии, т.е. некоторые MyISAM- или HEAP-таблицы при использовании данной опции могут все же изменить свое состояние. Опция --single-transaction добавлена в версии 4.0.2. Она является взаимоисключающей по отношению к опции --lock-tables, так как команда LOCK TABLES прерывает выполнение предыдущей транзакции.

-S /path/to/socket, --socket=/path/to/socket

Файл сокета для подсоединения к localhost (значение хоста по умолчанию).

--tables

Перекрывает параметр --databases (-B).

-T, --tab=path-to-some-directory

Для каждой заданной таблицы создает файл a 'table_name.sql', содержащий SQL CREATE команды для создания таблицы, и файл 'table_name.txt' с данными таблицы. Файл '.txt' имеет формат в соответствии с параметрами --fields-xxx и --lines--xxx. Примечание: Этот параметр работает только при условии, что утилита mysqldump запущена на том же компьютере, что и демон mysqld, причем пользователь/группа, запустившие данный поток mysqld (обычно это пользователь mysql и группа mysql), должны иметь право создавать/записывать файл по указанному адресу.

-u user_name, --user=user_name

Имя пользователя MySQL-сервера, используемое при подключении к серверу. Значением по умолчанию является имя пользователя Unix.

-O var=option, --set-variable var=option

Установить значения переменных. Доступные для использования переменные перечислены ниже.

-v, --verbose

Расширенный режим вывода. Вывод более детальной информации о работе программы.

-V, --version

Вывести информацию о версии и выйти из программы.

-w, --where='where-condition'

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


"--where=user='jimf'" "-wuserid>1" "-wuserid<1"


-X, --xml

Представляет дамп базы данных в виде XML.

-x, --first-slave

Блокирует все таблицы во всех базах данных.

-O net_buffer_length=#, where # < 16M

При создании многострочных операторов ввода (как и в случаях применения параметров --extended-insert или --opt) утилита mysqldump будет создавать строки длиной вплоть до указанной в net_buffer_length. При увеличении значения этой переменной необходимо также убедиться в том, что в MySQL-сервере для переменной max_allowed_packet указано значение больше, чем величина net_buffer_length.


Чаще всего утилита mysqldump используется для получения резервной копии всех баз данных. См. раздел Резервное копирование баз данных.


mysqldump --opt database > backup-file.sql


Можно, наоборот, прочитать этот файл на MySQL-сервере посредством команды:


mysql database < backup-file.sql


или


mysql -e "source /patch-to-backup/backup-file.sql" database


Данная утилита достаточно часто используется и для переноса информации из базы данных на другой MySQL-сервер:


mysqldump --opt database | mysql --host=remote-host -C database


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


mysqldump --databases database1 [database2 ...] > my_databases.sql


Если необходим дамп всех баз данных, можно использовать:


mysqldump --all-databases > all_databases.sql




<<<  НазадВперед  >>>
 1  2  3  4  5  6 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Конфигурирование MySQL

Общие проблемы безопасности и система привилегий доступа MySQL

Управление учетными записями пользователей MySQL

Предотвращение катастроф и восстановление

Справочник по языку администрирования баз данных

Локализация MySQL и использование национальных алфавитов

Серверные сценарии и утилиты MySQL

Файлы журналов MySQL

Репликация в MySQL

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь