整篇文章包含三种主从关系不能建立问题的解决方案

1.rename问题引起主从关系不能建立

起因:  db目录挂载到了磁盘上,而dbsync目录挂载到本地,等价于两个目录挂载到两块盘

日志: 查看从节点的PIKA.WARRNING日志如下,可以看到提示rename问题.

解释: 因为slave 接受的master全同步数据 是硬链接到db目录的。需要在同一个文件系统上。

解决方案: 将db与dbsync都挂载到磁盘上,rename问题解决

Log file created at: 2020/12/01 11:14:21
Running on machine: pika-test-20201128-001
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
W1201 11:14:21.244900 67744 pika_partition.cc:304] Partition: db0, Failed to rename new db path when change db, error: Invalid cross-device link
W1201 11:14:21.244971 67744 pika_partition.cc:255] Partition: db0, Failed to change db
W1201 11:15:41.613822 67637 pika_repl_client_thread.cc:49] Master conn timeout : pika1:11221 try reconnect
W1201 11:20:19.930094 67744 pika_partition.cc:298] Partition: db0, Failed to rename db path when change db, error: No such file or directory
W1201 11:20:19.930109 67744 pika_partition.cc:255] Partition: db0, Failed to change db
W1201 11:21:38.866683 67637 pika_repl_client_thread.cc:49] Master conn timeout : pika1:11221 try reconnect

2.Timeout引起主从关系不能建立

起因: 主从关系掉了之后,进行全量同步过程中,主节点的dump+传输时间过长,导致主从在不断的全量同步

日志: 如下主从节点的日志,发生了超时,在不断的重新进行全量同步

解释: 理解为主节点dump+传输时间过长

解决方法: slaveof pika1 9221 force(force操作,会让从节点一直等待主节点dump完成并且传输到从节点建立主从)

注: 如果pika主从的建立是通过slaveof pika1 9221这种使用hostname建立的,还有可能日志会提示使用容器id而不是hostname(pika1)

解决方法先使用容器id创建主从slaveof containerid 9221 force
当主从建立成功之后执行:slaveof no oneslaveof pika1 9221 forceconfig rewrite
这个原理暂时还不能解释,亲测有效

主节点日志:

I1130 10:44:48.794337 29011 pika_partition.cc:379] db0 bgsave_info: path=/data1/pika/dump/20201130/db0,  filenum=2562, offset=13365700
I1130 10:48:02.246551 29011 pika_partition.cc:385] db0 create new backup finished.
I1130 10:48:02.246703 29011 pika_server.cc:1085] Partition: db0 Start Send files in /data1/pika/dump/20201130/db0 to 127.0.0.1
I1130 10:58:55.963577 29011 pika_server.cc:1186] Partition: db0 RSync Send Files Success
I1130 11:00:15.398463 26013 pika_repl_server_thread.cc:29] ServerThread Close Slave Conn, fd: 201, ip_port: 127.0.0.1:37504
I1130 11:00:15.398608 26013 pika_server.cc:740] Delete Slave Success, ip_port: 127.0.0.1:9221
I1130 11:00:15.398638 26013 pika_rm.cc:90] Remove Slave Node, Partition: (db0:0), ip_port: 127.0.0.1:9221
I1130 11:00:25.094928 26016 pika_repl_server_conn.cc:42] Receive MetaSync, Slave ip: 127.0.0.1, Slave port:9221
I1130 11:00:25.095026 26016 pika_server.cc:843] Add New Slave, 127.0.0.1:9221
I1130 11:00:25.233932 26014 pika_repl_server_conn.cc:108] Receive Trysync, Slave ip: 10.20.134.1, Slave port:9221, Partition: db0, filenum: 0, pro_offset: 0
I1130 11:00:25.233992 26014 pika_repl_server_conn.cc:263] Partition: db0 binlog has been purged, may need full sync
I1130 11:00:40.320998 26015 pika_repl_server_conn.cc:324] Handle partition DBSync Request
I1130 11:00:40.321120 26015 pika_rm.cc:79] Add Slave Node, partition: (db0:0), ip_port: 127.0.0.1:9221
I1130 11:00:40.322064 26015 pika_repl_server_conn.cc:347] Partition: db0_0 Handle DBSync Request Success, Session: 183
I1130 11:00:52.044495 29011 pika_partition.cc:376] db0 after prepare bgsave
I1130 11:00:52.044572 29011 pika_partition.cc:379] db0 bgsave_info: path=/data1/pika/dump/20201130/db0,  filenum=2562, offset=13365700
I1130 11:04:03.152256 29011 pika_partition.cc:385] db0 create new backup finished.
I1130 11:04:03.152402 29011 pika_server.cc:1085] Partition: db0 Start Send files in /data1/pika/dump/20201130/db0 to 127.0.0.1

