Клонировать базу данных в MySQL

Он клонировал базу данных в MySQL посредством следующей команды:

$user@host: mysqldump -u root -p MyOriginalDatabase | mysql -u root -p MyDatabaseCopy

И output был следующим:

Enter password: Enter password:

Я ввел пароль в компьютер и он остался в выполнении этого, не задерживаясь или показывая результата, однако, меня произвела копия правильно а следовательно я закончил тем, что отменил выполнение с прерыванием посредством клавиатуры (ctrl + c)

Я попробовал делать другую копию с той же командой только меняя имя копии:

$user@host: mysqldump -u root -p MyOriginalDatabase | mysql -u root -p MyDatabaseCopy2

Однако меня произвела следующая ошибка:

ОШИБКА 1049 (42000): Unknown был датирован 'MyDatabaseCopy2'

Никогда он не закончил выполнение и также меня не скопировала правильно база данных.

  • Почему функционировал правильно первый раз и потом не?
  • Почему никогда не закончилось выполнение в обоих случаях?
  • Какова форма самая оптимальная и рекомендуемая, чтобы клонировать базу данных в MySQL?
1
задан 16.01.2017, 23:02
0 ответов

Важная точка состоит в том, что, как дела используя pipeline, может не быть возможным читать STDIN пароль в сервер. Ты можешь включать ее прямо в призыв к команде:

$ mysql -u root -pTuPassword 

Важно: Нет места между выбором -p и пароль. Ты можешь делать то же самое в выборе -p mysqldump.

Если ты хочешь клонировать базу данных на том же сервере, из которого ты извлекаешь ее, ты должен создавать заблаговременно конечную базу данных.

В CLI MySQL:

mysql> create database MyDatabaseCopy;

Как только была создана база данных, ты можешь выполнять mysqldump:

$ mysqldump -u root -pTuPassword MyOriginalDatabase | mysql -u root -pTuPassword MyDatabaseCopy

Если ты будешь клонировать твою базу данных на другом сервере, тогда ты можешь использовать pipeline; только убедись включения выбора --DATABASES в вызове в mysqldump:

$ mysqldump -h hostOrigen -u root -pTuPassword --databases MyOriginalDatabase | mysql -h hostDestino -u root -pTuPassword

Важно: Если ты это сделаешь, имя базы данных в конечном host будет равно как в исходном host.

Если ты хочешь протестировать, что команда функционирует правильно, но не хочешь надеяться на то, что он становится dump всей базы данных, ты можешь использовать выбор --no-data (или -d) чтобы создавать dump, который содержал бы только структуру, не включая данных о каждой таблице:

$mysqldump -h hostOrigen -u root -pTuPassword -d --databases MyOriginalDatabase > pruebaDump.sql

Помни что включи соответствующие выборы, выполнив mysqldump. Например, если у базы данных есть процедуры или функции, хранившиеся, ты должен добавлять выбор -R для того, чтобы эти включились в dump.

3
ответ дан 03.12.2019, 17:39

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

Когда ты захотел клонировать ее из-за секунды, ты видишь, не существовала база данных, в которую клонировать, поэтому показывает тебе ошибку, не найдя базу данных "MyDatabaseCopy2".... перед тем, как мочь клонировать ее, ты должен создавать базу данных, чтобы позже клонировать ее успешно....

Есть различные способы, которые ты могут функционировать добро, прицел, я перемещаю тебя шаги, чтобы реализовывать процесс, который ты желаешь... (Я это получил от шрифта Интернета)

Первое, что мы должны делать, состоит в том, чтобы реализовывать корзину базы данных в файл:

mysqldump -u nombre_usuario -p nombre_base_datos > nombre_fichero_volcado

Второе будет состоять в том, чтобы инициализировать сеанс на сервере MySQL с нашим клиентом:

mysql -u nombre_usuario -p

Внутри сервера давайте верить в базу данных:

CREATE DATABASE nombre_base_datos_copia;

Мы выходим из клиента:

exit

Уже мы можем копировать корзину в только что созданную базу данных:

mysql -u nombre_usuario -p nombre_base-datos_copia < volcado
1
ответ дан 03.12.2019, 17:39