Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Администрирование MySQL.doc
Скачиваний:
2
Добавлен:
18.04.2019
Размер:
1.3 Mб
Скачать

Mysqlhotcopy, копирование баз данных и таблиц MySql

Утилита mysqlhotcopy представляет собой Perl-сценарий, использующий SQL-команды LOCK TABLES, FLUSH TABLESи Unix-утилиты cp или scp для быстрого получения резервной копии базы данных. Пожалуй, это наиболее быстрый способ копирования баз данных или таблиц, но он может работать только на том же компьютере, где расположены каталоги копируемой базы данных.

mysqlhotcopy db_name [/path/to/new_directory]

mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory

mysqlhotcopy db_name./regex/

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

  • -u, -user=#

Имя пользователя для входа в базу данных.

  • -p, -password=#

Используемый пароль при подсоединении к серверу.

  • -P, -port=#

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

  • -S, -socket=#

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

  • -keepold

Не удалять предыдущий результат (только что переименованный) после выполнения команды.

  • -q, -quiet

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

  • -debug

Разрешить отладку.

  • -n, -dryrun

Сообщать о действиях без их выполнения.

  • -regexp=#

Копировать все базы данных с именами, встречающимися в функции regexp.

  • -checkpoint=#

Внести проверочную запись в предусмотренную таблицу базы данных.

  • -flushlog

Записать на диск данные журналов из буфера, как только все таблицы заблокируются.

  • -tmpdir=#

Временная директория (вместо /tmp).

А также некоторые другие. Более полное описание данного сценария можно посмотреть в документации по языку программирования Perl.

Сценарий mysqlhotcopy берет информацию для групп [client] и [mysqlhotcopy] из файлов опций.

Для выполнения программы mysqlhotcopy необходимы доступ для записи в директорию, куда будет помещена копия, и привилегия выполнения команды SELECT для копируемых таблиц и команды RELOAD для MySQL-сервера (чтобы выполнить FLUSH TABLES).

mysqlimport, импорт данных из текстовых файлов

Утилита mysqlimport обеспечивает интерфейс командной строки для SQL-оператора LOAD DATA INFILE. Большинство параметров mysqlimportполностью соответствует аналогичным параметрам для оператора LOAD DATA INFILE.

Утилита mysqlimport вызывается следующим образом:

shell> mysqlimport [параметры] database textfile1 [textfile2 ...]

Для каждого текстового файла, указанного в командной строке, mysqlimportудаляет расширение в каждом имени файла и использует его, чтобы определить, в какую таблицу занести содержимое. Например, файлы с именами patient.txt, patient.text и patient должны быть все занесены в таблицу с именем patient.

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

  • -c, -columns=...

Эта опция принимает в качестве аргумента список разделенных запятыми имен полей. Данный список полей используется для создания соответствующей команды LOAD DATA INFILE, которая затем посылается в MySQL.

  • -C, -compress

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

  • -#, -debug[=option_string]

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

  • -d, -delete

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

  • -f, -force

Игнорировать ошибки. Например, если таблица для текстового файла не существует, продолжать обработку остающихся файлов. Без параметра -force утилита mysqlimport прекращает работу при отсутствии таблицы.

  • -h host_name, -host=host_name

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

  • -l, -lock-tables

Заблокировать все таблицы для записи перед обработкой любых текстовых файлов. Это обеспечивает синхронизацию всех таблиц на сервере.

  • -L, -local

Читать входящие файлы из клиента. По умолчанию предполагается, что текстовые файлы расположены на сервере при подсоединении к localhost (значение хоста по умолчанию).

  • -pyour_pass, -password[=your_pass]

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

  • -P port_num, -port=port_num

Номер порта TCP/IP, используемого для подсоединения к хосту.

  • -r, -replace

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

  • -s, -silent

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

  • -u user_name, -user=user_name

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

mysqlshow, просмотр баз данных, таблиц и столбцов

Утилита mysqlshow позволяет кратко ознакомиться с существующими базами данных, их таблицами и столбцами таблиц.

Аналогичную информацию можно получить с помощью программы mysql, используя команду SHOW.

Утилита mysqlshow вызывается следующим образом:

shell> mysqlshow [ПАРАМЕТРЫ] [database [table [column]]]

  • Если имя базы данных не указано, то выдается список всех существующих баз данных.

  • Если не указана таблица — показываются все таблицы, найденные в этой базе данных.

  • Если не задан столбец — показываются все найденные в таблице столбцы и представленные в виде столбцов данные.

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

Если последний аргумент содержит в себе шаблонные символы (*, ?, % или _) процессора или SQL, то будут представлены только данные, совпадающие с шаблоном. Если имя базы данных содержит подчеркивание, то оно должно быть экранировано обратным слешем (некоторые оболочки в Unix востребуют два обратных слеша) для того, чтобы получить корректные имена. '*' конвертируются в '%' и '?' - в '_'.

Это может вызвать путаницу при попытке просмотреть столбцы таблицы с символом _, так как в таком случаеmysqlshow покажет только имена таблиц, совпадающие с шаблоном. Ситуацию можно легко исправить добавлением дополнительного символа % в конец командной строки (как отдельного аргумента).

perror, разъяснение кодов ошибок

Для большинства системных ошибок, помимо внутреннего текстового сообщения MySQL, можно также выводить номер кода системной ошибки в одном из следующих стилей: message ... (errno: #) или message ... (Errcode: #).

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

perror выводит описание кода системной ошибки или код ошибки обработчика таблиц MyISAM/ISAM.

perror вызывается следующим образом:

shell> perror [ПАРАМЕТРЫ] [ERRORCODE [ERRORCODE...]]

Пример:

shell> perror 13 64

Error code 13: Доступ запрещен

Error code 64: Компьютер не находится в сети

Следует учитывать, что сообщения об ошибках в большинстве своем являются системно-зависимыми!

Запуск SQL-команд из текстового файла

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

shell> mysql database

Однако вполне можно поместить SQL команды в текстовый файл и указать mysql считывать входные данные из этого файла. Для этого необходимо создать текстовый файл text_file, содержащий команды, которые предстоит выполнить. Затем запускаем mysql как показано ниже:

shell> mysql database < text_file

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

shell> mysql < text_file

Если программа mysql уже работает, можно запустить файл с SQL-сценарием, используя команду source:

mysql> source filename;