Releases: OpenAtomFoundation/pika
Releases · OpenAtomFoundation/pika
v2.1.4
Bug修复:
- 修复strlen在记录不存在时不返回0的错误
优化:
- 新增dbsize命令
- 提高手动compact任务在任务队列中的优先级,防止被由于大量del或spop产生小compact任务推迟
- 调整glog逻辑,INFO、WARNING、ERROR、FATAL互不重叠,减小日志冗余
- 设置引擎max_manifest_file_size配置为64M,防止由于服务时间很长加之compact过于频繁而导致引擎MANIFEST文件过大
- 在tools中用对应的代码文件更换二进制文件,通过make现编译生成工具,减少仓库大小;对lib下glog的so文件采用同样策略;支持make distclean方便彻底clean掉pika及submodule项目
注意事项
- pika从2.1.4推荐需要使用gcc 4.8+版本编译,更新gcc后执行make distclean && make __REL=1编译
- 仅支持从2.1.0+版本平滑升级到2.1.4,如果从更早版本升级,请看2.1.0的注意事项
v2.1.3
Bug修复:
- 修复nemo中spop出现的可能卡死或崩溃的错误
- 修复pika在收到错误redis协议(如结尾多一个\r\n)时崩溃的错误
- 修复由于重复close而导致的极少情况下出现问题的错误
- 修复master端在binlogsender连接失败后没有delete相应对象的错误
- 修复nemo中sunionstore、sinterstore中对于multi key需要顺序加锁的问题
优化:
- 调整底层pink结构
- 将trysync的读写超时设置为30s,避免重复发送请求导致master恢复already exist的错误
- 定时检查rsync服务是否正确关闭,修复由于某些异常问题导致rsync服务在该关闭的情况下依旧打开的错误
##注意事项
仅支持从2.1.0、2.1.1及2.1.2平滑升级到2.1.3,如果从更早版本升级,请看2.1.0的注意事项
v2.1.2
优化:
- 新增指定网卡配置项network-interface,解决2.1.1在绑定网卡后导致客户端使用127.0.0.1无法连接pika的问题,默认为不绑定任何网卡
- 新增slaveof配置项,可以将主从配置写在配置文件中,pika启动后自动建立主从关系,默认为空
- 修改info中use_memory计算方式,改为rocksdb memtable+tablecache的大小
- 修改部分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
Bug修复:
- 修复master在记录待全同步slave的列表时由于没有加锁而导致可能出现的问题(出现概率较低)
- 修复slave在小概率下与master断开并无法继续建立主从关系的bug(出现概率较低)
- 修复在执行ltrim key 1 -1之后,rpush返回失败的bug
优化:
- 新增指定网卡的配置项
- 新增config resetstat
- binlog_sync工具不需要指定端口
- binlog_sender工具支持对文件进行范围指定
注意事项:
仅支持从2.1.0平滑升级到2.1.1,如果从更早版本升级,请看2.1.0的注意事项
v2.1.0
Bug修复:
- monitor修复二进制的显示(转为16进制)
- zcard命令无法在从库执行的bug(检查其它接口是否存在相同问题)、select变成写入命令的bug
- 修复由于后台执行info keyspace 1 而导致pika无法正常shutdown的问题
- 修复zrange系列范围问题
- 修复scan无法对多数据结构使用match的问题
优化:
- 内部info信息继续修正,config get/set修正,目前与redis共有部分保持一致,并且新增了用来查看引擎内存占用(近似值)的db_memtable_usage和db_tablereader_usage信息,分别对应引擎的memtable大小和indexblock缓存大小,注意还有一个used_memory,该信息主要是配合公司dba同事进行redis监控的兼容,具体值是db_size对应的字节数,并无实际意义
- 新版备份功能(秒级备份),大幅度提高备份及全同步的速度
- slave在尝试同步失败后,出连接失败重试之外,其他从主返回的错误都进入down状态,不再重试;
- log信息显示优化,目前包含INFO、ERROR等级,推荐使用INFO
- 端口占用间隔由100改成1000
- 启动后如果发现open files配置太小,会尝试修改为maxclients+5000的大小并打出日志,修改失败则报错退出
- 自动获取default网卡ip,不写死eth0;
- 新增info keyspace off命令来支持手动停止后台keyspace扫描
- binlog文件(write2file)增加时间戳信息,提供新旧binlog的转换工具
- binlog文件(write2file)的配套解析、导入、导出、紧急修复工具
- 新增max-cache-files配置项,用来配置引擎缓存的tablecache的数量,默认是5000,可以通过调小来是pika内存占用变小,不过会影响性能__(慎用)__
注意事项:
由于pika 2.1叫之前版本在配置文件和binlog格式上存在着不兼容,如果继续使用老的版本会导致pika 2.1无法正常使用,在使用前需要做如下准备:
配置文件:
使用2.1的配置文件去覆盖老版本的配置文件
Binlog转换工具:
- 编译tools/binlog_tools
- 使用编译生成的
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实例。
-
工具目录:pika/tools/binlog_tools/binlog_sender
-
使用参数:
- -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'
-
样例: ./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
-
注意:因为依次发送binlog,过程中可能会丢部分请求。因此当使用binlog_sender回放后,不要删掉对应的文件以防丢数据