![]()  | 
		
Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день , прошу помочь. 
mysql  Ver 15.1 Distrib 10.1.14-MariaDB galera cluster
Ситуация такая:
Раз в месяц делается партицырование большой таблицы. Так вот последнее партицирование завершилось не удачно из-за нехватки места на диске. И в папке mysql соотвецтвенно остались временные таблицы которые я не могу удалить. Как можно победить такую проблему ??
Вот делал по этому мануалу  https://dev.mysql.com/doc/refman/5.6/en … adict.html но получил ошибку ERROR 1030 (HY000): Got error 1 "Operation not permitted" from storage engine partition
Как можно коректно удалить эти таблицы ? Они заняли очень много места а его кретически не хватает.
Неактивен

Можете написать полный текст ошибки?
И покажите, пожалуйста, список файлов внутри базы. Конкретно интересуют файлы, названия которых начинаются с символа #.
Неактивен
Добрый день.
Вот список файлов 
 #sql-58cb_5db16b.frm
 #sql-58cb_5db16b.par
#sql-ib372-102994894.ibd
 #sql-ib373-102994895.ibd
#sql-ib374-102994896.ibd
 #sql-ib375-102994897.ibd
#sql-ib376-102994898.ibd
#sql-ib377-102994899.ibd
#sql-ib378-102994900.ibd
 #sql-ib379-102994901.ibd
#sql-ib380-102994902.ibd
 #sql-ib381-102994903.ibd
 #sql-ib382-102994904.ibd
#sql-ib388-102994905.ibd
#sql-ib416-102994906.ibd
 #sql-ib426-102994907.ibd
#sql-ib428-102994908.ibd
Делаю mv #sql-58cb_5db16b.frm #sql-ib87-856498050
Захожу в mysql и
DROP TABLE `#mysql50##sql-ib87-856498050`;
ERROR 1030 (HY000): Got error 1 "Operation not permitted" from storage engine partition
Больше ошибок не выдает.
Отредактированно Dimashu (03.11.2016 15:13:02)
Неактивен

А откуда Вы берете второе имя? ib87-856498050?
Тут, скорее, я бы делал
Неактивен
Не помагает. Дело в том что это одна таблица, как я понимаю ее временное имя #sql-58cb_5db16b.frm. Остальное это ее партиции.
Делаю как вы написали mv '#sql-58cb_5db16b.par' '#sql-58cb_5db16b.ibd' и получаю:
 drop table `#mysql50##sql-58cb_5db16b`;
ERROR 1051 (42S02): Unknown table 'mydb.#mysql50##sql-58cb_5db16b'
Если я все верно понял из мануала mysql, нужно просто ее пепреименовать в любое другое имя. Но в результате ошибка:
ERROR 1030 (HY000): Got error 1 "Operation not permitted" from storage engine partition
Отредактированно Dimashu (11.11.2016 12:01:04)
Неактивен

