pika更新日志

2018-09-28 10:42 更新

pika 2.2.6

Bug修復(fù):

  1. 修復(fù)在強(qiáng)制全同步失敗后,主從同步無法恢復(fù)的問題
  2. 修復(fù)在內(nèi)部切換DB后,配置發(fā)生變動的問題

優(yōu)化:

  1. keys命令新增參數(shù)支持掃描指定類型的數(shù)據(jù),用法如 "keys * [string, hash, list, zset, set]"
  2. 新增compact-interval配置項來周期檢查并執(zhí)行全局compact,具體用法見conf文件內(nèi)說明【注:如果同時配置compact-interval和compact-cron,前者優(yōu)先級更高,后者會自動失效,直到關(guān)閉compact-interval后重新生效】
  3. 優(yōu)化在連接數(shù)和請求數(shù)據(jù)同時較大(如執(zhí)行HGETALL等命令)時pika內(nèi)存占用多的問題
  4. 取消編譯時對protobuf的依賴,編譯更容易
  5. 新增pika_to_txt,txt_to_pika工具,支持將kv數(shù)據(jù)從pika導(dǎo)入到文本,或反向?qū)Щ?/li>

注意事項

  1. pika從2.1.4推薦需要使用gcc 4.8+版本編譯,更新gcc后執(zhí)行make distclean && make編譯
  2. 僅支持從2.1.0+版本平滑升級到2.2.6,如果從更早版本升級,請看2.1.0的注意事項

Downloads

pika 2.2.5

Bug修復(fù):

  1. 修復(fù)在斷網(wǎng)并恢復(fù)后有可能導(dǎo)致主從長時間無法恢復(fù)數(shù)據(jù)同步的問題
  2. 修復(fù)delbackup和dump-expire可能導(dǎo)致備份數(shù)據(jù)刪除不完整的問題
  3. 修復(fù)codis下slot_num的錯誤問題
  4. 修復(fù)了codis下slot遷移會丟失同名其它類型數(shù)據(jù)的問題

優(yōu)化:

  1. 大幅度優(yōu)化pika_to_redis工具,并且支持redis auth
  2. 優(yōu)化全同步的速度
  3. 主從同步異常后,用無限重試取代之前進(jìn)入直接sync_error狀態(tài),解決由于already exist錯誤導(dǎo)致的主從無法發(fā)重新建立的問題
  4. 調(diào)整Makefile,優(yōu)化編譯體驗

注意事項

  1. pika從2.1.4推薦需要使用gcc 4.8+版本編譯,更新gcc后執(zhí)行make distclean && make編譯
  2. 僅支持從2.1.0+版本平滑升級到2.2.5,如果從更早版本升級,請看2.1.0的注意事項

Downloads

pika 2.2.4

Bug修復(fù):

  1. 修復(fù)hscan, zscan, sscan在同時傳入count和match時,會掃描累計滿足count個match pattern的錯誤
  2. 修復(fù)aof_to_pika的在大value時會變慢的問題

優(yōu)化:

  1. 支持delbackup命令,刪除dump目錄下除正在使用(全同步中)的db快照外的其他快照
  2. 支持expire-dump-days配置,可以按天自動給刪除不需要的db快照
  3. 支持time命令
  4. 更新pink到3.0.4,重構(gòu)并優(yōu)化pink

注意事項

  1. pika從2.1.4推薦需要使用gcc 4.8+版本編譯,更新gcc后執(zhí)行make distclean && make __REL=1編譯
  2. 僅支持從2.1.0+版本平滑升級到2.2.4,如果從更早版本升級,請看2.1.0的注意事項

Downloads

pika 2.2.3

Bug修復(fù):

  1. 修復(fù)nemo-rocksdb在open時可能過早schedule autocompaction而崩潰的問題
  2. 修復(fù)在出現(xiàn)EPOLLERR或EPOLLHUP時,造成內(nèi)存泄漏的問題

注意事項

  1. pika從2.1.4推薦需要使用gcc 4.8+版本編譯,更新gcc后執(zhí)行make distclean && make __REL=1編譯
  2. 僅支持從2.1.0+版本平滑升級到2.2.3,如果從更早版本升級,請看2.1.0的注意事項

Downloads

pika 2.2.2

Bug修復(fù):

  1. 修復(fù)如果主從同步數(shù)據(jù)的連接意外斷開,將不會繼續(xù)同步的問題
  2. 修復(fù)ttl,persit接口在某些已刪除key返回值不正確的問題
  3. 修復(fù)scan命令當(dāng)count傳0時崩潰的問題

優(yōu)化:

  1. 如果編譯環(huán)境安裝tcmalloc,則默認(rèn)使用tcmalloc,并額外提供tcmalloc命令來進(jìn)行內(nèi)存查詢及管理
  2. 整理pikatests目錄,改名為tests

