暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Pika 2.3.5 升级 3.0.16

1049

微信公众号:DBA随笔

Pika 版本升级2.3.5  ~ 3.0.16

    线上低版本的Pika服务最近总是无故宕机,通过dmesg查看报错:BinlogReceiver[14638]: segfault at 7f43a3ffe000 ip 00007f441d89be5b sp 00007f43b67fb8a0 error 4 in libstdc++.so.6.0.19[7f441d7fc000+e9000]

看起来是一个段错误,暂时没有好的解决方案。于是决定对线上的Pika服务做一个升级。

    Pika在2.3.3版本时为了确保同步的可靠性,增加了server-id验证功能,因此pika2.3.3~pika2.3.6与pika2.3.3之前的版本无法互相同步

  • 如果你的pika版本<2.3.3, 你需要准备pika2.3.6及pika3.0.16的bin文件,这里需要注意的是3.0.x需要准备3.0.16以后的版本(或者3.0.6版本),其他版本pika不再能与低版本(2.3.X)进行同步,因此在升级时建议使用最新的3.0.x版本pika来完成整个操作。下文以3.0.16为例。

  • 如果你的pika版本>=2.3.3, 你需要准备pika3.0.16的bin文件

1、新扩容一个2.3.5版本的从库

2、为避免主从全量复制失败,将2.3.5版本主库修改binlog文件保留个数为300

config set  expire-logs-nums 300

3、在2.3.5版本的线上从库上bgsave,做一个新的备份,生成的info文件保留好

可以看到,bgsave之后,dump文件夹中生成了最近的文件快照,其中info文件保存了主节点的IP、端口以及当前复制的偏移量

[root@ ]# lltotal 40drwxrwxr-x 2 root root 4096 Nov 25  2019 bindrwxrwxr-x 2 root root 4096 Jan 28  2021 confdrwxr-xr-x 7 root root 4096 Oct 27 17:08 dbdrwxr-xr-x 7 root root 4096 Oct 27 17:45 db1drwxr-xr-x 7 root root 4096 Oct 27 17:08 dbsyncdrwxr-xr-x 3 root root 4096 Oct 27 17:36 dumpdrwxr-xr-x 2 root root 4096 Apr  8  2020 libdrwxr-xr-x 2 root root 4096 Oct 27 23:14 log-rw-r--r-- 1 root root 3709 Oct 27 17:03 pika.confdrwxrwxr-x 2 root root 4096 Sep 28  2018 tools[root@]# cd dump/[root@]# lltotal 40drwxr-xr-x 2 root root  4096 Oct 27 17:45 hash-rw-r--r-- 1 root root    37 Oct 27 17:36 infodrwxr-xr-x 2 root root  4096 Oct 27 17:45 kvdrwxr-xr-x 2 root root  4096 Oct 27 17:45 listdrwxr-xr-x 2 root root  4096 Oct 27 17:45 setdrwxr-xr-x 2 root root 20480 Oct 27 17:45 zset[root@]# cat info0s10.79.xx.xx290028485411241204

4、下载版本为3.0.16的Pika软件,使用3.0.16版本的Pika软件tools工具包中的nemo_to_blackwidow读取备份中的数据生成与新版本3.0.16引擎匹配的数据文件

命令:

 /data1/pika2900/tools/nemo_to_blackwidow data1/pika2900/dump/20211027 /data1/pika2900/db1 -n 10 

其中:

第一个路径代表dump出来的数据路径;

第二个路径代表新生成的文件的路径

-n 代表线程数,避免使用过多的系统资源

[root@]/data1/pika2900/tools/nemo_to_blackwidow /data1/pika2900/dump/20211027/ /data1/pika2900/db1 -n 4================== Nemo To Blackwidow ==================Thread_num : 4Need write log : noMax batch limit : 512Nemo_db_path : /data1/pika2900/dump/20211027/Blackwidow_db_path : /data1/pika2900/db1Startup Time : Wed Oct 27 17:45:20 2021========================================================Open Nemo db success...Open BlackWidow db success...Start migrating data from Nemo to Blackwidow...string keys773, hashes keys234, lists keys36sets keys0, zsets keys85825

5、3.0.16  Pika更新配置文件参数:

identify-binlog-type=old

修改这个参数的目的是确保能正常同步低版本pika数据。

转换好的目录db1覆盖db目录,重启3.0.16版本的 Pika

7、使用info文件中的binglog信息同步主库

命令: slaveof ip host binlog offset

slaveof   10.79.xx.xx   2900   28485   411241204

8、观察同步状态是否up,确认同步正常后,等待无延迟后完成

# Replication(SLAVE)role:slavemaster_host:10.79.xx.xxmaster_port:2900master_link_status:upslave_priority:100slave_read_only:1repl_state: 3

9、同样的方法新部署其他机房的几个服务,主库同机房部署一个用来后续切换

10、邮件通知业务方相关流程和回滚策略,将3.0.16版本Pika做域名解析上线,观察一周

11、确认一切ok后,进行一次主从切换,将3.0.16版本升为主库

12、config set identify-binlog-type new 

并利用config rewrite命令修改配置文件中为new;

检查无误后,完成整个升级 

更多细节可以参考:https://github.com/OpenAtomFoundation/pika/wiki/%E5%A6%82%E4%BD%95%E5%8D%87%E7%BA%A7%E5%88%B0Pika3.0


文章转载自杨建荣的学习笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论