memcacheq Berkeleydb 备份恢复

这是很久以前碰到的问题,一直躺在笔记里,没有整理出来。在 memecacheq 运行一段时间后会出现以下的问题,原因是 Berkeleydb 存储出问题了

1
2
[memcacheq] [Wed Jun  3 17:02:11 2015] "BDB1546 unable to join the environment"

日志清理

有两种方法可以清理memcachedb的日志

  1. 利用memcache协议清理日志
1
2
   echo db_archive|nc 127.0.0.1 21201    

  1. 利用berkeleydb的命令行清理日志
1
2
   /usr/local/BerkeleyDB.xxx/bin/db_archive -d -h home

备份及恢复

  1. 备份
1
2
/usr/local/BerkeleyDB.xxx/bin/db_hotbackup [-c] -h home -b backup_dir

  1. 正常恢复
1
2
/usr/local/BerkeleyDB.xxx/bin/db_recover -f -h home

  1. 灾难性恢复,新增一个c参数
1
2
/usr/local/BerkeleyDB.xxx/bin/db_recover -cf -h home

监控

使用memcache协议的stats, stats bdb, stats rep指令,例如

1
2
  echo stats|nc 127.0.0.1 21201

标准的bdb工具db_stat

故障恢复

master-slave结构的memcachedb,当master当机的时,可采用以下步骤恢复

停止slave

将slave作为master跑起来

1
2
  memcachedb -p21201 -d -r -u root -H ./mdb_11211_m -N -R 127.0.0.1:31201 -M

有充裕的时间恢复原master

作者

张巍

发布于

2016-04-06

更新于

2016-04-06

许可协议

评论