====== Шпаргалки mysqldump ======
==== Дамп/архивирование/пересылка (mysqldump, cat, bzip2, scp, ssh) ====
=== Обычный дамп ===
mysqldump -u user -ppwd dbname [tbl names]> /path/to/dump.sql
* -h, –host= - имя хоста (ip или домен), по умолчанию localhost
* -P, –port= - номер порта, по умолчанию 3306
* -u, –user= - имя пользователя, по умолчанию root
* -p, –password - флаг о том что утилита mysqldump должна спросить пароль после вызова. Именно так рекоммендуется делать, т.к. это безопаснее. По умолчанию используется доступ без пароля.
* -p//pwd//, –password=//pwd// - указание пароля. Так не рекоммендуется делать, т.к. пароль виден на экране и сохраняется в логах вызова команд на сервере. Обратите внимание что в случае ключа -p текст пароля пишет без пробела от ключа
* -d, –no-data - дамп структуры базы данных
* -C, –compress - передача данных между сервером и клиентом со сжатием, если оно поддерживается сторонами. Рекоммендуется использовать если делаете дамп непосредственно с удаленного сервера.
* -B, –databases - утилита будет секцию [table names] использовать как имена баз данных и делать дампы указанных баз. По умолчанию вторые и далее параметры вызова воспринимаются как имена таблиц из указанной базы данных.
* -A, –all-databases - аналог вызова утилиты с ключом -B и указанием всех баз данных
=== Дамп + Архивация ===
mysqldump -u user -ppwd -q -e dbname | bzip2 -9> /path/to/dump.sql.bz2
=== Дамп + Пересылка на другой сервер (Бекап БД на другой сервер) ===
mysqldump -u user -ppwd -q -e dbname | ssh user @remotehost 'cat> /path/to/dump.sql.bz2'
=== Дамп + Архивация + Пересылка на другой сервер (Архивация бекапа БД на другой сервер) ===
mysqldump -u user -ppwd -q -e dbname | bzip2 -9 | ssh user @remotehost 'cat> /path/to/dump.sql.bz2'
Стоит отметить что при наличии 100 мбит (или более быстрых) портов на обоих серверах и при необходимости дальнейшего использования дампа на удаленном севере - выключение архивации из потока может ускорить процесс, т.к. в этом процессе слабым звеном скорее всего выступит ядро процессора. С другой стороны, если делать дамп одновременно нескольких баз данных параллельно - то слабым звеном уже станет 100мбитный канал серверов и использование bzip2 или gzip будет оправдано.
==== Заливание дампа, распаковка ====
=== Создание базы данных из коммандной строки ===
mysqladmin -u user -ppwd create dbname
=== "Заливка" дампа с локального диска ===
mysql -u user -ppwd dbname
=== Восстанавливаем БД из архива с локального диска ===
bunzip2
=== "Заливка" бекапа MySQL с удаленного сервера ===
ssh user@remotehost 'cat /path/to/dump.sql' | mysql -u user -ppwd dbname
=== Восстановление бекапа MySQL из архива с удаленного сервера ===
ssh user@remotehost 'cat /path/to/dump.sql.bz2' | bunzip2 | mysql -u user -ppwd dbname
==== Копирование базы данных между MySQL серверами ====
=== Копирование базы данных на удаленный MySQL-сервер ===
Если скорость сетевого интерфейса достаточна
mysqldump -u user -ppwd -q -e dbname | ssh user @remotehost 'cat | mysql -u user -ppwd dbname'
Если скорость сетевого интерфейса не достаточна - добавляем промежуточную архивацию
mysqldump -u user -ppwd -q -e dbname | bzip2 -9 | ssh user @remotehost 'cat | bunzip2 | mysql -u user -ppwd dbname'
=== Копирование базы данных с удаленного MySQL-сервера на локальный ===
Если скорость сетевого интерфейса достаточна
ssh user@remotehost 'mysqldump -u user -ppwd -q -e dbname' | mysql user -ppwd dbname
Если скорость сетевого интерфейса не достаточна - добавляем промежуточную архивацию
ssh user@remotehost 'mysqldump -u user -ppwd -q -e dbname | bzip2' | bunzip2 | mysql -u user -ppwd dbname