Как почистить FoundationDB?

Есть ли быстрый способ удалить все данные из локальной базы данных? Как SQL 'отбросить базу данных'?

Я просматривал документацию, но пока не нашел ничего интересного.

4 ответа

Решение

Вы можете сделать это, очистив весь диапазон клавиш.

В Python это выглядит так:

Database.clear_range('', '\xFF')

Где '' - начало слайса по умолчанию, а '\xFF' - конец слайса по умолчанию, в соответствии с clear_range документация.

Более подробную информацию о clear_range для API, который вы используете, вы можете найти в документации.

Путь "CLI"

Используя предоставленные fdbcli интерфейс, вы можете очистить все ключи в базе данных, используя один clearrange команда, как это:

fdb> writemode on
fdb> clearrange "" \xFF
Committed (68666816293119)

Имейте в виду, что он выполняется мгновенно и отмена невозможна!

Кроме того, любое приложение, все еще подключенное к базе данных, может продолжить чтение / запись данных с использованием префиксов подпространства кэшированного каталога, что может привести к повреждению данных! Вы должны убедиться, что используете этот метод только тогда, когда ничто активно не использует кластер.

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

Трудный путь

Если у вас кластер с одним узлом, вы можете остановить службу fdb, удалить все файлы в ее data_dir папку, перезапустите службу, а затем с помощью fdbcliвыполнить create new single ssd команда.

Это восстановит дисковое пространство, использованное ранее, и вернет все обратно в состояние после установки.

Чтобы сделать это программно в Java:

db.run(tx -> {
            final byte[] st = new Subspace(new byte[]{(byte) 0x00}).getKey();
            final byte[] en = new Subspace(new byte[]{(byte) 0xFF}).getKey();
            tx.clear(st, en);
            return null;
        });

Я думаю, что метод CLI не точен: '' не кажется абсолютным первым ключом. Возможно, придется сделать это:

fdb> writemode on
fdb> clearrange \x00 \xFF
Другие вопросы по тегам