Я пытаюсь установить подчиненный сервер MySQL на другом континенте. У меня недостаточно места на новом сервере для всей базы данных, содержащейся на главном сервере. Поэтому я пытаюсь запустить этот сервер без трех крупнейших баз данных. Как только я заработаю сервер, я намерен отказаться от этих трех баз данных.
БД активно использует InnoDB с опцией innodb-file-per-table
, так что это не один ibdata1
файл табличного пространства.
Я попытался скопировать каталог данных без каталогов для трех очень больших баз данных. Это не сработало, потому что не удалось загрузить табличное пространство innodb для таблиц в базах данных, которые я не копировал.
Затем я скопировал остальные файлы, но использовал dd для копирования только первых 100 МБ из каждый .ibd
файл в этих трех каталогах вместо многих гигабайт, содержащихся в файлах на главном сервере. С опцией восстановления innodb, Я могу запустить MySQL, но я не могу отбросить таблицы или базы данных в этот момент.
Как я могу успешно запустить это подчиненное устройство без трех больших баз данных, чтобы я мог запустить репликацию подмножество остальных таблиц?
Используйте mysqldump
для экспорта баз данных, а затем используйте mysql
для восстановления дампов на удаленном сервере. mysqldump
дампирует отдельные базы данных, поэтому вы можете свободно выбирать, какие базы данных нужно дампировать.
Не очень хорошая идея пытаться взломать реальные файлы баз данных, не зная точной внутренней реализации файлов.
. используйте mysqldump -u root -p --all-databases > alldb.sql
для сброса всех db, затем скопируйте файл alldb.sql
на удаленный сервер. Снова восстановите db с помощью команды mysql -u root -p < alldb.sql
.
Если проблема с пространством является важной, возможно, NFS сможет избежать этой проблемы.
В сочетании с Частичным резервным копированием (нужно включить innodb-file-per-table
, что вы уже сделали), вы можете просто скопировать эти большие базы данных InnoDB на другой slave-сервер.