pika更新日志

2018-09-28 10:42 更新

pika 2.2.6

Bug修复:

  1. 修复在强制全同步失败后,主从同步无法恢复的问题
  2. 修复在内部切换DB后,配置发生变动的问题

优化:

  1. keys命令新增参数支持扫描指定类型的数据,用法如 "keys * [string, hash, list, zset, set]"
  2. 新增compact-interval配置项来周期检查并执行全局compact,具体用法见conf文件内说明【注:如果同时配置compact-interval和compact-cron,前者优先级更高,后者会自动失效,直到关闭compact-interval后重新生效】
  3. 优化在连接数和请求数据同时较大(如执行HGETALL等命令)时pika内存占用多的问题
  4. 取消编译时对protobuf的依赖,编译更容易
  5. 新增pika_to_txt,txt_to_pika工具,支持将kv数据从pika导入到文本,或反向导回

注意事项

  1. pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
  2. 仅支持从2.1.0+版本平滑升级到2.2.6,如果从更早版本升级,请看2.1.0的注意事项

Downloads

pika 2.2.5

Bug修复:

  1. 修复在断网并恢复后有可能导致主从长时间无法恢复数据同步的问题
  2. 修复delbackup和dump-expire可能导致备份数据删除不完整的问题
  3. 修复codis下slot_num的错误问题
  4. 修复了codis下slot迁移会丢失同名其它类型数据的问题

优化:

  1. 大幅度优化pika_to_redis工具,并且支持redis auth
  2. 优化全同步的速度
  3. 主从同步异常后,用无限重试取代之前进入直接sync_error状态,解决由于already exist错误导致的主从无法发重新建立的问题
  4. 调整Makefile,优化编译体验

注意事项

  1. pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make编译
  2. 仅支持从2.1.0+版本平滑升级到2.2.5,如果从更早版本升级,请看2.1.0的注意事项

Downloads

pika 2.2.4

Bug修复:

  1. 修复hscan, zscan, sscan在同时传入count和match时,会扫描累计满足count个match pattern的错误
  2. 修复aof_to_pika的在大value时会变慢的问题

优化:

  1. 支持delbackup命令,删除dump目录下除正在使用(全同步中)的db快照外的其他快照
  2. 支持expire-dump-days配置,可以按天自动给删除不需要的db快照
  3. 支持time命令
  4. 更新pink到3.0.4,重构并优化pink

注意事项

  1. pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make __REL=1编译
  2. 仅支持从2.1.0+版本平滑升级到2.2.4,如果从更早版本升级,请看2.1.0的注意事项

Downloads

pika 2.2.3

Bug修复:

  1. 修复nemo-rocksdb在open时可能过早schedule autocompaction而崩溃的问题
  2. 修复在出现EPOLLERR或EPOLLHUP时,造成内存泄漏的问题

注意事项

  1. pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make __REL=1编译
  2. 仅支持从2.1.0+版本平滑升级到2.2.3,如果从更早版本升级,请看2.1.0的注意事项

Downloads

pika 2.2.2

Bug修复:

  1. 修复如果主从同步数据的连接意外断开,将不会继续同步的问题
  2. 修复ttl,persit接口在某些已删除key返回值不正确的问题
  3. 修复scan命令当count传0时崩溃的问题

优化:

  1. 如果编译环境安装tcmalloc,则默认使用tcmalloc,并额外提供tcmalloc命令来进行内存查询及管理
  2. 整理pikatests目录,改名为tests

tcmalloc命令说明

该命令仅在编译pika的环境安装tcmalloc时才生效

具体用法:

  1. tcmalloc stats: 打印tcmalloc的stats信息
  2. tcmalloc list: 打印tcmalloc的FreeList详细信息
  3. tcmalloc rate: 打印tcmalloc的FLAGS_tcmalloc_release_rate值
  4. tcmalloc rate [0-10]: 设置tcmalloc的FLAGS_tcmalloc_release_rate值 【不要轻易改动】
  5. tcmalloc free: 强制tcmalloc尽可能多的释放自身缓存的内存,还给操作系统

注意事项

  1. pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make __REL=1编译
  2. 仅支持从2.1.0+版本平滑升级到2.2.2,如果从更早版本升级,请看2.1.0的注意事项

Downloads

pika 2.2.1