tcmalloc命令說明

該命令僅在編譯pika的環(huán)境安裝tcmalloc時才生效

具體用法:

  1. tcmalloc stats: 打印tcmalloc的stats信息
  2. tcmalloc list: 打印tcmalloc的FreeList詳細(xì)信息
  3. tcmalloc rate: 打印tcmalloc的FLAGS_tcmalloc_release_rate值
  4. tcmalloc rate [0-10]: 設(shè)置tcmalloc的FLAGS_tcmalloc_release_rate值 【不要輕易改動】
  5. tcmalloc free: 強(qiáng)制tcmalloc盡可能多的釋放自身緩存的內(nèi)存,還給操作系統(tǒng)

注意事項

  1. pika從2.1.4推薦需要使用gcc 4.8+版本編譯,更新gcc后執(zhí)行make distclean && make __REL=1編譯
  2. 僅支持從2.1.0+版本平滑升級到2.2.2,如果從更早版本升級,請看2.1.0的注意事項

Downloads

pika 2.2.1

Bug修復(fù):

  1. 修復(fù)BinlogSender使用阻塞write,在slave卡死(如盤壞)的情況下,連帶卡死m(xù)aster的問題
  2. 修復(fù)bit接口中正確性的問題
  3. 修復(fù)執(zhí)行monitor造成內(nèi)存泄漏的問題
  4. 修復(fù)在bind時可能崩潰的問題
  5. 修復(fù)在主從級聯(lián):A<-B<-C時,C執(zhí)行slaveof no one后B主從狀態(tài)沒有更新的問題
  6. 修復(fù)當(dāng)正在執(zhí)行后臺compaction任務(wù)時,pika不能正常退出的問題

優(yōu)化:

  1. 新增配置項compact-cron,支持在每天指定時段內(nèi)檢測并在必要時進(jìn)行全局compact
  2. 新增slaveof ip port force命令,強(qiáng)行全同步,適合主庫db是從其他實例拷貝并加載而來,此時可以用此命令來為其掛從庫
  3. rocksdb自身LOG按512M大小進(jìn)行切分
  4. 慢日志記錄更多信息(命令,key,value等),單條最長1K
  5. 精簡部分日志
  6. 重寫ssdb_to_pika工具,可以更快速的將ssdb數(shù)據(jù)遷移至pika

推薦

pika推薦使用tcmalloc來進(jìn)行內(nèi)存管理

注意事項

  1. pika從2.1.4推薦需要使用gcc 4.8+版本編譯,更新gcc后執(zhí)行make distclean && make __REL=1編譯
  2. 僅支持從2.1.0+版本平滑升級到2.2.1,如果從更早版本升級,請看2.1.0的注意事項

Downloads

pika 2.2.0

Bug修復(fù):

  1. 修復(fù)在scan含有過期key的時候可能出現(xiàn)的死循環(huán)的問題
  2. 修復(fù)在range操作中可能出現(xiàn)的讀不出來key的問題
  3. 修復(fù)在大量短連接情況下執(zhí)行慢請求造成fd耗盡的問題
  4. 修復(fù)bgsave和info同時執(zhí)行在極小概率下出現(xiàn)死鎖的問題

優(yōu)化:

  1. 支持對過期及已刪除meta key的compact回收
  2. 提高range操作的性能
  3. 提高寫入性能(set接口提高30%)
  4. select命令限制dbnum上限(16)
  5. 支持接入codis
  6. 支持Geo
  7. 支持Hyperloglog
  8. 解耦rocksdb,重新實現(xiàn)nemo依賴的引擎特性,支持后續(xù)快速跟進(jìn)官方版本,2.2.0使用rocksdb v5.0.1
  9. 支持多線程compact

注意事項

  1. pika從2.1.4推薦需要使用gcc 4.8+版本編譯,更新gcc后執(zhí)行make distclean && make __REL=1編譯
  2. 僅支持從2.1.0+版本平滑升級到2.2.0,如果從更早版本升級,請看2.1.0的注意事項

Downloads

pika 2.1.4

Bug修復(fù):

  1. 修復(fù)strlen在記錄不存在時不返回0的錯誤

優(yōu)化:

  1. 新增dbsize命令
  2. 提高手動compact任務(wù)在任務(wù)隊列中的優(yōu)先級,防止被由于大量del或spop產(chǎn)生小compact任務(wù)推遲
  3. 調(diào)整glog邏輯,INFO、WARNING、ERROR、FATAL互不重疊,減小日志冗余
  4. 設(shè)置引擎max_manifest_file_size配置為64M,防止由于服務(wù)時間很長加之compact過于頻繁而導(dǎo)致引擎MANIFEST文件過大
  5. 在tools中用對應(yīng)的代碼文件更換二進(jìn)制文件,通過make現(xiàn)編譯生成工具,減少倉庫大??;對lib下glog的so文件采用同樣策略;支持make distclean方便徹底clean掉pika及submodule項目

