2015-09-18 2 views
1

Я новичок в MemSQL. Я создал базу данных и таблицы в MemSQL для кластера с 5 листовыми узлами и 2 узлами агрегатора. Spark работает в одном кластере. Все в режиме по умолчанию. Вставить данные и удалить их. выберите * ничего не возвращает. Но когда я увидел веб-кластер UI, каждый листовой узел все еще потребляет около 6 ТБ дискового пространства.Как освободить место для отброшенной базы данных в MemSql

enter image description here enter image description here Емкость диска Описание говорит: «Это является объем дискового пространства используется MemSQL относительно общего дискового пространства доступного. Когда это полная, нет снимка, не могут быть созданы журналы транзакций или данных columnstore».

С этим описанием я предполагаю, что дисковое пространство выше 6 ТБ связано с использованием MemSQL.

Может кто-нибудь, пожалуйста, уточнить

  1. ли по умолчанию MemSQL записи данных на диск тоже?
  2. Не удаляет ли данные, записанные на диск, даже после удаления содержимого и отбрасывания таблицы?
  3. Как освободить дисковое пространство от MemSQL? Какую директорию я хочу удалить? Я понял, что каталог «/ var/lib/memsql/leaf-3306» имеет все артефакты memsql для этого листового узла.
+0

вы забыли распечатать URL-адрес во втором скриншоте :) –

+0

здесь Я поцарапал URL. :) –

+0

Хотя я сбросил базу данных, вы можете показать базы данных ниже баз данных information_schema, memsql, sharding. Я их не создал. Никто не имеет доступа к этому кластеру. Должен ли я бросить их тоже? –

ответ

2

Использование 6TB может быть связано с MemSQL, или может быть из-за искры или какого-либо другого процесса. Операции MemSQL сообщают об общем использовании диска, а не о диске, используемом MemSQL (подсказка слегка вводит в заблуждение).

1) Таблицы Rowstore (таблицы без индекса CLUSTERD COLUMNSTORE) записывают журналы на диск для каждой записи. Журналы объединяются в моментальные снимки, когда журналы становятся большими, и по умолчанию мы сохраняем последние два файла моментальных снимков. Таким образом, возможно, что старший из двух снимков содержит данные, которые вы удалили. Вы можете запустить новый снимок с SNAPSHOT <dbName>, и это позволит GC очистить старые (возможно, большие).

2) Снимки и журналы относятся к базе данных, а не к таблице. Отбрасывание таблицы не приведет к очистке снимков/журналов, но удаление базы данных или запуск нового моментального снимка.

3) Вам, вероятно, не следует удалять каталоги данных вручную. DROP DATABASE <db_name> удалит все данные, связанные с этой базой данных.

Для столов столбцов история немного отличается, но я предполагаю, что «Все по умолчанию» означает «Столбцы столбцов».

+0

«MemSQL ops сообщает об общем использовании диска, а не о диске, используемом MemSQL», тогда я как бы освобожден. Позвольте мне проверить, используется ли другое место на диске –

+1

После получения разъяснений относительно вводящего в заблуждение описания на емкости диска я удалил другие файлы на своем диске и очистил дисковое пространство. –

1

Вы удалили базу данных (как в, DROP DATABASE db) или удалили все данные (как в DELETE FROM t или TRUNCATE TABLE t)?

Если прежний, использование диска должно быть сжато немедленно, а если нет, я могу помочь вам разобраться, что его потребляет.

Если последнее, то это имеет смысл. MemSQL использует транзакционные журналы и снимки для долговечности. В этом конкретном случае, когда вы вставляете X количество данных, а затем удаляете сумму данных X, журнал транзакций будет длинным 2X на диске, так что при восстановлении он может воспроизводить все вставки и все удаления. Чтобы уменьшить его, MemSQL иногда принимает моментальные снимки (некоторые другие механизмы базы данных называют их контрольными точками).Обычно это происходит, когда журналы достигают определенного размера, что, по-видимому, в вашем случае еще не достигнуто. Если вы хотите освободить место на диске, вы можете вручную запустить моментальный снимок, запустите SNAPSHOT db в агрегаторе (db - это имя вашей базы данных), и это должно помочь.

+0

Я сбросил базу данных, но это не уменьшило дисковое пространство. «показать базы данных» показано ниже «information_schema» баз данных, «memsql», «sharding». Я их не создал. Никто не имеет доступа к этому кластеру. Должен ли я бросить их тоже? –

+0

Скорее всего, не бросайте эти базы данных. Они являются системными базами данных memsql и необходимы для правильной работы memsql (скорее всего, вы не сможете их отбросить) – Ishamael

2

Запомненная память не будет свободной до тех пор, пока не будет запущена GC. Memsql хранит все данные в памяти. Даже если мы удалим таблицы, база данных, строки и т. Д. Память не будет доступна, если GC не происходит. Enforce GC из командной строки, он выдает оперативную память:

memsql> trigger full gc flush;

сравнение free -m до и после запуска команды. Вы увидите разницу :)

Смежные вопросы