Bug修复:

  1. 修复BinlogSender使用阻塞write,在slave卡死(如盘坏)的情况下,连带卡死master的问题
  2. 修复bit接口中正确性的问题
  3. 修复执行monitor造成内存泄漏的问题
  4. 修复在bind时可能崩溃的问题
  5. 修复在主从级联:A<-B<-C时,C执行slaveof no one后B主从状态没有更新的问题
  6. 修复当正在执行后台compaction任务时,pika不能正常退出的问题

优化:

  1. 新增配置项compact-cron,支持在每天指定时段内检测并在必要时进行全局compact
  2. 新增slaveof ip port force命令,强行全同步,适合主库db是从其他实例拷贝并加载而来,此时可以用此命令来为其挂从库
  3. rocksdb自身LOG按512M大小进行切分
  4. 慢日志记录更多信息(命令,key,value等),单条最长1K
  5. 精简部分日志
  6. 重写ssdb_to_pika工具,可以更快速的将ssdb数据迁移至pika

推荐

pika推荐使用tcmalloc来进行内存管理

注意事项

  1. pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make __REL=1编译
  2. 仅支持从2.1.0+版本平滑升级到2.2.1,如果从更早版本升级,请看2.1.0的注意事项

Downloads

pika 2.2.0

Bug修复:

  1. 修复在scan含有过期key的时候可能出现的死循环的问题
  2. 修复在range操作中可能出现的读不出来key的问题
  3. 修复在大量短连接情况下执行慢请求造成fd耗尽的问题
  4. 修复bgsave和info同时执行在极小概率下出现死锁的问题

优化:

  1. 支持对过期及已删除meta key的compact回收
  2. 提高range操作的性能
  3. 提高写入性能(set接口提高30%)
  4. select命令限制dbnum上限(16)
  5. 支持接入codis
  6. 支持Geo
  7. 支持Hyperloglog
  8. 解耦rocksdb,重新实现nemo依赖的引擎特性,支持后续快速跟进官方版本,2.2.0使用rocksdb v5.0.1
  9. 支持多线程compact

注意事项

  1. pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make __REL=1编译
  2. 仅支持从2.1.0+版本平滑升级到2.2.0,如果从更早版本升级,请看2.1.0的注意事项

Downloads

pika 2.1.4

Bug修复:

  1. 修复strlen在记录不存在时不返回0的错误

优化:

  1. 新增dbsize命令
  2. 提高手动compact任务在任务队列中的优先级,防止被由于大量del或spop产生小compact任务推迟
  3. 调整glog逻辑,INFO、WARNING、ERROR、FATAL互不重叠,减小日志冗余
  4. 设置引擎max_manifest_file_size配置为64M,防止由于服务时间很长加之compact过于频繁而导致引擎MANIFEST文件过大
  5. 在tools中用对应的代码文件更换二进制文件,通过make现编译生成工具,减少仓库大小;对lib下glog的so文件采用同样策略;支持make distclean方便彻底clean掉pika及submodule项目

注意事项

  1. pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make __REL=1编译
  2. 仅支持从2.1.0+版本平滑升级到2.1.4,如果从更早版本升级,请看2.1.0的注意事项

Downloads

pika 2.1.3

Bug修复:

  1. 修复nemo中spop出现的可能卡死或崩溃的错误
  2. 修复pika在收到错误redis协议(如结尾多一个\r\n)时崩溃的错误
  3. 修复由于重复close而导致的极少情况下出现问题的错误
  4. 修复master端在binlogsender连接失败后没有delete相应对象的错误
  5. 修复nemo中sunionstore、sinterstore中对于multi key需要顺序加锁的问题

优化:

  1. 调整底层pink结构
  2. 将trysync的读写超时设置为30s,避免重复发送请求导致master恢复already exist的错误
  3. 定时检查rsync服务是否正确关闭,修复由于某些异常问题导致rsync服务在该关闭的情况下依旧打开的错误

##注意事项

仅支持从2.1.0、2.1.1及2.1.2平滑升级到2.1.3,如果从更早版本升级,请看2.1.0的注意事项

Downloads

pika 2.1.2

优化:

  1. 新增指定网卡配置项network-interface,解决2.1.1在绑定网卡后导致客户端使用127.0.0.1无法连接pika的问题,默认为不绑定任何网卡
  2. 新增slaveof配置项,可以将主从配置写在配置文件中,pika启动后自动建立主从关系,默认为空
  3. 修改info中use_memory计算方式,改为rocksdb memtable+tablecache的大小
  4. 修改部分info信息,原db_size、log_size、use_memory改为以字节为单位,并新增db_size_human、log_size_human、use_memory_human为对应以M为单位的显示

