Как вижу в данный момент все стараются создавать дампы через всякие GUI для работы с базой или вовсе не умеют создавать нормальных дампов. В создании нормального дампа базы нет ничего сложного и сейчас я расскажу как это делается.  
  
Примеры и описание будут сделаны для операционной системы windows. Для nix систем - почти тоже самое.  Описание ориентируется на новичков, так что будет много лишней информации.  
  
Самый простой и лучший способ - использовать стандартную утилиту mysqldump, которая есть в комплекте с mysql.  
  
Начнём с самого начала:  
  
* У меня стоит вебсервер xampp и он находится на диске D в папке webserver. Бинарники mysql находятся в папке webserver\mysql\bin. Там и находится утилита mysqldump.exe и сам файл mysql.exe.  
  
1. Для начала нужно открыть windows консоль и изменить путь до нужной папки:  Чтобы открыть консоль для начала нужно открыть меню "выполнить". Для этого нужно воспользоваться сочетанием клавиш Windows + R. Далее в открывшееся окно ввести текст cmd и нажать enter (или кнопку "ок"). Затем откроется окно с таким содержанием:   
  
Microsoft Windows [Version 6.1.7601]  © Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.  
  
C:\Users\Influense>    2. Далее нужно перейти в папку D:\webserver\mysql\bin. Для этого в консоль вводим следующее:  
  
C:\Users\Pradmure>cd /D D:\webserver\mysql\bin команда cd - для смены директории, а параметр /D для того что бы указать что мы собираемся сменить диск с C: на D: (параметр всегда /D и не зависит от имени диска. Так что если бы у меня был диск F, то я всё равно писал бы cd /D F:\webserver\mysql\bin)  Далее мы окажемся в нужной папке и в консоли это будет выглядеть так (показываю только последнюю строку):  
  
 Далее мы окажемся в нужной папке и в консоли это будет выглядеть так (показываю только последнюю строку):  D:\webserver\mysql\bin> Процесс дампа и заливки файлов через консоль:  
  
2. Теперь можно приступать к использованию утилиты mysqldump или заливке дампов. 1. Создание дампа базы.  
  
Например мне нужно сделать дамп базы characters и сохранить этот дамп на диск C в файл world.sql. Для этого я обращаюсь к файлу mysqldump с некоторыми параметрами.  Пример дампа базы world в файл world.sql на диск C:   
  
mysqldump -u root -p6655 world > C:\world.sql После нажатия enter пройдёт несколько секунд и будет создан файл world.sql на диске C со всеми данными, структурой, дропом и созданием таблиц нашей базы.  
  
Теперь подробнее: параметр -u применяется для указания имени пользователя базы данных, а -p для пароля (после параметра -p так и нужно писать пароль без пробела от параметра. Для параметра -u можно ставить пробел, но для -p нельзя). Далее указывается база, дамп которой мы будем делать, а после неё - место куда будем записывать дамп.  
  
Внимание: логин и пароль чувствительны к регистру. Так что если вы напишите -u Root, а пользователь у вас root, то получите ошибку о том, что не удаётся соединиться с сервером по таким данным.  
  
Если mysql сервер находится не на локальной машине то нужно указывать параметр -h (host). Например если mysql сервер находится на ip 192.168.48.1, то строка будет такой:  
  
192.168.48.1, то строка будет такой: 
  
  
mysqldump -h 192.168.48.1 -u root -p6655 world > C:\world.sql 
  
mysqldump -u root -p6655 --routines world > C:\world.sql Дамп что мы создали будет выглядеть как в TDB. Исключением будет дамп процедур. Чтобы добавить в наш файл дамп процедур нужно добавить параметр --routines.  Пример:  
  
Но и тут нас будет поджидать неприятность. В mysql нету параметра, который бы удалял definer (создатель) у процедуры. Так что для каждой процедуры у нас будет лишняя строка /*!50020 DEFINER=`root`@`localhost`*/. Лишняя она тем, что если конкретно указать кто создал процедуру, то если сменится логин или хост пользователя, то будет писать ошибку о том, что не существует пользователя, который создал эту процедуру. Решением будет просто создать такого пользователя. Но это не особо хорошо.  Для linux можно использовать команду  
  
