Рубрики
Uncategorized

О пользователе Apache Cassandra: Снимки

Добро пожаловать в открытый пост «О пользователе Apache Cassandra», новая серия постов, я буду писать … Теги с кассандрой, базой данных, NoSQL, DEVOPS.

Добро пожаловать в открытый пост «О пользователе Apache Cassandra», новая серия постов, я буду писать о Apache Cassandra исключительно на Dev.to!

В вычислениях, снимок является постоянной копией данных или состояния машины.

Вы когда-нибудь в конечном итоге делаете что-то подобное?

Каждый из этих файлов — это снимок, так как это копия вашего эссе в точке, когда вы сохранили его.

Снимки обеспечивают нам простой способ отменить изменения и системы резервных копий.

Как кассандра хранит данные

Кассандра разрушает свои данные по Клавиатура (который похож на базу данных в MySQL или схеме в PostgreSQL), а Семейный столбец (стол). Данные для колонных семейств — это магазины на Sstables (Сортированные строковые таблицы).

Когда Кассандра пишет на диск, он делает это, написав новый Sstable. Каждый Sstable неизменен, поэтому он всегда будет делать новый Sstable каждый раз, когда он промывает. Процесс, известный как Уплотнение автоматически объединяет таблицы в одну новую таблицу.

Например, если у нас есть семейство столбца по имени Пользователи в клавиш Приложение данные для этой таблицы будут выглядеть:

/App/Users/
1-big-Data.db
2-big-Data.db
3-big-Data.db
4-big-Data.db

Каждый Big-Data Файл это Sstable. Уплотнение потребует все эти таблицы и объединяет их в один новый файл 5-Big-data.db Отказ

Когда вы делаете снимок с Apache Cassandra, это создает Жесткая ссылка всех живых Sstables. Легко, верно? Ну это немного сложнее, чем ты можешь подумать

Что такое жесткая ссылка?

Жесткая ссылка — это файл, который указывает на те же данные, что и другой файл.

В Unix, подобных системам (Linux, MacOS, BSD), система использует Inodes Чтобы ссылаться на данные на диск и файлы на справочнике вашего компьютера inodes. Жесткая ссылка — это файл, который разделяет тот же inode, что и другой файл.

Жесткие ссылки отличаются, чем Мягкие ссылки , который говорит о приложении, прочитав этот файл, где находится фактический путь к файлу.

Есть Очень важный поймать С жесткими ссылками: данные на диске будут удалены только при удалении всех ссылок.

Например: Inode 1001 ссылки на 500 МБ данных на диске, и у нас есть два файла, которые указывают на inode 1001. Если мы удалили первую ссылку, данные 500 МБ все равно будут на диске из-за второй ссылки. Мы не будем освободить это 500 МБ с диска до Все ссылки были удалены Отказ

Поскольку снимки являются жесткими ссылками существующих файлов, эти файлы должны находиться в одной и той же файловой системе, что и ваши данные. Таким образом, снимки хранятся в Снимки каталог в пределах вашей колонки семьи. Если бы мы сделали снимок имени Snapshot1 На нашем существующем столе пользователей это приведет к:

/App/Users/
1-big-Data.db
2-big-Data.db
3-big-Data.db
4-big-Data.db
/App/Users/snapshots/snapshot1
1-big-Data.db (Hard link)
2-big-Data.db (Hard link)
3-big-Data.db (Hard link)
4-big-Data.db (Hard link)

Когда происходит уплотнение, и Sstables объединены, наш снимок не затронут:

/App/Users/
5-big-Data.db
/App/Users/snapshots/snapshot1
1-big-Data.db
2-big-Data.db
3-big-Data.db
4-big-Data.db

Поскольку есть еще по крайней мере одна ссылка на данные Sstables 1-4, система не будет удалять эти данные с диска.

Как и в случае любого распределенного хранения системы, расчет вашей емкости не так проста, как просто смотрите на то, сколько у вас свободного дискового пространства.

Снимки могут оказать очень большое влияние на емкость ваших кластеров, и необходима большая забота, если вы рассматриваете снимки снимков по расписанию.

Из-за этого Один важный поймать С жесткими ссылками (см. Выше), задания уплотнения могут значительно увеличить объем данных, используемых с помощью снимков.

Когда вы делаете снимок на сервере без активности, что снимок не потребляет никакого (значимого) объема данных на диске. Но, как только новое SSTABLE написано или уплотнение происходит, этот снимок начнет заниматься пространством, потенциально удваивая объем данных на вашем диске.

Позвольте мне попытаться сломать его:

Предположим, у вас есть на 100 ГБ диска, а Cassandra использует 50 ГБ этого для его данных.

  1. Вы берете новый снимок. Это не будет использовать это много дискового пространства. Еще 50% полный.
  2. Наиболее серьезное уплотнение происходит, что-то вроде уборки или скраб, который повторно записывает все таблицы на диск.
  3. Этот снимок теперь ссылается на версию Sstables, которые были полностью переписаны, и по сути, являются дублированными данными. Сейчас на 100% полный.

Конечно, это немного преувеличенный пример, но реальность заключается в том, что снимки и уплотнение могут разрушить емкость диска и разрушать ваш день.

Восстановление из моментального снижения — это разрушительное действие, которое приведет к потере любых новых данных, созданных после принятия снимка. Вы должны восстановить только снимка, когда у вас нет другого варианта. Нет автоматического способа восстановления кассандры на снимок, это ручной процесс.

Хотя кластер работает:

  1. Усечить таблицу, которую вам нужно восстановить
  2. Остановите обслуживание Кассандры

Почему урезать? Если остаются какие-либо надгробия, они будут удалены после восстановления. Усечение удаляет любые надгробия из этой таблицы.

На всех узлах в кластере:

  1. Перейдите к каталогу для снимка, который вы хотите восстановить из
  2. Скопируйте все Sstables в этом каталоге в каталог данных для таблицы

Ну наконец то:

  1. Начать сервис
  2. Запустите Nodetool Refresh

Как и в случае большинства операционных задач, вы будете использовать odetool Приложение для управления снимками на сервере. Это некоторые из команд, которые вы можете использовать.

Делать снимки

nodetool snapshot [options] [keyspace]

Ссылка: https://cassandra.apache.org/doc/latest/tools/nodetool/snapshot.html

Снимок с помощью конкретного имени : odetool snapshot -t <имя>

Снимок на всех таблицах в определенном клавишном пространстве : Nodetool Snapshot

Снимок на двух конкретных таблицах : Nodetool Snapshot -kt

Перечислите все снимки

nodetool listsnapshots

Ссылка: https://cassandra.apache.org/doc/latest/tools/nodetool/listsnapshots.html.

Удалить один или несколько снимков

nodetool clearsnapshot [options] [keyspaces]

Ссылка: https://cassandra.apache.org/doc/latest/tools/nodetool/clearsnapshot.html.

Удалите все снимки : odetool. Clearsnapshot.

Удалить снимок имени: odetool clearsnapshot -t <имя снимка>

Удалите снимки с определенного клавиатуры: odetool clearsnapshot

Оригинал: «https://dev.to/ecnepsnai/all-about-apache-cassandra-snapshots-3oo2»