powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как получить список таблиц в ibdata1 ?
8 сообщений из 8, страница 1 из 1
Как получить список таблиц в ibdata1 ?
    #39754727
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С наступающим!

В порядке реорганизации понадобилось целиком перенести СУБД MySQL 5.6 с одного сервера на другой. Версия сохраняется, тупо скопировать файлы таблиц не проблема.

Однако, на исходном сервере в конфиге установлена опция innodb_file_per_table=1 (новые таблицы действительно по отдельным файлам живут), а вот общий файл ibdata1 весит дофига гигабайт. Видимо, он "набрал вес" до установки вышеуказанной опции. Вместе с тем, за время жизни сервера базы многократно удалялись и добавлялись, а отследить историю не представляется возможным. Так что, не факт, что в ibdata1 остались какие-то нужные таблицы. Пустой или почти пустой файл тащить на новое место "на всякий случай" не хочется совсем.

Вопрос простой. Как получить список таблиц, живущих в этом файле?
При наличии такого списка кажется проще перенести отдельные таблицы через дамп и освободиться от монстрика.
...
Рейтинг: 0 / 0
Как получить список таблиц в ibdata1 ?
    #39754760
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как получить список таблиц в ibdata1 ?
    #39754768
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

Благодарю за подсказку, про системные таблицы не подумал сразу. Теперь вот озадачен результатом теста.

Запрос
Код: sql
1.
SELECT * FROM `INNODB_SYS_DATAFILES` WHERE `PATH` LIKE '%ibdata1%'

вернул ноль строк. Насколько понимаю, это говорит о том, что пользовательских таблиц в ibdata1 нет. Отлично!

Теперь системные таблицы. В мануале говорится https://dev.mysql.com/doc/refman/5.6/en/innodb-sys-tables-table.html SPACE

An identifier for the tablespace where the table resides. 0 means the InnoDB system tablespace . Any other number represents a table created in file-per-table mode with a separate .ibd file.
Идентификатор "0", получается, это и есть ibdata1, если правильно понимаю.

Ладно, делаю запрос
Код: sql
1.
SELECT * FROM `INNODB_SYS_TABLES` WHERE `SPACE` = 0 

и получаю:
Код: plaintext
1.
2.
3.
4.
TABLE_ID	 NAME 	        FLAG	N_COLS	SPACE	FILE_FORMAT	ROW_FORMAT	ZIP_PAGE_SIZE 	
14 	SYS_DATAFILES 	        0 	5 	0 	Antelope 	Redundant 	0
11 	SYS_FOREIGN 	        0 	7 	0 	Antelope 	Redundant 	0
12 	SYS_FOREIGN_COLS 	0 	7 	0 	Antelope 	Redundant 	0
13 	SYS_TABLESPACES 	0 	6 	0 	Antelope 	Redundant 	0

По совокупности с первой проверкой выходит, что только лишь эти четыре системные таблицы движка InnoDB в ibdata1 живут. Все эти четыре системные содержат данные о таблицах рабочих баз.

Их как-то безболезненно можно оттуда убрать и загнать в отдельные *.ibd? Например, сделав им OPTIMIZE TABLE. Или руками туда лазить категорически не рекомендуется? Или, может, их можно как-то отдельно скопировать, не нарушив при этом целостность рабочих баз?

PS: Накрайняк, еженощные бекапы всех баз сервера имеются :)
...
Рейтинг: 0 / 0
Как получить список таблиц в ibdata1 ?
    #39754920
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя... они же все TEMPORARY TABLE. Ладно, попробуем без них запустить. :)
...
Рейтинг: 0 / 0
Как получить список таблиц в ibdata1 ?
    #39754996
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, затея глупой оказалась. Файликами, конечно, усё скопировалось быстро получилось. Но вот восстановить информацию о расположении таблиц в INFORMATION_SСHEMA - не самая простая задача и сходу найти решение не удалось.
В общем, тут штатные средства проще использовать. :)
...
Рейтинг: 0 / 0
Как получить список таблиц в ibdata1 ?
    #39755012
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleНо вот восстановить информацию о расположении таблиц в INFORMATION_SСHEMA - не самая простая задача и сходу найти решение не удалось.Да вот мне тоже казалось, что эти таблицы только для чтения и просто так не двигаются.
...
Рейтинг: 0 / 0
Как получить список таблиц в ibdata1 ?
    #39755260
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

Видимо, так и есть. Вернее, в эти таблицы имеет право писать только сам движок InnoDB.
Однако, любопытно, есть ли у InnoDB какой-то способ найти или распознать пользовательские базы/таблицы? Для MyISAM, в принципе, достаточно положить файлы в датадир и при запуске сервера движок их подхватит. Может, InnoDB надо что-то сказать, чтобы подхватил, или только CREATE TABLE с последующей подменой файлов без вариантов?
...
Рейтинг: 0 / 0
Как получить список таблиц в ibdata1 ?
    #39755269
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleОднако, любопытно, есть ли у InnoDB какой-то способ найти или распознать пользовательские базы/таблицы? Для MyISAM, в принципе, достаточно положить файлы в датадир и при запуске сервера движок их подхватит. Может, InnoDB надо что-то сказать, чтобы подхватил, или только CREATE TABLE с последующей подменой файлов без вариантов? https://dev.mysql.com/doc/refman/8.0/en/innodb-migration.html
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как получить список таблиц в ibdata1 ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]