4.8.4 Использование mysqlcheck для сопровождения и аварийного восстановления таблиц. |
Оглавление | 4.8.6 mysqlhotcopy , Копирование баз данных и таблиц MySQL |
mysqldump
, Получение дампов данных и структуры таблицыДанная утилита позволяет получить дамп (``моментальный снимок'') содержимого базы данных или совокупности баз для создания резервной копии или пересылки данных на другой SQL-сервер баз данных (не обязательно MySQL-сервер). Дамп будет содержать набор команд SQL для создания и/или заполнения таблиц.
Если же резервная копия создается на сервере, то вместо описываемой
утилиты следует использовать mysqlhotcopy
. См.раздел See section 4.8.6 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
--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
. См.
раздел See section 6.4.9 Синтаксис оператора LOAD DATA INFILE
.
-F, --flush-logs
-f, --force,
-h, --host=..
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
localhost
, для которого используются
сокеты Unix ).
-q, --quick
stdout
без буферизации
запроса. Для этого используется функция mysql_use_result()
.
-Q, --quote-names
-r, --result-file=...
--single-transaction
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
-T, --tab=path-to-some-directory
CREATE
команды для создания таблицы, и файл `table_name.txt' с данными
таблицы. Файл `.txt' имеет формат в соответствии с параметрами --fields-xxx
и --lines--xxx
. Примечание: Этот параметр работает только при условии,
что утилита mysqldump
запущена на том же компьютере, что и демон mysqld
,
причем пользователь/группа, запустившие данный поток mysqld
(обычно это
пользователь mysql
и группа mysql
), должны иметь право
создавать/записывать файл по указанному адресу.
-u user_name, --user=user_name
-O var=option, --set-variable var=option
-v, --verbose
-V, --version
-w, --where='where-condition'
"--where=user='jimf'" "-wuserid>1" "-wuserid<1"
-X, --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
используется для получения резервной копии
всех баз данных. See section 4.4.1 Резервное копирование баз данных.
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
4.8.4 Использование mysqlcheck для сопровождения и аварийного восстановления таблиц. |
Оглавление | 4.8.6 mysqlhotcopy , Копирование баз данных и таблиц MySQL |