Я клонировал базу данных, MySQL
используя следующую команду:
$user@host: mysqldump -u root -p MyOriginalDatabase | mysql -u root -p MyDatabaseCopy
И на выходе было следующее:
Введите пароль: Введите пароль:
Я ввел пароль, и он остался в выполнении этого, не останавливаясь и не показывая результат, однако он правильно сгенерировал копию , поэтому в итоге я отменил выполнение с прерыванием клавиатуры ( ctrl + c )
Я попытался сделать еще одну копию той же командой, просто изменив имя копии:
$user@host: mysqldump -u root -p MyOriginalDatabase | mysql -u root -p MyDatabaseCopy2
Однако это дало мне следующую ошибку:
ОШИБКА 1049 (42000): Неизвестная база данных «MyDatabaseCopy2»
Он так и не завершил выполнение и не скопировал базу данных правильно.
- Почему в первый раз сработало правильно, а потом нет?
- Почему в обоих случаях казнь так и не закончилась?
- Каков наиболее оптимальный и рекомендуемый способ клонирования базы данных в
MySQL
?
Важным моментом является то, что, поскольку вы используете конвейер , может быть невозможно прочитать
STDIN
пароль на сервере. Вы можете включить его прямо в вызов команды:Важно:
-p
между опцией и паролем нет пробелов . Вы можете сделать то же самое в опции-p
.mysqldump
Если вы хотите клонировать базу данных на тот же сервер, с которого вы ее извлекаете, вы должны сначала создать целевую базу данных.
В интерфейсе командной строки MySQL:
После создания базы данных вы можете запустить
mysqldump
:Если вы собираетесь клонировать свою базу данных на другой сервер, вы можете использовать конвейер ; просто не забудьте включить опцию
--DATABASES
в вызовmysqldump
:Важно: Если вы сделаете это, имя базы данных на целевом хосте будет таким же, как и на исходном хосте.
Если вы хотите проверить правильность работы команды, но не хотите дожидаться дампа всей базы данных, вы можете использовать опцию
--no-data
(o-d
), чтобы создать дамп, который содержит только структуру, не включая данные для каждая таблица. :Не забудьте включить соответствующие параметры при запуске
mysqldump
. Например, если в базе данных есть хранимые процедуры или функции, необходимо добавить параметр-R
, чтобы они были включены в дамп.Когда он был пустым, это было потому, что он клонировался, в зависимости от размера базы данных, которую вы хотите клонировать, это время, необходимое для завершения процесса.
Когда вы хотели клонировать его во второй раз, не было базы данных для клонирования, поэтому выдает ошибку, не находя базу данных "MyDatabaseCopy2"... прежде чем вы сможете ее клонировать, вы должны создать базу данных, чтобы затем клонировать это успешно....
Есть разные способы, которые могут хорошо сработать для вас, смотрите, я дам вам несколько шагов, чтобы выполнить процесс, который вы хотите... (Я взял это из интернет-источника)
Первое, что нам нужно сделать, это сбросить базу данных в файл:
Во-вторых, войдите на сервер MySQL с помощью нашего клиента:
Внутри сервера мы создаем базу данных:
Выходим из клиента:
Теперь мы можем скопировать дамп во вновь созданную базу данных: