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

Резервное копирование и восстановление базы данных MySQL без доступа к системе

Я пытаюсь переместить базу данных от одного провайдера к другому, проблема в том, что у меня нет доступа к системе с обоих концов (т.е. нет ssh), поэтому я не могу использовать mysqldump.

Я уже пробовал использовать MySQL Administrator, резервное копирование заняло около 45 минут, но когда дело дошло до восстановления, оно двигалось со скоростью улитки и составляло более 12 часов. Это живое приложение, поэтому мне нужно свести время простоя к минимуму.

База данных состоит из 35 таблиц, смеси MyISAM и InnoDB, всего около 4,4 ГБ. И исходная, и целевая базы данных работают на очень мощных серверах.

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

Спасибо

Некоторые старые приемы массовой загрузки данных (которые работают практически для любой базы данных на основе SQL с расширенными функциями, такими как транзакции, UDF и триггеры):

  1. Если ваш механизм загрузки позволяет это, сверните ваши таблицы InnoDB в гигантские транзакции на 1000 записей. Одновременная разноска создает большие накладные расходы на транзакции, но одновременная разноска 1000 записей делает накладные расходы незначительными.
  2. Если у вас есть поддержка триггеров, отключите триггеры в процессе загрузки.
  3. Отключите ограничения перед загрузкой и примените их после загрузки. Это включает индексы, их удаление и восстановление индексов после загрузки данных. Накладные расходы на поддержку индексов во время массовой загрузки данных значительно замедлят работу.

Новые версии MySQL допускают репликацию; вы всегда можете реплицировать данные на другой компьютер, а затем, когда репликация будет завершена, переключите приложение так, чтобы оно указывало на новый компьютер, и выключите репликацию.

Можете ли вы выполнить запрос к исходной базе данных из новой? Если это так, создайте сценарий (можно даже запустить PHP как веб-страницу без вывода), чтобы забрать данные с исходного сервера и передать их на новый, исключив промежуточную систему.

Если можете, поместите содержимое таблицы в CSV или разделите табуляцией и используйте 'ЗАГРУЗИТЬ ДАННЫЕ'команда - обычно много быстрее для массовой загрузки данных, чем для отдельных вставок.