360 Pika 主从配置

Pika出现不是替代redis,而是对redis的补充。基于这一点pika可以完全兼容redis 的协议,继承redis便携运维的设计前提西安通过持久化得方式解决redis的大容量场景下的回复时间慢,主从同步代价高、单线程相对脆弱、承载数据较有限、内存成本高昂等。

Pika的特点:

完全兼容redis协议,

持久化操作:对于redis的持久化是周期性的rdb(快照)、aof(日志记录式)的持久化方式。但pika是自动持久化方式。

成本廉价。ssd固态硬盘存储

多线程设计(可以自行设计线程数目)

运维便捷轻松

安装方式:

 Pika获取地址:https://github.com/Qihoo360/pika/ 源码地址,安装可以选则二进制安装包或源码安装,此处采用源码安装:
1. unzip file(解压pika压缩包)

$ tar zxf pikaX.Y.Z_xxx_bin.tar.gz

2. change working directory to output(解压完成进入启动目录 output)

note: we should in this directory, caz the RPATH is./lib;

$ cd output

1. run pika(运行pika)

$ ./bin/pika -c conf/pika.conf

如需后台运行需要在pika.conf文件中开启进程守护:deamonize:yes

2.   Pika并没有自己的客户端,但是其和Redis完全兼容,因此我们可以使用redis客户端redis-cli连接即可。

$ ./bin/src/redis-cli –h 127.0.0.1 –p 9221 –a admin

其中-h指Pika服务所在主机地址

    -p指定Pika服务对外提供端口,默认端口9221;

    -a指定pika服务连接密码,默认为空

本地测试ok

3.   Pika主从服务配置和 Redis相似。修改pika.conf文件如下图所示,配置主机Ip和port;

在配属主从服务集群服务时对从服务在pika.conf配置只读信息salve-read-only:1;

Info Replication 查看主从配置情况。

实现主从同步功能。

注意防火墙开放端口。

Pika 数据恢复分为两种方式 aof日志和rdb 快照。Aof 随着时间积累,文件不断增大,数据恢复速度变慢,但数据同步效率较高。

可在pika.config 文件开启AOF持久化:appendonly yes/no 持久化文件名称appendfilename “appendonly.aof”

Pika配置文件pika.conf说明:

# Pika 端口
port : 9221
 
# pika进程数量,不建议超过核心数量,pika是多线程的
thread-num : 1
 
# Sync 线程数量
sync-thread-num : 6
 
# sync 处理线程的任务队列大小,一般没有必要修改
sync-buffer-size : 10
 
# Pika日志目录
log-path : ./log/
 
# Pika 的log级别,任何一个级别均记录慢日志
loglevel : info
 
# Pika数据目录
db-path : ./db/
 
# Pika 底层引擎的write_buffer_size配置,大,会快,但越大刷盘越久,需要权衡,实际上在测试中发现再大意义也不大了
write-buffer-size : 268435456
 
# Pika 的连接超时时间,就是连接sleep多久了就把它断开
timeout : 60
 
# 密码管理员密码,默认为空
requirepass : password
 
# Masterauth
masterauth :
 
# 用户密码,默认为空
userpass : userpass
 
# 指令黑名单,普通用户将不能使用黑名单中的指令。指令之间使用“,”隔开。默认为空
userblacklist : FLUSHALL,SHUTDOWN
 
# Pika的dump文件名称前缀
dump-prefix : pika9001-
 
# 守护进程模式  [yes | no]
daemonize : yes
 
# slotmigrate  [yes | no]
#slotmigrate : no
 
# Pika dump目录
dump-path : /data1/pika9001/dump/
 
# pidfile Path pid文件目录
pidfile : /data1/pika9001/pid/9001.pid
 
# Max Connection 
maxconnection : 20000
 
# rocks-db的sst文件体积,sst文件是层级的,文件越小,速度越快,合并代价越低,但文件数量就会超多,而文件越大,速度相对变慢,合并代价大,但文件数量会很少,默认是 20M
target-file-size-base : 20971520
 
# write2file文件保留时间,7天,最小为1,超过7天的文件会被自动清理
expire-logs-days : 7
 
# write2file文件最大数量,200个,最小为10,超过200个就开始自动清理,始终保留200
expire-logs-nums : 200
 
# root用户连接保证数量:2个,即时Max Connection用完,该参数也能确保本地(127.0.0.1)有10个连接可以同来登陆pika
root-connection-num : 2
 
# 慢日志记录时间,单位为微秒
slowlog-log-slower-than : 10000
 
# slave是否是只读状态(yes/no, 1/0)
# slave-read-only : 0
 
# Pika db 同步路径
db-sync-path : ./dbsync/
 
# db sync speed(MB) max is set to 125MB, min is set to 0, and if below 0 or above 125, the value will be adjust to 125
db-sync-speed : -1
 
# 指定网卡
# network-interface : eth1
# replication
# slaveof : master-ip:master-port
 
###################
## Critical Settings
###################
# # write2file文件体积,默认为100MB,一旦启动不可修改,  limited in [1K, 2G]
binlog-file-size : 104857600
 
# 压缩方式[snappy | none]默认为snappy,一旦启动不可修改
compression : snappy
 
# 指定后台flush线程数量,默认为1,范围为[1, 4]
max-background-flushes : 1
 
# 指定后台压缩线程数量,默认为1,范围为[1, 4]
max-background-compactions : 1
 
# max-cache-files default is 5000
max-cache-files : 5000

Pika工具包

Pika拥有自带的tools目录。其中包含pika根据时间戳回复数据工具,Redis到Pika的迁移工具,Redis请求实时copy到Pika工具,Pika到Redis的迁移工具,Pika_to_redis的实时过程分析结果

pika根据时间戳恢复数据工具

pika新版binlog有时间戳,开发binlog_sender工具,根据输入的时间段回放对应数据到某个pika实例

工具目录:

pika/tools/binlog_tools/binlog_sender

使用参数:

-h -- 显示帮助 -t -- l 显示日志类型,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回放后,不要删掉对应的文件以防丢数据

性能指标:

经测算,新binlog到pika实例 ,100m文件转换时间为分钟级,和机器及网络有关

Redis到pika迁移工具

使用:

Parameters:
-i: aof file
-h: the target host
-p: the target port
-a: the target auth
-v: show more information
Example: ./aof -i ./appendonly.aof -h 127.0.0.1 -p 6379 -a abc -v

pika到redis迁移工具

Usage: ./pika_to_redis db_path <ip> <port> <num_sender>
$ ./pika_to_redis ~/db 127.0.0.1 6379 20

在Pika2.3.4版本之前的版本中SRANDMEMBER命令一个不兼容Redis的地方,当SRANDMEMBER somekey 1 的时候,返回的结果不是array类型,而是 Bulk Strings类型,但是Redis 只要count值不为空就会返回数组,当count为空时就会随机返回一个值(string)。希望注意。

 

 

参考资料来源于

https://www.w3cschool.cn/pika/pika-5xvb2dir.html

 

 

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值