Я пытаюсь установить подчиненный сервер 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
.