KCacheTeam / pika-tools

move data from pika to pika/redis. This repo has been included by pika as offically data migration tool.
https://github.com/Qihoo360/pika/wiki/pika%E5%88%B0redis%E8%BF%81%E7%A7%BB%E5%B7%A5%E5%85%B7
14 stars 5 forks source link

刚启动打印Ping master error #7

Open vinllen opened 5 years ago

vinllen commented 5 years ago

pika: 3.0.6, pika-tools下载的3.0.x版本,稳定复现,与源pika同机部署,无网络问题。

pika_binlog.cc-Binlog-100: Binlog: Manifest file not exist, we create a new one.
redis_sender.cc-ThreadMain-158: Start sender 0 thread...
pika_port.cc-SetMaster-152: set role_ = PIKA_ROLE_PORT, repl_state_ = PIKA_REPL_CONNECT
trysync_thread.cc-ThreadMain-404: Should connect master
trysync_thread.cc-ThreadMain-418: Connect to master xxxx:9221
trysync_thread.cc-ThreadMain-439: Finish to start rsync, path: ./rsync_dump/, local address: 127.0.0.1:38001
trysync_thread.cc-ThreadMain-448: rsync successfully started, address:127.0.0.1:38001
trysync_thread.cc-Send-86: producer filenum: 0, producer offset:0
trysync_thread.cc-Send-94: redis command: trysync 127.0.0.1 35001 0 0
trysync_thread.cc-RecvProc-124: Reply from master after trysync: 7
trysync_thread.cc-RecvProc-135: Recv sid from master: 7
sh: line 0: kill: -: arguments must be process or job IDs
trysync_thread.cc-ThreadMain-467: Trysync success
pika_port.cc-ShouldStartPingMaster-180: ShouldStartPingMaster: master_connection 0, repl_state PIKA_REPL_CONNECTING
slaveping_thread.cc-Send-24: *2
$4
spci
$1
7

slaveping_thread.cc-RecvProc-41: RecvProc, recv error: IO error: read failed caz Connection reset by peer
slaveping_thread.cc-ThreadMain-90: error: Ping master error
pika_port.cc-ShouldStartPingMaster-180: ShouldStartPingMaster: master_connection 0, repl_state PIKA_REPL_CONNECT
binlog_receiver_thread.cc-AccessHandle-41: Master Binlog Sender: 127.0.0.1 connecting
.....

打印完后进程退出了,源端只有1个key:set a 1

AlexStocks commented 5 years ago

@vinllen 为何关闭了?

vinllen commented 5 years ago

找到原因了,虽然是本机 也不能配置127.0.0.1,配置了ip可以了。 不过另外还有两个问题:

  1. 目前发现从pika到redis同步,源端写了setex命令,目的端没有同步过去,抓包发现这个走了pksetex的命令,看描述是从pika到pika的同步了,没有识别目的端的类型。这里是否可以做个类型。关于这个问题,代码里面没有搜到pksetex,这里走的是直接透传吗?
  2. 全量期间ttl好像没有同步。这里可以自己开发,不过源端全量是否会传递TTL过来,还是说需要在pika-port层面去向源端发送ttl命令,再向目的端发送expire命令,具体在哪个文件改比较合适?pika的rsync发送后,全量是会持久化吧?等待全部本地持久化结束后,再发送到目的端?
vinllen commented 5 years ago

image

AlexStocks commented 5 years ago

找到原因了,虽然是本机 也不能配置127.0.0.1,配置了ip可以了。 不过另外还有两个问题:

  1. 目前发现从pika到redis同步,源端写了setex命令,目的端没有同步过去,抓包发现这个走了pksetex的命令,看描述是从pika到pika的同步了,没有识别目的端的类型。这里是否可以做个类型。关于这个问题,代码里面没有搜到pksetex,这里走的是直接透传吗?
  2. 全量期间ttl好像没有同步。这里可以自己开发,不过源端全量是否会传递TTL过来,还是说需要在pika-port层面去向源端发送ttl命令,再向目的端发送expire命令,具体在哪个文件改比较合适?pika的rsync发送后,全量是会持久化吧?等待全部本地持久化结束后,再发送到目的端?

@kukey 你可以看下这个问题,这两个问题都很好。

vinllen commented 5 years ago

求大佬指导

kukey commented 5 years ago

好的,我看下