memcacheq Berkeleydb 备份恢复
这是很久以前碰到的问题,一直躺在笔记里,没有整理出来。在 memecacheq 运行一段时间后会出现以下的问题,原因是 Berkeleydb 存储出问题了
1 | [memcacheq] [Wed Jun 3 17:02:11 2015] "BDB1546 unable to join the environment" |
日志清理
有两种方法可以清理memcachedb的日志
- 利用memcache协议清理日志
1 | echo db_archive|nc 127.0.0.1 21201 |
- 利用berkeleydb的命令行清理日志
1 | /usr/local/BerkeleyDB.xxx/bin/db_archive -d -h home |
备份及恢复
- 备份
1 | /usr/local/BerkeleyDB.xxx/bin/db_hotbackup [-c] -h home -b backup_dir |
- 正常恢复
1 | /usr/local/BerkeleyDB.xxx/bin/db_recover -f -h home |
- 灾难性恢复,新增一个c参数
1 | /usr/local/BerkeleyDB.xxx/bin/db_recover -cf -h home |
监控
使用memcache协议的stats, stats bdb, stats rep指令,例如
1 | echo stats|nc 127.0.0.1 21201 |
标准的bdb工具db_stat
故障恢复
master-slave结构的memcachedb,当master当机的时,可采用以下步骤恢复
停止slave
将slave作为master跑起来
1 | memcachedb -p21201 -d -r -u root -H ./mdb_11211_m -N -R 127.0.0.1:31201 -M |
有充裕的时间恢复原master
memcacheq Berkeleydb 备份恢复