Задавайте вопросы, мы ответим
Вы не зашли.
Сервер на Debian.
Понадобилось быстро копировать таблицы объемом 5-12Гб.
Для таблицы в MyISAM просто копирую файлы frm, MYI и MYD. А у таблиц в InnoDB вижу только frm.
А где сами данные?
Неактивен
В файлах ibdata* и ib_logfile*, если не выбрана опция file per table. Не забудьте перенести относящуюся к Innodb конфигурацию из my.cnf
Неактивен
rgbeast написал:
В файлах ibdata* и ib_logfile*, если не выбрана опция file per table. Не забудьте перенести относящуюся к Innodb конфигурацию из my.cnf
Оппа.... В одном файле все таблицы....
А как тогда сделать следующее, есть таблицы logs и pages, нужно что б в той же базе появились logs_tmp и pages_tmp?
Как в таком случае их копировать, если все данные в одном файле?
Неактивен
В исходной постановке вопроса этого сделать нельзя. Я советую перейти на file per table. Для этого нужно:
1. В my.cnf добавить строчку
innodb_file_per_table
(см. http://dev.mysql.com/doc/refman/5.0/en/ … paces.html )
2. Перезапустить сервер mysql
3. Пересоздать таблицы (все старые таблицы останутся в общем хранилище, все новые будут помещены в отдельные файлы)
Неактивен
rgbeast написал:
В исходной постановке вопроса этого сделать нельзя. Я советую перейти на file per table. Для этого нужно:
1. В my.cnf добавить строчку
innodb_file_per_table
(см. http://dev.mysql.com/doc/refman/5.0/en/ … paces.html )
2. Перезапустить сервер mysql
3. Пересоздать таблицы (все старые таблицы останутся в общем хранилище, все новые будут помещены в отдельные файлы)ALTER TABLE `my_table` ENGINE=Innodb;
Премного благодарен! Помогло.
Неактивен
Нет. Не совсем помогло. ФАйлы то скопировались, но новые таблицы в базе не появились. Только в MyISAM.
Те которые в InnoDB, как то подключить еще надо?
Притом, скажем, запрос
RENAME TABLE index_5.links TO index_5.links_tmp;
не выполняется, пишет что links_tmp уже существует (#1050 - Table 'links_tmp' already exists), но phpMyAdmin её не видит и запрос SELECT COUNT(*) FROM links_tmp; выдаёт (#1146 - Table 'index_5.links_tmp' doesn't exist).
Неактивен
Не надо руками ничего делать в каталоге с БД, тогда не будет проблем
Конкретно по проблеме — скорее всего, Вы скопировали .frm в links_tmp.frm,
но реально данных нету. Поэтому при rename происходит ошибка «табличка
уже есть» (т.е. какая-то часть таблички есть, и поэтому перезаписывать не
буду). А когда пытаетесь выбрать из нее данные — получаете ошибку «таблички
нет» (т.е. полного набора данных по таблице нету).
Соответственно, нужно удалить то, что сделано руками, и после этого сделать
уже с помощью СУБД.
Неактивен
paulus написал:
Не надо руками ничего делать в каталоге с БД, тогда не будет проблем
Конкретно по проблеме — скорее всего, Вы скопировали .frm в links_tmp.frm,
но реально данных нету. Поэтому при rename происходит ошибка «табличка
уже есть» (т.е. какая-то часть таблички есть, и поэтому перезаписывать не
буду). А когда пытаетесь выбрать из нее данные — получаете ошибку «таблички
нет» (т.е. полного набора данных по таблице нету).
Соответственно, нужно удалить то, что сделано руками, и после этого сделать
уже с помощью СУБД.
С помощью СУБД очень долго копируется 25Гб данных. Не знаю, как по другому ускорить, кроме как копировать по-файлово.
А реальные данные в файле .ibd тоже были скопированы в links_tmp.ibd.
Неактивен
Угу. Но с помощью СУБД будучи скопированные, они работают, а вручную — нет.
ibd не спасет сам по себе. Каждый ibd-файлик — это кусочек tablespace. Не
самостоятельный файлик с данными, а именно кусочек целого. В общем ibdata
прописаны пути ко всем кусочкам (а к скопированным вручную таких путей не
прописано), каждый кусочек имеет свои внутренние чиселки. В общем, никаких
других путей к отступлению нету — только через СУБД.
Неактивен
paulus написал:
Угу. Но с помощью СУБД будучи скопированные, они работают, а вручную — нет.
ibd не спасет сам по себе. Каждый ibd-файлик — это кусочек tablespace. Не
самостоятельный файлик с данными, а именно кусочек целого. В общем ibdata
прописаны пути ко всем кусочкам (а к скопированным вручную таких путей не
прописано), каждый кусочек имеет свои внутренние чиселки. В общем, никаких
других путей к отступлению нету — только через СУБД.
И нет команд, что б эти пути прописать?
Неактивен
Можете поиграть с IMPORT TABLESPACE, но они предназначены для других целей,
я боюсь, что не заработает.
Неактивен
paulus написал:
Можете поиграть с IMPORT TABLESPACE, но они предназначены для других целей,
я боюсь, что не заработает.
Да, не работает. Уже попробовал.
Неактивен