|
Как получить список таблиц в ibdata1 ?
|
|||
---|---|---|---|
#18+
С наступающим! В порядке реорганизации понадобилось целиком перенести СУБД MySQL 5.6 с одного сервера на другой. Версия сохраняется, тупо скопировать файлы таблиц не проблема. Однако, на исходном сервере в конфиге установлена опция innodb_file_per_table=1 (новые таблицы действительно по отдельным файлам живут), а вот общий файл ibdata1 весит дофига гигабайт. Видимо, он "набрал вес" до установки вышеуказанной опции. Вместе с тем, за время жизни сервера базы многократно удалялись и добавлялись, а отследить историю не представляется возможным. Так что, не факт, что в ibdata1 остались какие-то нужные таблицы. Пустой или почти пустой файл тащить на новое место "на всякий случай" не хочется совсем. Вопрос простой. Как получить список таблиц, живущих в этом файле? При наличии такого списка кажется проще перенести отдельные таблицы через дамп и освободиться от монстрика. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2018, 22:04 |
|
Как получить список таблиц в ibdata1 ?
|
|||
---|---|---|---|
#18+
vkle, По идее, INFORMATION_SCHEMA.INNODB_SYS_TABLES + INFORMATION_SCHEMA.INNODB_SYS_DATAFILES должно помочь. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2018, 00:17 |
|
Как получить список таблиц в ibdata1 ?
|
|||
---|---|---|---|
#18+
miksoft, Благодарю за подсказку, про системные таблицы не подумал сразу. Теперь вот озадачен результатом теста. Запрос Код: sql 1.
вернул ноль строк. Насколько понимаю, это говорит о том, что пользовательских таблиц в 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.
и получаю: Код: plaintext 1. 2. 3. 4.
По совокупности с первой проверкой выходит, что только лишь эти четыре системные таблицы движка InnoDB в ibdata1 живут. Все эти четыре системные содержат данные о таблицах рабочих баз. Их как-то безболезненно можно оттуда убрать и загнать в отдельные *.ibd? Например, сделав им OPTIMIZE TABLE. Или руками туда лазить категорически не рекомендуется? Или, может, их можно как-то отдельно скопировать, не нарушив при этом целостность рабочих баз? PS: Накрайняк, еженощные бекапы всех баз сервера имеются :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2018, 01:28 |
|
Как получить список таблиц в ibdata1 ?
|
|||
---|---|---|---|
#18+
Хотя... они же все TEMPORARY TABLE. Ладно, попробуем без них запустить. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2018, 13:35 |
|
Как получить список таблиц в ibdata1 ?
|
|||
---|---|---|---|
#18+
В общем, затея глупой оказалась. Файликами, конечно, усё скопировалось быстро получилось. Но вот восстановить информацию о расположении таблиц в INFORMATION_SСHEMA - не самая простая задача и сходу найти решение не удалось. В общем, тут штатные средства проще использовать. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2018, 16:01 |
|
Как получить список таблиц в ibdata1 ?
|
|||
---|---|---|---|
#18+
vkleНо вот восстановить информацию о расположении таблиц в INFORMATION_SСHEMA - не самая простая задача и сходу найти решение не удалось.Да вот мне тоже казалось, что эти таблицы только для чтения и просто так не двигаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2018, 17:39 |
|
Как получить список таблиц в ibdata1 ?
|
|||
---|---|---|---|
#18+
miksoft, Видимо, так и есть. Вернее, в эти таблицы имеет право писать только сам движок InnoDB. Однако, любопытно, есть ли у InnoDB какой-то способ найти или распознать пользовательские базы/таблицы? Для MyISAM, в принципе, достаточно положить файлы в датадир и при запуске сервера движок их подхватит. Может, InnoDB надо что-то сказать, чтобы подхватил, или только CREATE TABLE с последующей подменой файлов без вариантов? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2018, 10:39 |
|
Как получить список таблиц в ibdata1 ?
|
|||
---|---|---|---|
#18+
vkleОднако, любопытно, есть ли у InnoDB какой-то способ найти или распознать пользовательские базы/таблицы? Для MyISAM, в принципе, достаточно положить файлы в датадир и при запуске сервера движок их подхватит. Может, InnoDB надо что-то сказать, чтобы подхватил, или только CREATE TABLE с последующей подменой файлов без вариантов? https://dev.mysql.com/doc/refman/8.0/en/innodb-migration.html ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2018, 13:09 |
|
|
start [/forum/topic.php?fid=47&fpage=41&tid=1829385]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 168ms |
0 / 0 |