ardb在线迁移数据到pika
由于业务需要,之前公司使用的ardb的数据需要迁移到pika上
系统:centOS 6.6
版本:pika2.3 ardb0.9
迁移工具:redis-migrate-tool
一、安装pika2.3
pika 目前已经开源,github 上有相应的资料介绍:
安装使用请参考:https://github.com/Qihoo360/pika/wiki/%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8
pika 的使用跟redis差不多,学习成本低
二、安装ardb0.9
wget https://github.com/yinqiwen/ardb/archive/0.9.zip
unzip 0.9.zip
cd ardb-0.9
make
备注:1、在make的时候,会自动下载jemalloc-5.0.1.tar.bz2 、 snappy-1.1.4.tar.gz、rocksdb-5.8.8.tar.gz(ardb0.9默认的存储引擎)等包
2、如果服务器没有联网,可以根据报错把包手动下载下来,放到 ardb-0.9/deps/目录下,再make
3、在make的过程中可能还会报错:error: unrecognized command line option "-std=c++11" ,请升级 g++ gcc 版本 ,google上一大堆解决方案,我的解决办法参照了github上pika安装使用里面的内容:
wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
sudo yum install --nogpgcheck devtoolset-2
scl enable devtoolset-2 bash
4、在make的过程中可能还会报错:
cd /usr/local/ardb-0.9/deps/jemalloc-5.0.1/ 到目录看,竟然没有lib ? oh my god ! 啥玩意。。。
直接把jemalloc-5.0.1的删掉,手动在 /usr/local/ardb-0.9/deps/下解压安装jemalloc-5.0.5
tar jxf jemalloc-5.0.1.tar.bz2
cd jemalloc-5.0.1
./configure
make && make install
一查看竟然有lib了,什么情况。。。再次make ,安装成功!
5、ardb0.9的配置与使用 :
配置文件:/usr/local/ardb-master/ardb.conf 里面介绍的非常详细,可根据需要调整,默认端口16379
启动: /usr/local/ardb-0.9/src/ardb-server /usr/local/ardb-0.9/ardb.conf
可以使用redis的客户端工具连接: redis-cli -h 127.0.0.1 -p 16379
6、ardb的介绍,使用直接在github上看: https://github.com/yinqiwen/ardb 大部分的命令与redis差不多,学习成本低
三、安装redis-migrate-tool
rmt介绍、安装、使用直接上github上看:https://github.com/vipshop/redis-migrate-tool
迁移工具的来源可以是:单独的redis实例,twemproxy集群,redis cluster,rdb文件,aof文件。
迁移工具的目标可以是:单独的redis实例,twemproxy集群,redis cluster,rdb文件。
四、ardb在线迁移到pika
修改rmt配置文件 vim rmt.conf
[source]
type: redis cluster #如果不行可换成single
servers :
-127.0.0.1:16379 # ardb0.9
[target]
type:single
servers:
-127.0.0.1:6381 # pika2.3
[common]
listen: 127.0.0.1:8888
启动rmt: src/redis-migrate-tool -c rmt.conf -o log -d
状态查看:通过redis-cli连接redis-migrate-tool监控的端口,运行info命令
$redis-cli -h 127.0.0.1 -p 8888
127.0.0.1:8888> info
数据校验(默认1000):
$src/redis-migrate-tool -c rmt.conf -o log -C redis_check
五、总结
遇到的大坑:公司有个ardb0.8.3版本的,数据死活迁移不到redis、pika ,
作为小白的我,用尽了我所想的办法 rdb文件、主从复制、rmt、redis-dump、crs-port 均已失败告终(Error: Bad protocol from MASTER ,貌似通信协议不兼容?)
最后还抱有点希望:拷贝ardb0.8.3的数据目录到ardb0.9 ,无法启动!!! (虽然查看了资料,但是还抱有点幻想:ardb0.9版本重新设计了整个项目,与之前的版本不兼容。)
ERROR Failed to open db:/data/ardb-0.9/data/rocksdb by reason:Invalid argument: ardb.comparator: does not match existing comparator ARDBRocksDB #无法打开rocksb,与当前ardbrocksdb不匹配
ERROR Failed to init database engine:rocksdb. # 初始化rocksdb数据库引擎失败
幸好这个库的数据比较少,也不怎么重要,算了不要了!!!
感悟:冷门的东东少用为妙,到时候哭都哭不出来。。。
补充:
ardb0.9版本之后可以与redis搭建主从,这点还是蛮方便的。