Для большинства не больших баз данных идеально будет работать команда mysqldump:
mysqldump -uroot -p database > database.sql
Если требуется указать удалённый хост то, добавим -h192.168.1.10
или --host=192.168.1.10
, где 192.168.1.10 — IP удалённого хоста. Для локального этот параметр можно упустить.
-uroot
(или --user=root
) — указываем пользователя.
-p
или --password
database<.code> — имя базы данных для бэкапа, а
database.sql
– имя файла для бэкапа. Если в один файл вы хотите включить несколько баз данных, используйте ключ -B
.
Если же вам нужно сделать бэкап всех доступных баз данных, то используйте ключ -A
(или --all-databases
):
mysqldump -uroot -p -A > all-databases.sql
Полезные ключи для mysqldump
--complete-insert, -c
– Используется полная форма оператора INSERT (с именами столбцов).
--create-options
– Добавляет дополнительную информацию в операторы CREATE TABLE. Это может быть тип таблицы, начальное значение AUTO_INCREMENT и другие параметры.
--disable-keys, -K
– Для каждой таблицы, окружает оператор INSERT выражениями /*!40000 ALTER TABLE tbl_name DISABLE KEYS */; и /*!40000 ALTER TABLE tbl_name ENABLE KEYS */; в выводе результата дампа. Это ускорит загрузку данных на сервер для таблиц типа MyISAM, так как индексы создаются после внесения всех данных.
--extended-insert, -e
– Использовать команду INSERT с новым многострочным синтаксисом (повышает компактность и быстродействие операторов ввода).
Остальные ключи есть в man.
Восстановление базы данных из бэкапа
Мне больше нравится способ развёртывания бэкапа через mysql-консоль, так как по умолчанию отображается информация о выполенных командах и можно увидеть ошибку (если она есть):
mysql -uroot -p
mysql> use database;
mysql> source database.sql
Так же можно и таким сопосбом:
mysql -uroot -p database < database.sql