Назад | Перейти на главную страницу

Как загрузить большой файл SQL в MySQL

У меня есть резервная копия базы данных MySQL размером около 250 МБ. Я сделал это с помощью mysqldump

Я пытался загрузить его на другой сервер вот так:

mysql -u xxxx -pxxxx data_mirror < dbdump.sql

Меня не устроил этот процесс, потому что

  1. Это не дало мне никаких отзывов о (длительном) прогрессе
  2. Произошла ошибка с сообщением "Сервер ушел"

Какой метод вы бы порекомендовали для резервного копирования и восстановления большой базы данных MySQL?

Я делаю это на серверах под управлением Windows 7.

Причина, по которой вы получили сообщение «Сервер ушел», заключается в том, что истекло время сеанса терминала. Используйте nohup, чтобы предотвратить прерывание процесса, например:

nohup mysql -u xxxx -pxxxx зеркало_данных <dbdump.sql &

Примечание: амперсанд означает, что процесс выполняется в фоновом режиме. Чтобы отслеживать состояние запущенного процесса, просто следите за созданным файлом nohup.out:

хвост -f nohup.out

С помощью Percona Xtrabackup довольно давно на разных вариантах Linux. К сожалению, для Windows это альфа.

use LOAD DATA INFILE является дополнением SELECT ... INTO OUTFILE. это должно быть намного быстрее, поскольку не требуется синтаксический анализ sql.

Большой бэкап? Я восстановил данные с 10+ ГБ сжатый SQL-дампы ...

Невозможно получить индикатор выполнения из-за очень (нелинейной) природы дампа SQL. И почти нет корреляции между размером дампа и фактическим использованием диска сервером MySQL.

«Сервер ушел», кажется, указывает на то, что что-то разрывает соединение между вашим клиентом mysql и сервером. Либо сервер MySQL разбился (или столкнулся с невыносимой медлительностью), либо проверьте свою сеть, если ваш сервер удален (некоторые брандмауэры болезненны с долгоживущими TCP-соединениями).

Обратите внимание, что использование сжатых дампов SQL выполняется быстрее, поскольку для чтения фактического дампа требуется меньше операций ввода-вывода. Например:

mysqldump the_db | gzip > the_db.sql.gz  # backup
zcat the_db.sql.gz | mysql the_db        # restore