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