从节点日志:

I1130 10:44:35.124609 53402 pika_repl_client_conn.cc:182] Partition: db0 Need Wait To Sync
I1130 10:58:55.921267 53506 pika_partition.cc:236] Partition: db0 Information from dbsync info,  master_ip: 127.0.0.1, master_port: 9221, filenum: 2562, offset: 13365700, term: 0, index: 0
I1130 10:58:55.921336 53506 pika_partition.cc:293] Partition: db0, Prepare change db from: /data2/pika/db/db0_bak
I1130 11:00:15.392289 53399 pika_repl_client_thread.cc:38] ReplClient Timeout conn, fd=95, ip_port=127.0.0.1:11221
I1130 11:00:25.087127 53506 pika_repl_client.cc:146] Try Send Meta Sync Request to Master (127.0.0.1:9221)
I1130 11:00:25.088173 53403 pika_server.cc:618] Mark try connect finish
I1130 11:00:25.088215 53403 pika_repl_client_conn.cc:146] Finish to handle meta sync response
I1130 11:00:25.226863 53404 pika_repl_client_conn.cc:261] Partition: db0 Need To Try DBSync
I1130 11:00:40.315070 53405 pika_repl_client_conn.cc:182] Partition: db0 Need Wait To Sync
I1130 11:15:53.390866 53506 pika_partition.cc:236] Partition: db0 Information from dbsync info,  master_ip: 127.0.0.1, master_port: 9221, filenum: 2562, offset: 13365700, term: 0, index: 0
I1130 11:15:53.392174 53506 pika_partition.cc:293] Partition: db0, Prepare change db from: /data2/pika/db/db0_bak
I1130 11:17:12.993613 53399 pika_repl_client_thread.cc:38] ReplClient Timeout conn, fd=70, ip_port=127.0.0.1:11221
I1130 11:17:22.057538 53506 pika_repl_client.cc:146] Try Send Meta Sync Request to Master (127.0.0.1:9221)

3.主节点上已经存在从节点信息并且不能更新引起主从关系不能建立

起因: 由于网络情况或是其他情况主从断开,重新建立连接时提示主从关系已经存在

日志: 如下为从节点的日志,提示Slave AlreadyExist

解决方案: 将pika版本升级为3.3.6,这个版本已经修复了 Slave AlreadyExist 这个问题,可以看一下github上的版本更新

pika_repl_client.cc:145] Try Send Meta Sync Request to Master (pika1:9221)
pika_repl_client_conn.cc:100] Meta Sync Failed: Slave AlreadyExist
Sync error, set repl_state to PIKA_REPL_ERROR
pika_repl_client_thread.cc:21] ReplClient Close conn, fd=364, ip_port=pika1:11221

4.总结

1.Slave AlreadyExist问题更新版本到3.3.6
2.rename问题将db与dbsync挂载到同一目录下
3.ReplClient Timeout conn问题建立主从的时候需要执行force建立
4.建议将dump db与dbsync一起挂载到磁盘目录上,这样也会减少dump的时间

