Назад | Перейти на главную страницу

Как очистить файлы базы данных MemcacheQ?

Мой MemcacheQ запускается с:

memcacheq -d -r -H /db/baamboo -N -R -L 2048 -T 300 -l 192.168.6.29 -p 22211 -u memcacheq -t 8 -m 512 -P /var/run/baamboo.pid -v

Он съедает место на жестком диске. Нашел этот тема от Google, но я проверил справочную страницу: -e вариант имеет другое значение:

-e <num>      percent of the pages in the cache that should be clean, default is 60%

Так как отметка упомянутый в приведенной выше ссылке, я также очищаю файлы журнала с помощью db_archive -a -h ... | xargs rm -f (memcacheq имеет -R возможность сделать это автоматически). Но после этого __dbq.* кажется, что файл не соответствует файлам журнала. Так что db_stat претензии:

# db_stat -d BBKeyword
db_stat: PANIC: fatal region error detected; run recovery
...

что-то вроде этого: http://forums.oracle.com/forums/thread.jspa?threadID=2146996&tstart=15

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

У меня много __dbq.* файлы:

# ls -1 __dbq.* | wc -l
11849

Размер одного файла db составляет 4K * 16 * 1024 = 64 МБ, поэтому общий размер составляет 743 ГБ.

Беркли ДБ 4.7.25


ОБНОВЛЕНИЕ 1

# db_stat -d BBKeyword
Wed Aug 17 11:34:59 2011    Local time
db_stat: PANIC: fatal region error detected; run recovery
db_stat: PANIC: fatal region error detected; run recovery
db_stat: close: DB_RUNRECOVERY: Fatal error, run database recovery
db_stat: File handles still open at environment close
db_stat: Open file handle: BBKeyword
db_stat: Open file handle: queue.list
db_stat: Open file handle: BBUpdateViewQt
db_stat: Open file handle: BBUpdateViewVn
db_stat: Open file handle: BBUpdateViewYt
db_stat: Open file handle: log.0000083311
db_stat: Open file handle: ./__dbq.BBKeyword.285
db_stat: Open file handle: ./__dbq.BBKeyword.286
db_stat: Open file handle: ./__dbq.BBKeyword.287
db_stat: Open file handle: ./__dbq.BBKeyword.288
db_stat: PANIC: fatal region error detected; run recovery
db_stat: dbenv->close: DB_RUNRECOVERY: Fatal error, run database recovery

db_verify дать много плохих номеров страниц:

...
db_verify: Page 16379: bad page number 4734972
db_verify: Page 16380: bad page number 4734973
db_verify: Page 16381: bad page number 4734974
db_verify: Page 16382: bad page number 4734975
db_verify: Page 16383: bad page number 4734976
db_verify: __dbq.BBKeyword.288: DB_VERIFY_BAD: Database verification failed

Итак, я прекращаю memcacheq и беги db_recover:

# db_recover -v -h /data/memcacheq/db/baamboo/
Finding last valid log LSN: file: 83311 offset 1795753
Recovery starting from [83310][1429052]
Recovery complete at Wed Aug 17 12:03:09 2011
Maximum transaction ID 8000ac4f Recovery checkpoint [83311][1796460]

и проверьте еще раз с db_verify:

# db_verify -h . __dbq.BBKeyword.288
db_verify: Page 0: metadata page corrupted
db_verify: Page 0: could not check metadata page
db_verify: __dbq.BBKeyword.288: DB_VERIFY_BAD: Database verification failed

Похоже, вы пытаетесь использовать проверку в файле региона, а не в файле базы данных. Видеть эта ветка в OTN.