注意事项

仅支持从2.1.0及2.1.1平滑升级到2.1.2,如果从更早版本升级,请看2.1.0的注意事项

Downloads

pika 2.1.1:

Bug修复:

  1. 修复master在记录待全同步slave的列表时由于没有加锁而导致可能出现的问题(出现概率较低)
  2. 修复slave在小概率下与master断开并无法继续建立主从关系的bug(出现概率较低)
  3. 修复在执行ltrim key 1 -1之后,rpush返回失败的bug

优化:

  1. 新增指定网卡的配置项
  2. 新增config resetstat
  3. binlog_sync工具不需要指定端口
  4. binlog_sender工具支持对文件进行范围指定

注意事项:

仅支持从2.1.0平滑升级到2.1.1,如果从更早版本升级,请看2.1.0的注意事项

pika 2.1.0:

Bug修复:

  1. monitor修复二进制的显示(转为16进制)
  2. zcard命令无法在从库执行的bug(检查其它接口是否存在相同问题)、select变成写入命令的bug
  3. 修复由于后台执行info keyspace 1 而导致pika无法正常shutdown的问题
  4. 修复zrange系列范围问题
  5. 修复scan无法对多数据结构使用match的问题

优化:

  1. 内部info信息继续修正,config get/set修正,目前与redis共有部分保持一致,并且新增了用来查看引擎内存占用(近似值)的db_memtable_usage和db_tablereader_usage信息,分别对应引擎的memtable大小和indexblock缓存大小,注意还有一个used_memory,该信息主要是配合公司dba同事进行redis监控的兼容,具体值是db_size对应的字节数,并无实际意义
  2. 新版备份功能(秒级备份),大幅度提高备份及全同步的速度
  3. slave在尝试同步失败后,出连接失败重试之外,其他从主返回的错误都进入down状态,不再重试;
  4. log信息显示优化,目前包含INFO、ERROR等级,推荐使用INFO
  5. 端口占用间隔由100改成1000
  6. 启动后如果发现open files配置太小,会尝试修改为maxclients+5000的大小并打出日志,修改失败则报错退出
  7. 自动获取default网卡ip,不写死eth0;
  8. 新增info keyspace off命令来支持手动停止后台keyspace扫描
  9. binlog文件(write2file)增加时间戳信息,提供新旧binlog的转换工具
  10. binlog文件(write2file)的配套解析、导入、导出、紧急修复工具
  11. 新增max-cache-files配置项,用来配置引擎缓存的tablecache的数量,默认是5000,可以通过调小来是pika内存占用变小,不过会影响性能__(慎用)__

注意事项:

由于pika 2.1叫之前版本在配置文件和binlog格式上存在着不兼容,如果继续使用老的版本会导致pika 2.1无法正常使用,在使用前需要做如下准备:

配置文件:

使用2.1的配置文件去覆盖老版本的配置文件

Binlog转换工具:

  1. 编译tools/binlog_tools
  2. 使用编译生成的binlog_parse来完成新旧Binlog的转换,具体用法:./binlog_parser -c old2new -i old_binlog_path/write2file0,write2file1,write2file3... -o new_binlog_path , -i 旧路径后跟需要转换的write2file文件名,一般情况下仅需要转换后几个最大的write2file文件即可,转换成功后,将new_binlog_path下的新版binlog和manifest文件拷回覆盖old_binlog_path`目录即可正常启动

Binlog回放工具:

pika 2.1 binlog带有时间戳,因此可以根据指定时间戳根据binlog恢复对应时间段内的数据到某个pika实例。

  1. 工具目录:pika/tools/binlog_tools/binlog_sender
  2. 使用参数:-h 显示帮助-a 口令-t 日志类型,old 或new-i pika实例的ip-p pika实例的port-n 输入的binlog的路径-f 要转换的binlog号-s 规定的起始时间点, 默认: '2001-00-00 00:59:01'-e 规定的结束时间点, 默认: '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. 注意:因为依次发送binlog,过程中可能会丢部分请求。因此当使用binlog_sender回放后,不要删掉对应的文件以防丢数据


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号