Копирование базы данных mysql с локального хоста на удаленный сервер с помощью mysqldump.exe - PullRequest
1 голос
/ 11 мая 2010

Я хочу скопировать базу данных mysql с локального компьютера на удаленный сервер.

Я пытаюсь использовать команду дампа mysql. Все примеры в Интернете предлагают сделать что-то вроде

Начальная mysql> - это просто приглашение, которое я получаю после входа в систему.

mysql> mysqldump -u user -p pass myDBName | NewDBName.out;

Но когда я делаю это, я получаю You have an error in your SQL syntax; check the manual that corresponds ... to use near 'mysqldump -u user -p pass myDBName | NewDBName.out'

Поскольку я уже вошел в систему, нужно ли использовать -u и -p? Не делать это дает мне ту же ошибку. Вы видите, что не так?

Ответы [ 3 ]

2 голосов
/ 11 мая 2010

В дополнение к тому, что сказал Александр, вы, вероятно, не хотите направлять вывод (|) в NewDBName.out, а скорее перенаправить его туда (>).

Так из командной строки Windows / Unix:

mysqldump -u user -p pass myDBName > NewDBName.out

Обратите внимание, что если у вас есть большие двоичные поля (например, BLOBS) в некоторых столбцах, вам может потребоваться установить дополнительную опцию (я думаю, это был --hex-blob, но мог быть и другойвариант тоже).Если это относится к вам, добавьте комментарий, и я изучу настройки.

2 голосов
/ 19 ноября 2010

Мне недавно пришлось сбрасывать большие наборы данных. Из того, что я нашел в 200 МБ базе данных с 10 000+ записями во многих таблицах, является следующее. Я использовал команду linux 'time', чтобы узнать фактическое время.

12 минут, используя: mysqldump -u пользователь -p pass myDBName> db-backups.sql

7 минут для клонирования базы данных: mysqldump -u пользователь -p pass myDBName | mysql -u пользователь -p pass cloneDBName

И менее чем за секунду: mysqlhotcopy -u пользователь -p pass myDBName cloneDBName

Последний из них поразил меня, но вы должны войти в систему локально, где находится сервер базы данных. Лично я думаю, что это намного быстрее, чем удаленно делать дамп, вы можете сжать файл .sql и передать его вручную.

2 голосов
/ 11 мая 2010

mysqldump - это не оператор SQL, который вы выполняете в сеансе mysql, а отдельный двоичный файл, который должен запускаться из вашей оболочки ОС.

Есть несколько способов использовать это. Одним из них является передача вывода mysqldump другому экземпляру MySQL:

echo CREATE DATABASE remote_db | mysql -h remote_host -u remote_user -premote_password
mysqldump -h source_host -u root -ppassword source_db | mysql -h remote_host -u remote_user -premote_password -D remote_db
...