理论上,Memcached 不需要做备份、还原这种事情,因为存在彦面的东西应该都是 Cache,没有使用 Memcached 的话,速度应该只会比较慢,而不应该会有影响才对.
注1:Memcached restart 后,所有资料都会清空.
注2:这次遇到的主要是实验用的项目,刚好要搬机器,实验不想中断,所以才用此方式
Memcached 备份、还原的方式
先看 Memcached 的限制条件:Key 长度 250 bytes,预设 Value 1M(可透过 -I 2M 设定),设定过期时间的话,过期时间最多设定30天(设 0 为永不过期的意思).
Ref:NewCommands - memcached - Make Me a Sandwich - Memcached
一般 Memcached 能提供的方式都是 Dump key,然后自己再写程式捞出来,做写入(ADD)的动作,这边有比较简易的操作方式.(利用 memcached-tool + nc 来达成).
Memcached 备份、还原的步骤:
假设要将 192.168.1.1 的 memcached data 备份到 localhost 192.168.1.1. 那台 memcached ip 不能跑 localhost,代码如下:
- wgethttps://raw.githubusercontent.com/memcached/memcached/master/scripts/memcached-tool
- chmod+x./memcached-tool
- ./memcached-tool192.168.1.1:11211dump>data#备份,data内容大致如下:
- add19bc2701c3898279jkds1jklc272b35f01413178136506
- a:3:{s:4:"text";..................}
注:1413178136 # timestamp,若是资料过期,汇入后找不到,代码如下:
- nclocalhost11211<data#还原
- #验证
- ./memcached-toollocalhost:11211dump>local-data
- wc-llocal-data
- wc-ldata
看看上述两个资料笔数是否正确.
上述参考自此篇:memcache dump and load
PHP 版 Memcached backup / restore
另外有 PHP 的 Memcached backup / restore 程式,可以参考看看(注:我没用过),下述摘录自此篇:Meabed/memcached-php-backup-restore - Save / Restore data from Memcache to File
- phpm.php-h127.0.0.1-p112112-oprestore
- -h:MemcacheHostaddress(defaultis127.0.0.1)
- -p:MemcachePort(defaultis11211)
- -p:Operationisrequired!!(availableoptionsis:restore,backup)
- phpm.php-h127.0.0.1-p112112-opbackup --phpfensi.com
- phpm.php-h127.0.0.1-p112112-oprestore
其它 Memcached 相关工具
Memcached 有其它方便使用的工具,可以尝试看看.
- sudoapt-getinstalllibmemcached-tools#下述取自:Welcometothelibmemcacheddocumentation
- memcapable-CheckingaMemcachedservercapibilitiesandcompatibility
- memcat-"cat"datafromaserver
- memcp-Copydatatoaserver
- memdump-Dumpingyourserver
- memerror-translateanerrorcodetoastring
- memflush-flushalldatafromaserver
- memrm-Removedatafromaserver
- memslap-Loadtestingandbenchmarkingaserver
- memaslap-Loadtestingandbenchmarkingaserver
- memstat-Gatherstatisticsfromaserver
- memexist-Checkfortheexistanceofakey
- memparse-Parseanoptionstring
- memping-Testtoseeifaserverisavailable.
- memtouch-Touchesakey.
- ex:memccat--servers=127.0.0.1