pika 2.2.6
Bug修復(fù):
- 修復(fù)在強(qiáng)制全同步失敗后,主從同步無(wú)法恢復(fù)的問(wèn)題
- 修復(fù)在內(nèi)部切換DB后,配置發(fā)生變動(dòng)的問(wèn)題
優(yōu)化:
- keys命令新增參數(shù)支持掃描指定類(lèi)型的數(shù)據(jù),用法如 "keys * [string, hash, list, zset, set]"
- 新增compact-interval配置項(xiàng)來(lái)周期檢查并執(zhí)行全局compact,具體用法見(jiàn)conf文件內(nèi)說(shuō)明【注:如果同時(shí)配置compact-interval和compact-cron,前者優(yōu)先級(jí)更高,后者會(huì)自動(dòng)失效,直到關(guān)閉compact-interval后重新生效】
- 優(yōu)化在連接數(shù)和請(qǐng)求數(shù)據(jù)同時(shí)較大(如執(zhí)行HGETALL等命令)時(shí)pika內(nèi)存占用多的問(wèn)題
- 取消編譯時(shí)對(duì)protobuf的依賴(lài),編譯更容易
- 新增pika_to_txt,txt_to_pika工具,支持將kv數(shù)據(jù)從pika導(dǎo)入到文本,或反向?qū)Щ?/li>
注意事項(xiàng)
- pika從2.1.4推薦需要使用gcc 4.8+版本編譯,更新gcc后執(zhí)行make distclean && make編譯
- 僅支持從2.1.0+版本平滑升級(jí)到2.2.6,如果從更早版本升級(jí),請(qǐng)看2.1.0的注意事項(xiàng)
Downloads
pika 2.2.5
Bug修復(fù):
- 修復(fù)在斷網(wǎng)并恢復(fù)后有可能導(dǎo)致主從長(zhǎng)時(shí)間無(wú)法恢復(fù)數(shù)據(jù)同步的問(wèn)題
- 修復(fù)delbackup和dump-expire可能導(dǎo)致備份數(shù)據(jù)刪除不完整的問(wèn)題
- 修復(fù)codis下slot_num的錯(cuò)誤問(wèn)題
- 修復(fù)了codis下slot遷移會(huì)丟失同名其它類(lèi)型數(shù)據(jù)的問(wèn)題
優(yōu)化:
- 大幅度優(yōu)化pika_to_redis工具,并且支持redis auth
- 優(yōu)化全同步的速度
- 主從同步異常后,用無(wú)限重試取代之前進(jìn)入直接sync_error狀態(tài),解決由于already exist錯(cuò)誤導(dǎo)致的主從無(wú)法發(fā)重新建立的問(wèn)題
- 調(diào)整Makefile,優(yōu)化編譯體驗(yàn)
注意事項(xiàng)
- pika從2.1.4推薦需要使用gcc 4.8+版本編譯,更新gcc后執(zhí)行make distclean && make編譯
- 僅支持從2.1.0+版本平滑升級(jí)到2.2.5,如果從更早版本升級(jí),請(qǐng)看2.1.0的注意事項(xiàng)
Downloads
pika 2.2.4
Bug修復(fù):
- 修復(fù)hscan, zscan, sscan在同時(shí)傳入count和match時(shí),會(huì)掃描累計(jì)滿足count個(gè)match pattern的錯(cuò)誤
- 修復(fù)aof_to_pika的在大value時(shí)會(huì)變慢的問(wèn)題
優(yōu)化:
- 支持delbackup命令,刪除dump目錄下除正在使用(全同步中)的db快照外的其他快照
- 支持expire-dump-days配置,可以按天自動(dòng)給刪除不需要的db快照
- 支持time命令
- 更新pink到3.0.4,重構(gòu)并優(yōu)化pink
注意事項(xiàng)
- pika從2.1.4推薦需要使用gcc 4.8+版本編譯,更新gcc后執(zhí)行make distclean && make __REL=1編譯
- 僅支持從2.1.0+版本平滑升級(jí)到2.2.4,如果從更早版本升級(jí),請(qǐng)看2.1.0的注意事項(xiàng)
Downloads
pika 2.2.3
Bug修復(fù):
- 修復(fù)nemo-rocksdb在open時(shí)可能過(guò)早schedule autocompaction而崩潰的問(wèn)題
- 修復(fù)在出現(xiàn)EPOLLERR或EPOLLHUP時(shí),造成內(nèi)存泄漏的問(wèn)題
注意事項(xiàng)
- pika從2.1.4推薦需要使用gcc 4.8+版本編譯,更新gcc后執(zhí)行make distclean && make __REL=1編譯
- 僅支持從2.1.0+版本平滑升級(jí)到2.2.3,如果從更早版本升級(jí),請(qǐng)看2.1.0的注意事項(xiàng)
Downloads
pika 2.2.2
Bug修復(fù):
- 修復(fù)如果主從同步數(shù)據(jù)的連接意外斷開(kāi),將不會(huì)繼續(xù)同步的問(wèn)題
- 修復(fù)ttl,persit接口在某些已刪除key返回值不正確的問(wèn)題
- 修復(fù)scan命令當(dāng)count傳0時(shí)崩潰的問(wèn)題
優(yōu)化:
- 如果編譯環(huán)境安裝tcmalloc,則默認(rèn)使用tcmalloc,并額外提供tcmalloc命令來(lái)進(jìn)行內(nèi)存查詢(xún)及管理
- 整理pikatests目錄,改名為tests
tcmalloc命令說(shuō)明
該命令僅在編譯pika的環(huán)境安裝tcmalloc時(shí)才生效
具體用法:
- tcmalloc stats: 打印tcmalloc的stats信息
- tcmalloc list: 打印tcmalloc的FreeList詳細(xì)信息
- tcmalloc rate: 打印tcmalloc的FLAGS_tcmalloc_release_rate值
- tcmalloc rate [0-10]: 設(shè)置tcmalloc的FLAGS_tcmalloc_release_rate值 【不要輕易改動(dòng)】
- tcmalloc free: 強(qiáng)制tcmalloc盡可能多的釋放自身緩存的內(nèi)存,還給操作系統(tǒng)
注意事項(xiàng)
- pika從2.1.4推薦需要使用gcc 4.8+版本編譯,更新gcc后執(zhí)行make distclean && make __REL=1編譯
- 僅支持從2.1.0+版本平滑升級(jí)到2.2.2,如果從更早版本升級(jí),請(qǐng)看2.1.0的注意事項(xiàng)
Downloads
pika 2.2.1
Bug修復(fù):
- 修復(fù)BinlogSender使用阻塞write,在slave卡死(如盤(pán)壞)的情況下,連帶卡死m(xù)aster的問(wèn)題
- 修復(fù)bit接口中正確性的問(wèn)題
- 修復(fù)執(zhí)行monitor造成內(nèi)存泄漏的問(wèn)題
- 修復(fù)在bind時(shí)可能崩潰的問(wèn)題
- 修復(fù)在主從級(jí)聯(lián):A<-B<-C時(shí),C執(zhí)行slaveof no one后B主從狀態(tài)沒(méi)有更新的問(wèn)題
- 修復(fù)當(dāng)正在執(zhí)行后臺(tái)compaction任務(wù)時(shí),pika不能正常退出的問(wèn)題
優(yōu)化:
- 新增配置項(xiàng)compact-cron,支持在每天指定時(shí)段內(nèi)檢測(cè)并在必要時(shí)進(jìn)行全局compact
- 新增slaveof ip port force命令,強(qiáng)行全同步,適合主庫(kù)db是從其他實(shí)例拷貝并加載而來(lái),此時(shí)可以用此命令來(lái)為其掛從庫(kù)
- rocksdb自身LOG按512M大小進(jìn)行切分
- 慢日志記錄更多信息(命令,key,value等),單條最長(zhǎng)1K
- 精簡(jiǎn)部分日志
- 重寫(xiě)ssdb_to_pika工具,可以更快速的將ssdb數(shù)據(jù)遷移至pika
推薦
pika推薦使用tcmalloc來(lái)進(jìn)行內(nèi)存管理
注意事項(xiàng)
- pika從2.1.4推薦需要使用gcc 4.8+版本編譯,更新gcc后執(zhí)行make distclean && make __REL=1編譯
- 僅支持從2.1.0+版本平滑升級(jí)到2.2.1,如果從更早版本升級(jí),請(qǐng)看2.1.0的注意事項(xiàng)
Downloads
pika 2.2.0
Bug修復(fù):
- 修復(fù)在scan含有過(guò)期key的時(shí)候可能出現(xiàn)的死循環(huán)的問(wèn)題
- 修復(fù)在range操作中可能出現(xiàn)的讀不出來(lái)key的問(wèn)題
- 修復(fù)在大量短連接情況下執(zhí)行慢請(qǐng)求造成fd耗盡的問(wèn)題
- 修復(fù)bgsave和info同時(shí)執(zhí)行在極小概率下出現(xiàn)死鎖的問(wèn)題
優(yōu)化:
- 支持對(duì)過(guò)期及已刪除meta key的compact回收
- 提高range操作的性能
- 提高寫(xiě)入性能(set接口提高30%)
- select命令限制dbnum上限(16)
- 支持接入codis
- 支持Geo
- 支持Hyperloglog
- 解耦rocksdb,重新實(shí)現(xiàn)nemo依賴(lài)的引擎特性,支持后續(xù)快速跟進(jìn)官方版本,2.2.0使用rocksdb v5.0.1
- 支持多線程compact
注意事項(xiàng)
- pika從2.1.4推薦需要使用gcc 4.8+版本編譯,更新gcc后執(zhí)行make distclean && make __REL=1編譯
- 僅支持從2.1.0+版本平滑升級(jí)到2.2.0,如果從更早版本升級(jí),請(qǐng)看2.1.0的注意事項(xiàng)
Downloads
pika 2.1.4
Bug修復(fù):
- 修復(fù)strlen在記錄不存在時(shí)不返回0的錯(cuò)誤
優(yōu)化:
- 新增dbsize命令
- 提高手動(dòng)compact任務(wù)在任務(wù)隊(duì)列中的優(yōu)先級(jí),防止被由于大量del或spop產(chǎn)生小compact任務(wù)推遲
- 調(diào)整glog邏輯,INFO、WARNING、ERROR、FATAL互不重疊,減小日志冗余
- 設(shè)置引擎max_manifest_file_size配置為64M,防止由于服務(wù)時(shí)間很長(zhǎng)加之compact過(guò)于頻繁而導(dǎo)致引擎MANIFEST文件過(guò)大
- 在tools中用對(duì)應(yīng)的代碼文件更換二進(jìn)制文件,通過(guò)make現(xiàn)編譯生成工具,減少倉(cāng)庫(kù)大??;對(duì)lib下glog的so文件采用同樣策略;支持make distclean方便徹底clean掉pika及submodule項(xiàng)目
注意事項(xiàng)
- pika從2.1.4推薦需要使用gcc 4.8+版本編譯,更新gcc后執(zhí)行make distclean && make __REL=1編譯
- 僅支持從2.1.0+版本平滑升級(jí)到2.1.4,如果從更早版本升級(jí),請(qǐng)看2.1.0的注意事項(xiàng)
Downloads
pika 2.1.3
Bug修復(fù):
- 修復(fù)nemo中spop出現(xiàn)的可能卡死或崩潰的錯(cuò)誤
- 修復(fù)pika在收到錯(cuò)誤redis協(xié)議(如結(jié)尾多一個(gè)\r\n)時(shí)崩潰的錯(cuò)誤
- 修復(fù)由于重復(fù)close而導(dǎo)致的極少情況下出現(xiàn)問(wèn)題的錯(cuò)誤
- 修復(fù)master端在binlogsender連接失敗后沒(méi)有delete相應(yīng)對(duì)象的錯(cuò)誤
- 修復(fù)nemo中sunionstore、sinterstore中對(duì)于multi key需要順序加鎖的問(wèn)題
優(yōu)化:
- 調(diào)整底層pink結(jié)構(gòu)
- 將trysync的讀寫(xiě)超時(shí)設(shè)置為30s,避免重復(fù)發(fā)送請(qǐng)求導(dǎo)致master恢復(fù)already exist的錯(cuò)誤
- 定時(shí)檢查rsync服務(wù)是否正確關(guān)閉,修復(fù)由于某些異常問(wèn)題導(dǎo)致rsync服務(wù)在該關(guān)閉的情況下依舊打開(kāi)的錯(cuò)誤
##注意事項(xiàng)
僅支持從2.1.0、2.1.1及2.1.2平滑升級(jí)到2.1.3,如果從更早版本升級(jí),請(qǐng)看2.1.0的注意事項(xiàng)
Downloads
pika 2.1.2
優(yōu)化:
- 新增指定網(wǎng)卡配置項(xiàng)network-interface,解決2.1.1在綁定網(wǎng)卡后導(dǎo)致客戶(hù)端使用127.0.0.1無(wú)法連接pika的問(wèn)題,默認(rèn)為不綁定任何網(wǎng)卡
- 新增slaveof配置項(xiàng),可以將主從配置寫(xiě)在配置文件中,pika啟動(dòng)后自動(dòng)建立主從關(guān)系,默認(rèn)為空
- 修改info中use_memory計(jì)算方式,改為rocksdb memtable+tablecache的大小
- 修改部分info信息,原db_size、log_size、use_memory改為以字節(jié)為單位,并新增db_size_human、log_size_human、use_memory_human為對(duì)應(yīng)以M為單位的顯示
注意事項(xiàng)
僅支持從2.1.0及2.1.1平滑升級(jí)到2.1.2,如果從更早版本升級(jí),請(qǐng)看2.1.0的注意事項(xiàng)
Downloads
pika 2.1.1:
Bug修復(fù):
- 修復(fù)master在記錄待全同步slave的列表時(shí)由于沒(méi)有加鎖而導(dǎo)致可能出現(xiàn)的問(wèn)題(出現(xiàn)概率較低)
- 修復(fù)slave在小概率下與master斷開(kāi)并無(wú)法繼續(xù)建立主從關(guān)系的bug(出現(xiàn)概率較低)
- 修復(fù)在執(zhí)行l(wèi)trim key 1 -1之后,rpush返回失敗的bug
優(yōu)化:
- 新增指定網(wǎng)卡的配置項(xiàng)
- 新增config resetstat
- binlog_sync工具不需要指定端口
- binlog_sender工具支持對(duì)文件進(jìn)行范圍指定
注意事項(xiàng):
僅支持從2.1.0平滑升級(jí)到2.1.1,如果從更早版本升級(jí),請(qǐng)看2.1.0的注意事項(xiàng)
pika 2.1.0:
Bug修復(fù):
- monitor修復(fù)二進(jìn)制的顯示(轉(zhuǎn)為16進(jìn)制)
- zcard命令無(wú)法在從庫(kù)執(zhí)行的bug(檢查其它接口是否存在相同問(wèn)題)、select變成寫(xiě)入命令的bug
- 修復(fù)由于后臺(tái)執(zhí)行info keyspace 1 而導(dǎo)致pika無(wú)法正常shutdown的問(wèn)題
- 修復(fù)zrange系列范圍問(wèn)題
- 修復(fù)scan無(wú)法對(duì)多數(shù)據(jù)結(jié)構(gòu)使用match的問(wèn)題
優(yōu)化:
- 內(nèi)部info信息繼續(xù)修正,config get/set修正,目前與redis共有部分保持一致,并且新增了用來(lái)查看引擎內(nèi)存占用(近似值)的db_memtable_usage和db_tablereader_usage信息,分別對(duì)應(yīng)引擎的memtable大小和indexblock緩存大小,注意還有一個(gè)used_memory,該信息主要是配合公司dba同事進(jìn)行redis監(jiān)控的兼容,具體值是db_size對(duì)應(yīng)的字節(jié)數(shù),并無(wú)實(shí)際意義
- 新版?zhèn)浞莨δ埽爰?jí)備份),大幅度提高備份及全同步的速度
- slave在嘗試同步失敗后,出連接失敗重試之外,其他從主返回的錯(cuò)誤都進(jìn)入down狀態(tài),不再重試;
- log信息顯示優(yōu)化,目前包含INFO、ERROR等級(jí),推薦使用INFO
- 端口占用間隔由100改成1000
- 啟動(dòng)后如果發(fā)現(xiàn)open files配置太小,會(huì)嘗試修改為maxclients+5000的大小并打出日志,修改失敗則報(bào)錯(cuò)退出
- 自動(dòng)獲取default網(wǎng)卡ip,不寫(xiě)死eth0;
- 新增info keyspace off命令來(lái)支持手動(dòng)停止后臺(tái)keyspace掃描
- binlog文件(write2file)增加時(shí)間戳信息,提供新舊binlog的轉(zhuǎn)換工具
- binlog文件(write2file)的配套解析、導(dǎo)入、導(dǎo)出、緊急修復(fù)工具
- 新增max-cache-files配置項(xiàng),用來(lái)配置引擎緩存的tablecache的數(shù)量,默認(rèn)是5000,可以通過(guò)調(diào)小來(lái)是pika內(nèi)存占用變小,不過(guò)會(huì)影響性能__(慎用)__
注意事項(xiàng):
由于pika 2.1叫之前版本在配置文件和binlog格式上存在著不兼容,如果繼續(xù)使用老的版本會(huì)導(dǎo)致pika 2.1無(wú)法正常使用,在使用前需要做如下準(zhǔn)備:
配置文件:
使用2.1的配置文件去覆蓋老版本的配置文件
Binlog轉(zhuǎn)換工具:
- 編譯tools/binlog_tools
- 使用編譯生成的binlog_parse來(lái)完成新舊Binlog的轉(zhuǎn)換,具體用法:./binlog_parser -c old2new -i old_binlog_path/write2file0,write2file1,write2file3... -o new_binlog_path , -i 舊路徑后跟需要轉(zhuǎn)換的write2file文件名,一般情況下僅需要轉(zhuǎn)換后幾個(gè)最大的write2file文件即可,轉(zhuǎn)換成功后,將new_binlog_path下的新版binlog和manifest文件拷回覆蓋old_binlog_path`目錄即可正常啟動(dòng)
Binlog回放工具:
pika 2.1 binlog帶有時(shí)間戳,因此可以根據(jù)指定時(shí)間戳根據(jù)binlog恢復(fù)對(duì)應(yīng)時(shí)間段內(nèi)的數(shù)據(jù)到某個(gè)pika實(shí)例。
- 工具目錄:pika/tools/binlog_tools/binlog_sender
- 使用參數(shù):-h 顯示幫助-a 口令-t 日志類(lèi)型,old 或new-i pika實(shí)例的ip-p pika實(shí)例的port-n 輸入的binlog的路徑-f 要轉(zhuǎn)換的binlog號(hào)-s 規(guī)定的起始時(shí)間點(diǎn), 默認(rèn): '2001-00-00 00:59:01'-e 規(guī)定的結(jié)束時(shí)間點(diǎn), 默認(rèn): '2100-01-30 24:00:01'
- 樣例: ./binlog_sender -n /data2/wangwenduo/newlog/ -t new -i 127.0.0.1 -p 10221 -s '2001-10-11 11:11:11' -e '2020-12-11 11:11:11' -f 526,527
- 注意:因?yàn)橐来伟l(fā)送binlog,過(guò)程中可能會(huì)丟部分請(qǐng)求。因此當(dāng)使用binlog_sender回放后,不要?jiǎng)h掉對(duì)應(yīng)的文件以防丟數(shù)據(jù)
更多建議: