Skip to content

Releases: OpenAtomFoundation/pika

v2.1.4

10 Jan 03:12
Compare
Choose a tag to compare

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的注意事项

v2.1.3

05 Aug 01:43
Compare
Choose a tag to compare

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的注意事项

v2.1.2

08 Oct 02:46
Compare
Choose a tag to compare

优化:

  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的注意事项

v2.1.1

05 Aug 01:44
Compare
Choose a tag to compare

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的注意事项

v2.1.0

25 Jul 03:52
Compare
Choose a tag to compare

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回放后,不要删掉对应的文件以防丢数据

v2.0.4

02 Jun 08:02
Compare
Choose a tag to compare
  • changes with v2.0.4
    • feature) optimize the performace of spop
    • some code refactor