PIKA trouble01 -- pika主从关系不能建立及主从断连问题相关推荐

  1. oracle主从关系表查询,Oracle 主从表联合查询解决方法

    Oracle 主从表联合查询 表A id   type   name 1    E      AA 2    F 表B id   Aid    name 1    2      BB 2    2   ...

  2. mycat的主从关系 垂直分库 水平分表 以及mycat分片联表查询的配置详解(mysql5.7系列)

    主从关系 准备三台不同ip的虚拟机 (第一批)主从关系的配置 主192.168.47.131 配置/etc/my.cnf,在[mysqld]下配置 log-error=/var/log/mysqld. ...

  3. OSPF协议原理及配置4-邻接关系的建立和LSDB同步

    OSPF协议原理及配置4-邻接关系的建立和LSDB同步 进入ExStart状态后,广播和NBMA型网络要等待4倍的Hello时间,确定DR和BDR.然后建立邻接关系,并交互链路状态通告,以使用LSDB ...

  4. 实现主从关系Form中汇总行金额/数量

    在Oracle EBS的二次开发中,常有在主从关系的主块中需要显示明细块中金额或数量的汇总,在Oracle Form Builder中实际上提供了汇总的功能,但它的这个汇总功能的前提是汇总的明细块需要 ...

  5. [转载]窗口之间的主从关系与Z-Order

    窗口之间的主从关系与Z-Order 原文地址:http://www.cnblogs.com/dhatbj/p/3288152.html说明:这是本人2008年写的一篇旧文,从未公开发表过.其中除了一小 ...

  6. redis解除(删除)主从关系

    redis的主从关系通过在从结点上使用slaveof [ip] [port]进行配置,同样在从节点上也可以使用该命令来解除主从关系,即从节点重新认主,将自己认做主节点: slaveof 127.0.0 ...

  7. 初学乍练redis:Redis 5 Cluster手工指定主从关系

    1. 检查当前Cluster的主从关系 /home/redis/redis-5.0.3/src/redis-cli -a 123456 --cluster check 140.210.73.39:20 ...

  8. OSPF 总结—— ospf邻居关系无法建立原因 + OSPF选路影响因素

    目录 一.ospf邻居关系无法建立原因: 二.选路影响因素: (1)宏观: (2)微观: 一.ospf邻居关系无法建立原因: 1--直接链路没有ping通 2--接口过滤OSPF的hello报文 3- ...

  9. Tornado:使用RabbitMQ发布消息(pika:pika.adapters.tornado_connection.TornadoConnection)

    导读 最近在项目中需要将一些数据传输到另外一个程序里面以供调用,两个程序都处于同一服务器上,传输的内容少,但是频率很频繁,使用 HTTP 的方式虽然会方便一点,但是会占用一部分网络带宽,若是遇到服务器 ...

  10. C语言,英文小写转大写,小写字母转换成大写字母通过大小写字母间的ASCII值的关系来建立代码

    #include <stdio.h> int main() {char a,b;scanf("%c",&a);b=a-32;printf("%c&qu ...

最新文章

  1. unity 骨骼击碎_保证击碎$ 100挑战的创新策略
  2. ANT集成SVNANT访问SVN(Subversion)
  3. docker mysql开发环境_Docker 构建PHP+Apache+MySQL 开发环境
  4. Apache Kafka - Schema Registry
  5. objective-c 加号 减号 - +
  6. 使用 Chrome 开发者工具进行 JavaScript 问题定位与调试
  7. python基础——变量
  8. 表格内容排序(js实现)
  9. 别把数学想得太难,数学是一场游戏
  10. 移动端根据设计稿宽度适配 px转换相对单位rem
  11. python使用request发送post请求_python之使用request模块发送post和get请求
  12. 露雨资源库三(第一个.net2.0软件)-为控件增加自动完成功能
  13. paip.账务系统的安全性
  14. python差分进化算法_差分进化算法(differential evolution)的Python实现
  15. 图像分割并存储 matlab,用于面积增长的Matlab图像分割程序
  16. Web前端课程的学习内容有哪些?
  17. python怎么做相加两个变量_2组语法,1个函数,教你用Python做数据分析
  18. java木马编码,深度好文:解码“深度伪装”的ZeuS网银木马
  19. 美团点评运营数据产品化实战
  20. 小白学语句:省市区选择(带全国省市区数据)

热门文章

  1. 万网域名注册促销活动 - 阿里云域名优惠口令免费获取
  2. 大神详解开源 BUFF 增益攻略丨直播
  3. Android9.0 power键功能定义配置方法
  4. 华为freelance耳机充不进电修理
  5. 美剧之《黑客军团第四季》(Mr robot)第12集摘要
  6. IE打开网页默认为英文
  7. IE浏览器无法打开网页
  8. 如何使用FLASHGOT下载网页FLASH
  9. 新手如何租用阿里云服务器(图文教程)
  10. Linux 磁盘管理 : dir dirs dircolors 命令详解