Для linux можно использовать команду  
  
mysqlsump -u root -p6655 --routines world | sed "s/\/\*[^\/]*DEFINER.*\*\///" > dump.sql Таким образом создастся файл без Definer'ов, но у windows нет команды sed. Только если установить cygwin с sed редактором (инструкцию по установке cygwin и установке "The GNU sed stream editor" писать не буду. Так как придётся использовать cygwin терминал, вместо командной строки. Поищите информацию в гугле, но если сильно нужно, то могу дописать).  
  
 Если нужно сделать дамп всех баз, то нужно добавить параметр -A. Пример:  
  
mysqldump -u root -p6655 -A > C:\world.sql 
  
 Если нужно создать дамп нескольких баз, то нужно использовать параметр -B. Пример:  
  
mysqldump -u root -p6655 -B world characters auth > C:\all.sql (создастся дамп в котором будут данные и структура баз world, characters и auth)  Также можно использовать параметр --tables для дампа определённых таблиц.  
  
 (создастся дамп в котором будут данные и структура баз world, characters и auth)  Также можно использовать параметр --tables для дампа определённых таблиц.  
  
Некоторые интересные параметры для создания дампов:  
  
--no-data "создаётся дамп только структуры базы без её содержимого"  --no-create-info "дамп только данных без создания баз"  --add-locks "добавляет LOCK TABLES перед занесением данных в базу. Ускоряет заливку дампа, но работать с базой будет нельзя пока не выполнится UNLOCK TABLE после занесения всех данных"  -c "с этим параметром будет строится полный INSERT со всеми именами столбцов, а не просто количеством данных, которых ровно достаточно для вставки в таблицу"  --ignore-table=база.имяТаблицы "исключает из дампа определённую таблицу. Например --ignore-table=characters.worldstates (не будет дампить таблицу worldstates из базы characters). Если нужно игнорировать несколько таблиц, то нужно несколько раз использовать этот параметр"  (полный список параметров и их альтернативных названий можно найти в документации к mysql)  
  
Параметры можно комбинировать и использовать вместе.  
  
  
  
2. Заливка дампа в базу.  
  
В принципе заливать можете чем хотите, но самый быстрый способ - через консоль.  
  
Чтобы залить нам нужно использовать второй из файлов о которых мы говорили в начале. Это mysql.exe  Делаем те же действия чтобы попасть в папку с бинарниками, а затем используем команду:  
  
  
mysql -u root -p6655 world < C:\world.sql И мы зальём наш дамп в базу world. Поменялось только направление стрелки. Параметры -u и -p означает тоже самое, что и для mysqldump.  
  
Если же нам хочется наблюдать за процессом заливки чтобы видеть сколько строк было затронуто при выполнение запросов, то делаем так:   
  
D:\webserver\mysql\bin>mysql -u root -p6655  Welcome to the MySQL monitor. Commands end with ; or \g.  Your MySQL connection id is 35  Server version: 5.5.27 MySQL Community Server (GPL)  
  
Copyright © 2000, 2011, Oracle and/or its affiliates. All rights reserved.  
  
Oracle is a registered trademark of Oracle Corporation and/or its  affiliates. Other names may be trademarks of their respective  owners.  
  
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  
  
mysql> use world  Database changed  mysql> \. C:\world.sql 
  
Для начала мы открыли mysql консоль и нам выдали сообщение приветствия, затем переключились на базу world чтобы её использовать, и в конце залили дамп.  \. означало место куда залить (прям сюда), а C:\world.sql - откуда  
  
Примечание: база уже должна быть создана перед заливкой дампа.  
  
 Вот в принципе и всё. Такой способ залития - самый быстрый, а формат создания дампов - самый удобный, наглядный и быстрый, для залития обратно в базу.