Беркли БД: Как заставить ротацию журналов транзакций для архивирования журналов на основе db_archive

Я использую db_archive Berkeley DB для перемещения неиспользуемых журналов транзакций в резервное хранилище с целью аварийного восстановления. Цель состоит в том, чтобы уменьшить окно потери данных до N минут. Следовательно, я выполняю db_archive каждые N минут. Если пропускная способность транзакций достаточно высока, так что при максимальном размере журнала транзакций создается новый журнал транзакций и возникают контрольные точки базы данных, которые приводят к тому, что старый журнал не используется, эта стратегия работает должным образом. Однако, если пропускная способность минимальна, архивирование будет происходить только после того, как будет достигнут максимальный размер журнала транзакций и контрольная точка освобождает старый журнал. Следовательно, эти изменения не могут быть восстановлены, поскольку журналы не архивируются.

Есть ли способ заставить ротацию журнала транзакций убедиться, что даже изменения, которые не вызывают создание нового журнала транзакций, будут архивироваться через равные промежутки времени? Уменьшая максимальный размер журнала транзакций, ситуация может быть улучшена, но не решена. Все, что я могу придумать, это форсировать ротацию, написав пользовательскую запись в журнале транзакций соответствующего размера с помощью API DB_ENV->log_put() Berkeley DB, прежде чем вызывать контрольную точку и вызывать db_archive, но это по-прежнему не похоже на готовое к работе решение.,

Заранее спасибо за любую дополнительную информацию по этому вопросу!

1 ответ

Это можно сделать, но, согласно существующим сайтам вызовов в источнике 4.7.25/6.2.23, сценарий определенно требует для этого кода (ни одна из утилит не вызывает помощника). Внутренняя функция __log_newfile может использоваться для переключения на новый файл журнала:

int __log_newfile __P((DB_LOG *, DB_LSN *, u_int32_t, u_int32_t));

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

Другие вопросы по тегам