MariaDB - онлайн перемещение/архивирование таблиц

У нас есть скрипт, который «вращает»/архивирует таблицы Syslog в MySQL. Этот скрипт:

  • на уровне Linux переименовывает файлы таблиц "MyISAM", затем сжимает их, а затем
  • внутри MySQL переименуйте эти таблицы

2 шага "онлайн". Перезапуск MySQLd не требуется.

Теперь я создал новую базу данных Syslog в MariaDB (Debian Stretch). Таблицы используют InnoDB, а не MyISAM. Этот скрипт не может при втором выполнении переименовать таблицу внутри MySQL после перемещения файла:

ОШИБКА 1050 (42S01): таблица SystemEvents_1 уже существует

Ссылка на таблицу где-то хранится (внутренняя системная таблица табличного пространства?), что не позволяет этого сделать.

Мой вопрос: будет ли работать, если я перенесу свои таблицы в движок ARIA с транзакцией = 0?

Спасибо, Винс


person Vince    schedule 29.11.2017    source источник
comment
Насколько я понимаю, и поскольку innoDB не использует файл для каждой таблицы (если не включен innodb_file_per_table), вы не можете делать то же самое, что и с MyISAM...   -  person Hackerman    schedule 29.11.2017
comment
спасибо @Hackerman. Я собираюсь посмотреть на опцию innodb_file_per_table. Мое общее мнение состоит в том, что я должен оставаться с InnoDB, даже если потеря системного журнала с движком MyISAM/aria не будет иметь большого значения...   -  person Vince    schedule 29.11.2017
comment
И я думаю, что даже включив эту опцию, innoDB по-прежнему будет использовать файл ibdata1... Я предлагаю вам прочитать эти вопросы и ответы с сайта dba dba.stackexchange.com/questions/15531/   -  person Hackerman    schedule 29.11.2017
comment
Спасибо за ссылку. Эта опция, по-видимому, включена по умолчанию в MariaDB. Я не вижу никакого файла ibdata1, кроме файлов таблиц SystemEvents и SystemEventsProperties.   -  person Vince    schedule 29.11.2017


Ответы (1)


Я думаю, что это уже невозможно. Я преобразовал свои таблицы в MyISAM (и даже в Aria с транзакцией = 0) и получил такое же сообщение об ошибке. Я думаю, что лучше всего использовать mysqldump для экспорта таблиц вместо прямого переименования файлов файловой системы. Менее удобно, но mysqldump всегда будет работать независимо от выбранного движка.

person Vince    schedule 01.12.2017