forked from OpenAtomFoundation/pika
-
Notifications
You must be signed in to change notification settings - Fork 74
pika_port 同步 pika 3.0 数据到 todis
rockeet edited this page Jun 8, 2023
·
1 revision
本文目的是使用 pika_port 完成数据导入 todis, 通过 pika_port 完成主从同步。 测试环境为 centos7.3。
如需自己启动一个 pika3.0.16 版本,参照 测试环境启动 pika3.0.16 服务
涉及到 4 台主机
- pika_port:执行 pika_port 具体操作主机
- source: 导出数据的 pika 所在主机
- dest: 导入数据的 todis 所在主机
- dcompact: 导入数据的 todis 使用的 dcompact
我们为 centos7 预编译了 pika_port,您可以直接下载使用:
yum install glog rsync gflags -y
wget https://todis-tar-and-tools.oss-cn-qingdao.aliyuncs.com/tools/pika_port.gz
gzip -d pika_port.gz
chmod +x pika_port
如果你的主机有任何执行问题,可能是不兼容,请参照以下步骤自行编译(参考文档)。
yum install -y git gcc-c++ libstdc++-devel glog-devel
git clone https://github.com/Axlgrep/pika-tools.git
cd ./pika-tools/pika-port/
sh build3.sh
具体操作参考 https://github.com/topling/todis/wiki/todis-on-centos7
pika-port 输出以下内容表示已基本完成磁盘 sst 数据同步。
I0531 18:13:45.426935 10317 binlog_receiver_thread.cc:41] Master Binlog Sender: 10.0.14.205 connecting
I0531 18:13:45.426977 10317 pika_port.cc:212] Start Sync...
I0531 18:13:45.427027 10317 master_conn.cc:258] BinlogReceiverThread AccessHandle succeeded, My server id: 2, Master auth server id: 2
pika_port 进行增量同步是持续性的,不会断的,这个时候可以在源库上使用 info replication 查看slave 的 lag 来确定延迟。
127.0.0.1:6379> info replication
# Replication(MASTER)
role:master
connected_slaves:1
slave0:ip=10.0.14.182,port=9223,state=online,sid=4,lag=115871612
pika_port 参数
# /root/pika_port -h
Usage:
Pika_port_3 reads data from pika 3.0 and send to redis or pika
-h -- show this help
-t -- local host ip(OPTIONAL default: 127.0.0.1)
-p -- local port(OPTIONAL)
-i -- master ip(OPTIONAL default: 127.0.0.1)
-o -- master port(REQUIRED)
-m -- forward ip(OPTIONAL default: 127.0.0.1)
-n -- forward port(REQUIRED)
-x -- forward thread num(OPTIONAL default: 1)
-y -- forward password(OPTIONAL)
-z -- max timeout duration for waiting pika master bgsave data (OPTIONAL default 1800s)
-f -- binlog filenum(OPTIONAL default: local offset)
-s -- binlog offset(OPTIONAL default: local offset)
-w -- password for master(OPTIONAL)
-r -- rsync dump data path(OPTIONAL default: ./rsync_dump)
-l -- local log path(OPTIONAL default: ./log)
-b -- max batch number when port rsync dump data (OPTIONAL default: 512)
-d -- daemonize(OPTIONAL)
-e -- exit(return -1) if dbsync start(OPTIONAL)
example: ./pika_port -t 127.0.0.1 -p 12345 -i 127.0.0.1 -o 9221 -m 127.0.0.1 -n 6379 -x 7 -f 0 -s 0 -w abc -l ./log -r ./rsync_dump -b 512 -d -e
这里写入 shell 方便修改记录参数;
如果是大量数据请自行修改参数 -r
和 -l
用于修改存储数据的文件夹位置。
[root@todis-client ~]# vim source_to_todis.sh
#!/bin/bash
pika_port_bin=/root/pika_port
pika_port_ip=10.0.14.195
pika_port_port=9223
source_ip=10.0.14.192
source_port=6379
source_pass=5a7a417f57f24492a9b1773353d34284
dest_ip=10.0.14.194
dest_port=6379
rm rsync_dump/ log/ -rf
${pika_port_bin} -t ${pika_port_ip} -p ${pika_port_port} -i ${source_ip} -o ${source_port} -m ${dest_ip} -n ${dest_port} -f 0 -s 0 -w ${source_pass}
sh source_to_todis.sh