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

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

Я пытаюсь установить подчиненный сервер MySQL на другом континенте. У меня недостаточно места на новом сервере для всей базы данных, содержащейся на главном сервере. Поэтому я пытаюсь запустить этот сервер без трех крупнейших баз данных. Как только я заработаю сервер, я намерен отказаться от этих трех баз данных.

БД активно использует InnoDB с innodb-file-per-table option, так что это не один ibdata1 файл табличного пространства.

Я попытался скопировать каталог данных без каталогов для трех очень больших баз данных. Это не сработало, потому что не удалось загрузить табличное пространство innodb для таблиц в базах данных, которые я не копировал.

Затем я скопировал остальные файлы, но с помощью dd скопировал только первые 100 МБ каждого файла. .ibd файл в этих трех каталогах вместо много гигабайты, которые содержат файлы на главном сервере. С опцией восстановления innodb я могу Начало MySQL, но я не могу удалить таблицы или базы данных в этот момент.

Как я могу успешно запустить это ведомое устройство без трех больших баз данных, чтобы я мог запустить репликацию для подмножества оставшихся таблиц?

Использовать mysqldump для экспорта баз данных, а затем использовать mysql для восстановления дампов на удаленном сервере. mysqldump дампирует отдельные базы данных, так что вы можете свободно выбирать, какие базы данных выгрузить.

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

Если пространство является важной проблемой, возможно, NFS поможет избежать этой проблемы.

Сочетать с Частичные резервные копии (необходимо innodb-file-per-table включен, что вы уже сделали), вы можете просто скопировать эти большие базы данных InnoDB на другой подчиненный сервер.

использовать mysqldump -u root -p --all-databases > alldb.sql чтобы сбросить все БД, затем скопируйте alldb.sql файл на удаленный сервер. Снова восстановить БД с помощью команды mysql -u root -p < alldb.sql.