Как правильно и быстро перенести БД MySQL с одного сервера на другой
Есть база данных MySQL: сотня таблиц (InnoDB и MyISAM), 30 миллионов записей, 5 Гб.
Как правильно и быстро перенести эту базу с одного сервера на другой?
На старом сервере MySQL 5.0.51a, на новом 5.1.56.
Можно ли просто скопировать файлы? Или лучший стандартный вариант — mysqldump?
Если нет возможности «остановки» сервера БД на время переноса, можно попробовать реплицировать, в случае mysqldump есть вероятность, что перенесенная БД не будет полностью актуальной.
В случае InnoDB необходимо скопировать:
— все файлы .frm таблиц InnoDB;
— все файлы журналов InnoDB;
— все конфигурации MySQL относительно InnoDB;
При этом, если у нас в этих таблицах есть числа с плавающей точкой, и настройки плавающей точки изначального сервера различаются с настройками конечного, то простое копирование данных не возможно.
Сначала надо читать документацию, а только потом советовать всем копировать таблицы InnoDB.
Останавливаем сервера ночью и делаем mysqldump :)
После переезда встал вопрос оптимизации процесса создания бэкапов. Подскажите, в какую сторону смотреть. Второго сервера нет. Нужен варианта создания бэкапа в пределах одного MySQL сервера.
если myisam то перкона не перкона, без лока никак не получиться, правильнее бекап снимать с реплики, таки образом мы никак не нагружаем нашего мастера и не прерываем его работу
C Mysqldump может очень долго разворачиваться база.
рекомендую innobackupex от www.percona.com. Работает гораздо более эффективно, чем нативный mysqldump