注意事項

  1. pika從2.1.4推薦需要使用gcc 4.8+版本編譯,更新gcc后執(zhí)行make distclean && make __REL=1編譯
  2. 僅支持從2.1.0+版本平滑升級到2.1.4,如果從更早版本升級,請看2.1.0的注意事項

Downloads

pika 2.1.3

Bug修復(fù):

  1. 修復(fù)nemo中spop出現(xiàn)的可能卡死或崩潰的錯誤
  2. 修復(fù)pika在收到錯誤redis協(xié)議(如結(jié)尾多一個\r\n)時崩潰的錯誤
  3. 修復(fù)由于重復(fù)close而導(dǎo)致的極少情況下出現(xiàn)問題的錯誤
  4. 修復(fù)master端在binlogsender連接失敗后沒有delete相應(yīng)對象的錯誤
  5. 修復(fù)nemo中sunionstore、sinterstore中對于multi key需要順序加鎖的問題

優(yōu)化:

  1. 調(diào)整底層pink結(jié)構(gòu)
  2. 將trysync的讀寫超時設(shè)置為30s,避免重復(fù)發(fā)送請求導(dǎo)致master恢復(fù)already exist的錯誤
  3. 定時檢查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)化:

  1. 新增指定網(wǎng)卡配置項network-interface,解決2.1.1在綁定網(wǎng)卡后導(dǎo)致客戶端使用127.0.0.1無法連接pika的問題,默認(rèn)為不綁定任何網(wǎng)卡
  2. 新增slaveof配置項,可以將主從配置寫在配置文件中,pika啟動后自動建立主從關(guān)系,默認(rèn)為空
  3. 修改info中use_memory計算方式,改為rocksdb memtable+tablecache的大小
  4. 修改部分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ù):

  1. 修復(fù)master在記錄待全同步slave的列表時由于沒有加鎖而導(dǎo)致可能出現(xiàn)的問題(出現(xiàn)概率較低)
  2. 修復(fù)slave在小概率下與master斷開并無法繼續(xù)建立主從關(guān)系的bug(出現(xiàn)概率較低)
  3. 修復(fù)在執(zhí)行l(wèi)trim key 1 -1之后,rpush返回失敗的bug

優(yōu)化:

  1. 新增指定網(wǎng)卡的配置項
  2. 新增config resetstat
  3. binlog_sync工具不需要指定端口
  4. binlog_sender工具支持對文件進(jìn)行范圍指定

注意事項:

僅支持從2.1.0平滑升級到2.1.1,如果從更早版本升級,請看2.1.0的注意事項

pika 2.1.0:

Bug修復(fù):

  1. monitor修復(fù)二進(jìn)制的顯示(轉(zhuǎn)為16進(jìn)制)
  2. zcard命令無法在從庫執(zhí)行的bug(檢查其它接口是否存在相同問題)、select變成寫入命令的bug
  3. 修復(fù)由于后臺執(zhí)行info keyspace 1 而導(dǎo)致pika無法正常shutdown的問題
  4. 修復(fù)zrange系列范圍問題
  5. 修復(fù)scan無法對多數(shù)據(jù)結(jié)構(gòu)使用match的問題

優(yōu)化:

  1. 內(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ù),并無實際意義
  2. 新版?zhèn)浞莨δ埽爰墏浞荩蠓忍岣邆浞菁叭降乃俣?/li>
  3. slave在嘗試同步失敗后,出連接失敗重試之外,其他從主返回的錯誤都進(jìn)入down狀態(tài),不再重試;
  4. log信息顯示優(yōu)化,目前包含INFO、ERROR等級,推薦使用INFO
  5. 端口占用間隔由100改成1000
  6. 啟動后如果發(fā)現(xiàn)open files配置太小,會嘗試修改為maxclients+5000的大小并打出日志,修改失敗則報錯退出
  7. 自動獲取default網(wǎng)卡ip,不寫死eth0;
  8. 新增info keyspace off命令來支持手動停止后臺keyspace掃描
  9. binlog文件(write2file)增加時間戳信息,提供新舊binlog的轉(zhuǎn)換工具
  10. binlog文件(write2file)的配套解析、導(dǎo)入、導(dǎo)出、緊急修復(fù)工具
  11. 新增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)換工具:

  1. 編譯tools/binlog_tools
  2. 使用編譯生成的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實例。

  1. 工具目錄:pika/tools/binlog_tools/binlog_sender
  2. 使用參數(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'
  3. 樣例: ./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
  4. 注意:因為依次發(fā)送binlog,過程中可能會丟部分請求。因此當(dāng)使用binlog_sender回放后,不要刪掉對應(yīng)的文件以防丟數(shù)據(jù)


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號