Импорт базы данных MySQL с одного сервера на другой
У меня есть два выделенных сервера с корневым доступом. Оба работают под управлением Linux. Я хочу импортировать базу данных с Server1 на Server2. Я уже создал пустую базу данных на Server2.
Я хочу знать команду Linux, через которую я могу напрямую импортировать базу данных? Есть ли такая особенность? Могу ли я использовать mysqldump? Я хочу сначала не брать резервную копию базы данных на сервере1, а затем перемещать этот файл на server2, а затем импортировать этот файл.
Может ли импорт быть выполнен непосредственно с помощью некоторой команды?
Спасибо
Ответы
Ответ 1
Если вы хотите избежать создания файла, его переноса и загрузки, вы можете просто подключить mysqldump либо к mysql, запущенному на другом сервере, либо к mysql ssh на другом сервере.
Использование mysql для подключения к удаленному ящику:
mysqldump --all-databases | mysql -h yourserver.com
Использование ssh для подключения к другому серверу
mysqldump --all-databases | ssh [email protected] mysql
Используйте mysqldump -all-databases для передачи их всех или просто укажите имена баз данных. Подробнее см. В документации mysqldump.
Вы также можете использовать функцию "Replication" MySQL, хотя для настройки потребуется немного больше времени, и это довольно сложно. Вероятно, не стоит все время и проблемы только для одной миграции.
Ответ 2
Остановите mysqld на первом сервере, скопируйте каталог данных (обычно/var/lib/mysql) с сервера 1 на сервер 2, запустите mysqld на втором сервере и теперь он будет идентичен первому.
Вам не нужно использовать инструменты импорта/экспорта, если вы можете остановить сервер во время копирования файлов данных. Особенно, если вы можете сжать файлы перед их копированием, это будет самый быстрый способ.
Ответ 3
mysqldump –add-drop-table –extended-insert –force –log-error=error.log -uUSER -pPASS OLD_DB_NAME | ssh -C [email protected] "mysql -uUSER -pPASS NEW_DB_NAME"
Сбрасывает базу данных MySQL через сжатый SSH-туннель и использует его в качестве входа в mysql
источник