MYSQLDUMP потаблично

Иногда возникает необходимость сделать дамп базы потаблично. А база большая… а таблиц много… Для этого был написан простецкий скриптик, предлагаю вам его на ваш суд:

#!/bin/bash

USER="user"
PASSWORD="passwd"
DBname="yourdb"

mysql -u $USER -p$PASSWORD $DBname -e 'show tables' -s --skip-column-names | xargs -P4 -I {} \
mysqldump -u $USER -p$PASSWORD --add-drop-table --add-locks -q -Q --disable-keys --extended-insert --default-character-set=cp1251 $DBname '{}' -r '{}'.sql

Алгоритм просто — получаем список таблиц, отдаем его xargs, который передает его mysqldump

Теперь опишем параметры:

1) mysql (опции) (база) (опции)

-u — имя пользователя;

-p — пароль;

-e — выполнить указанную команду(в данном случае show tables);

-s — не показывать разделители;

—skip-column-names — убрать «шапку» вывода;

 

2) xargs (опции) команда

-P — количество параллельных потоков(в данном случае 4);

-I — загоняем вывод в круглые скобки

 

3) mysqldump (опции) (имя базы) (опции)

-u — имя пользователя;

-p — пароль;

—add-drop-table — опция, которая добавляет команду DROP TABLE перед созданием таблиц. Перед восстановлением таблиц из дампа, таблицы с таким же именем в рабочей базе данных будут удалены и пересозданы из резервной копии. Рекомендуется использовать для предотвращения возможных ошибок после восстановления;
—add-locks — опция, которая добавляет команды LOCK TABLES перед выполнением и UNLOCK TABLE после выполнения каждого дампа таблицы. Применяется для ускорения доступа к MySQL;

-q — опция рекомендуется для дампа больших таблиц( дабы не произошло out of memory);

-Q — ставим кавычки в названия столбцов и таблиц;

—disable-keys — для каждой таблицы. Окружает оператор INSERT выражениями /*!40000 ALTER TABLE tbl_name DISABLE KEYS */; и /*!40000 ALTER TABLE tbl_name ENABLE KEYS */; в выводе результата дампа. Это ускорит загрузку данных на сервер для таблиц типа MyISAM, так как индексы создаются после внесения всех данных;

—extended-insert — использовать команду INSERT с новым многострочным синтаксисом (повышает компактность и быстродействие операторов ввода);

—default-character-set=cp1251 — хАчу такую кодировку);

-r — пишем в файлы;

 

Вообщем то и все. Можно прикрутить сжатие, отправку на другой сервер и прочее.. как хотите)

Примечание — все таблицы на движке MYISAM.