В мануале написано не про любое другое имя, там имя делается такое, чтобы совпадали названия у файликов frm и ibd. В Вашем случае они сейчас совпадают?
Неактивен
Сори что туплю , но я не совсем понимаю. 
Вот весь список который есть и его нужно удалить: 
#sql-58cb_5db16b.frm
#sql-58cb_5db16b.par
#sql-ib372-102994894.ibd
#sql-ib373-102994895.ibd
#sql-ib374-102994896.ibd
#sql-ib375-102994897.ibd
#sql-ib376-102994898.ibd
#sql-ib377-102994899.ibd
#sql-ib378-102994900.ibd
#sql-ib379-102994901.ibd
#sql-ib380-102994902.ibd
#sql-ib381-102994903.ibd
#sql-ib382-102994904.ibd
#sql-ib388-102994905.ibd
#sql-ib416-102994906.ibd
#sql-ib426-102994907.ibd
#sql-ib428-102994908.ibd
Тут есть один fpm и куча ibd файлов. 
Вот что мускул показывает: 
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE '%#sql%';
+----------+--------------------------------+------+--------+-------+-------------+------------+---------------+
| TABLE_ID | NAME                           | FLAG | N_COLS | SPACE | FILE_FORMAT | ROW_FORMAT | ZIP_PAGE_SIZE |
+----------+--------------------------------+------+--------+-------+-------------+------------+---------------+
|      429 | mydb/#sql-ib372-102994894 |    1 |     12 |   415 | Antelope    | Compact    |             0 |
|      430 | mydb/#sql-ib373-102994895 |    1 |     12 |   416 | Antelope    | Compact    |             0 |
|      431 | mydb/#sql-ib374-102994896 |    1 |     12 |   417 | Antelope    | Compact    |             0 |
|      432 | mydb/#sql-ib375-102994897 |    1 |     12 |   418 | Antelope    | Compact    |             0 |
|      433 | mydb/#sql-ib376-102994898 |    1 |     12 |   419 | Antelope    | Compact    |             0 |
|      434 | mydb/#sql-ib377-102994899 |    1 |     12 |   420 | Antelope    | Compact    |             0 |
|      435 | mydb/#sql-ib378-102994900 |    1 |     12 |   421 | Antelope    | Compact    |             0 |
|      436 | mydb/#sql-ib379-102994901 |    1 |     12 |   422 | Antelope    | Compact    |             0 |
|      437 | mydb/#sql-ib380-102994902 |    1 |     12 |   423 | Antelope    | Compact    |             0 |
|      438 | mydb/#sql-ib381-102994903 |    1 |     12 |   424 | Antelope    | Compact    |             0 |
|      439 | mydb/#sql-ib382-102994904 |    1 |     12 |   425 | Antelope    | Compact    |             0 |
|      440 | mydb/#sql-ib388-102994905 |    1 |     12 |   426 | Antelope    | Compact    |             0 |
|      441 | mydb/#sql-ib416-102994906 |    1 |     12 |   427 | Antelope    | Compact    |             0 |
|      442 | mydb/#sql-ib426-102994907 |    1 |     12 |   428 | Antelope    | Compact    |             0 |
|      443 | mydb/#sql-ib428-102994908 |    1 |     12 |   429 | Antelope    | Compact    |             0 |
Не совсем пойму что куда переименовывать. 
Брать файл .frm и по очереди переименовывать все файлы с значение .ibd ? 
Делал cp \#sql-58cb_5db16b.frm \#sql-ib372-102994894.frm , потом DROP TABLE `#mysql50##sql-ib372-102994894`; 
Удаляет таблицу , но она так же остается в системе ((
Отредактированно Dimashu (08.11.2016 13:35:58)
Неактивен

Не очень понял последней фразы. Что значит «удаляет таблицу, но она остается в системе»?
Смотрите, теория очень простая — есть MySQL как механизм, и есть InnoDB внутри него, который хранит сами данные. MySQL хранит информацию о том, какие есть таблицы и какая у них структура, в файликах frm. InnoDB хранит внутри себя независимый набор метаданных прямо внутри файлов ibdata*. Ваша задача сделать так, чтобы удалить файлики из обоих мест.
Насколько я понимаю, при удалении таблицы не так важно, какая структура реально написана в frm-файле. Поэтому Вы можете, например, сделать отдельную таблицу (CREATE TABLE foo (a INT) ENGINE=InnoDB), в потом скопировать этот frm-файл с названием, соответствующим названию внутри метаданных InnoDB. И удалить потом таблицу с получившимся именем (что удалит скопированный frm-файл и таблицу изнутри InnoDB).
Для конкретного примера (таблица 429) как-то так, видимо:
Неактивен
В том то и дело. Что я так и делаю, но таблички остаются в системе. Вот пример что я делал: 
CREATE TABLE foo (a INT) ENGINE=InnoDB;
root@ cp foo.frm '#sql-ib372-102994894.frm'
drop table `#mysql50##sql-ib372-102994894`;
Query OK, 0 rows affected (0.03 sec)
Смотрю 
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE '%#sql%';
429 | mydb/#sql-ib372-102994894 |    1 |     12 |   415 | Antelope    | Compact    |             0 
Табличка как была так и осталась. 
Сделал 
drop table `#mysql50##sql-58cb_5db16b.frm`;
Теперь у меня только файлы
#sql-ib372-102994894.ibd
#sql-ib373-102994895.ibd
#sql-ib374-102994896.ibd
и т.д
Что-то мне кажется , что я зря так сделал ((
Отредактированно Dimashu (09.11.2016 11:42:10)
Неактивен

Беда какая-то ![]()
Окей, давайте по инструкции еще раз пройдемся. Увидел там, что структура таки важна. Структура должна быть та же, что у изначальной таблицы. К счастью, вы ее знаете. Давайте сделаем в другой базе данных таблицу с правильным названием, скопируем frm и попробуем удалить из обеих. Как-то так:
Неактивен
Огромное спасибо , именно так как вы и написали помогло. Еще раз спасибо )
P.S это надо делать на каждой ноде кластера. ((
Отредактированно Dimashu (14.11.2016 15:14:36)
Неактивен