Tidb6.1.5升级到7.1.5升级方案总结
一、背景:
当前生产环境的tidb集群版本为6.1.5,未来业务扩展时无法满足资源隔离需求。为了能够将一个分布式数据库集群划分成多个逻辑单元,即使个别单元对资源过度使用,也不会挤占其他单元所需的资源。
1、TiDB 层会根据用户所绑定资源组设定的配额对用户的读写请求做流控,
2、TiKV 层会根据配额映射的优先级来对请求做调度。
3、管理资源消耗超出预期的查询
二、版本要求:
基本功能要求7.0版本以上,但为了更好实现资源隔离同时避免减少后续升级操作,建议使用7.1.5版本。
三、升级前评估:
1、升级前目前使用的6.1.5中的参数可以兼容7.1.5,但会存在参数冗余问题:
部分参数6.1.5需要单独配置,而到7.1.5则已默认配置了,升级到7.1.5后虽然单独配置了,也不会影响正常使用。
2、升级过程中需要检查export-node是否有冲突: 由于zabbix的采集端使用的端口与tidb自身的端口是否冲突,如果冲突需要停止zabbix的node端口,本案例存在端口冲突问题,因此需要提前规避。
四、实施过程中影响:
1.面临cdc延迟问题,延迟时间就是升级消耗的时间。
验证环境总容量1.2T的集群,cdc延迟大概是20分钟。
实际生产业务集群总容量800G,
2.业务查询和更新变慢,虽然是滚动升级,但过程中涉及重启节点操作,因此对业务是有感知的。
3.如有升级失败则无法回退。
五、实施前准备:
为避免出现升级失败需要切换到备集群的情况:
1.需要在备集群提前部署好对应业务的用户名密码以及数据库权限。
2.检查haproxy与tidb配置之间的兼容性,确保可以直接使用haproxy切换到备集群的tidb节点。
六、实施方案:
1、迁移升级:
方案是源端集群6.1.5版本,目标集群7.1.5版本使用cdc同步保持2套集群实时同步,等主从数据同步完成后实现主从切换方式。但目前存在跨大版本导致cdc延迟越来越大的问题。此方案放弃。
2.在主备集群基础上对主集群直接升级:
方案是源端直接升级到7.1.5,备集群保持现有版本6.1.5,使用cdc同步保持2套集群实时同步,如果升级失败等异常情况,可通过haproxy切到备集群。
七、实施过程中可能遇到的问题:
1.节点间通信失败
由于之前使用prometheus部署监控node端,使用的端口与tidb的node端口公用9100端口,端口冲突导致升级过程中无法管理节点。因此升级前需要检查9100端口不备其他占用,同时禁止prometheus的node端启用。
2.cdc异常中止问题
升级过程中最好提前停止cdc进程,等待升级完后再开启。如果遇到cdc同步失败问题,需要跳过事务同时做好数据补录工作。
八、总结:
1、根据生产集群800G的数据量,升级耗时预计30分钟.
2、升级过程中整体可控。
3、升级过程中如有升级失败等其他突发情况,可用备集群承接业务。
九、升级步骤:
1、升级前检查已做完。
2、下载部署新版本的 TiUP 离线镜像,上传到中控机。在执行 local_install.sh 后,TiUP 会完成覆盖升级
tar xzvf tidb-enterprise-server-v7.1.5-linux-amd64.tar.gz
sh tidb-enterprise-server-v7.1.5-linux-amd64/local_install.sh
source /home/tidb/.bash_profile
3、覆盖升级完成后,需将 server 和 toolkit 两个离线镜像合并,执行以下命令合并离线组件到 server 目录下。
tar xf tidb-enterprise-toolkit-v7.1.5-linux-amd64.tar.gz
cd tidb-enterprise-server-v7.1.5-linux-amd64/
cp -rp keys ~/.tiup/
tiup mirror merge ../tidb-enterprise-toolkit-v7.1.5-linux-amd64
4、检查当前集群的健康状况
tiup cluster check ky_biz --cluster
5、停止cdc任务:
tiup cdc cli changefeed pause \
--changefeed-id="upstream-to-protidbbak" \
--pd=https:// X.X.X.X:2379 \
--ca=/home/tidb/.tiup/storage/cluster/clusters/ky_biz/tls/ca.crt \ --cert=/home/tidb/.tiup/storage/cluster/clusters/ky_biz/tls/client.crt \ --key=/home/tidb/.tiup/storage/cluster/clusters/ky_biz/tls/client.pem
tiup cdc cli changefeed pause \
--changefeed-id="waybill-synchronize-task1" \
--pd=https:// X.X.X.X:2379 \
--ca=/home/tidb/.tiup/storage/cluster/clusters/ky_biz/tls/ca.crt \ --cert=/home/tidb/.tiup/storage/cluster/clusters/ky_biz/tls/client.crt \ --key=/home/tidb/.tiup/storage/cluster/clusters/ky_biz/tls/client.pem
6、升级tiup
tiup update cluster
tiup update --self && tiup update cluster
7、不停机升级到v7.1.5(默认是滚动升级)
tiup cluster upgrade yanliantidb v7.1.5 --wait-timeout 600
tiup cluster upgrade ky_biz v7.1.5 --force
8、开启cdc任务:
tiup cdc cli changefeed resume \
--changefeed-id="upstream-to-protidbbak" \
--pd=https://X.X.X.X:2379 \
--ca=/home/tidb/.tiup/storage/cluster/clusters/ky_biz/tls/ca.crt \ --cert=/home/tidb/.tiup/storage/cluster/clusters/ky_biz/tls/client.crt \ --key=/home/tidb/.tiup/storage/cluster/clusters/ky_biz/tls/client.pem
tiup cdc cli changefeed resume \
--changefeed-id="waybill-synchronize-task1" \
--pd=https://X.X.X.X:2379 \
--ca=/home/tidb/.tiup/storage/cluster/clusters/ky_biz/tls/ca.crt \ --cert=/home/tidb/.tiup/storage/cluster/clusters/ky_biz/tls/client.crt \ --key=/home/tidb/.tiup/storage/cluster/clusters/ky_biz/tls/client.pem
十、回退步骤:
修改haproxy的配置信息:
#server tidb-1 X.X.X.X:4000 send-proxy check inter 2000 rise 2 fall 3
#server tidb-2 X.X.X.X:4001 send-proxy check inter 2000 rise 2 fall 3
#server tidb-3 X.X.X.X:4000 send-proxy check inter 2000 rise 2 fall 3
#server tidb-4 X.X.X.X:4001 send-proxy check inter 2000 rise 2 fall 3
#server tidb-5 X.X.X.X:4000 send-proxy check inter 2000 rise 2 fall 3
#server tidb-6 X.X.X.X:4001 send-proxy check inter 2000 rise 2 fall 3
server tidb-1 X.X.X.X:4000 send-proxy check inter 2000 rise 2 fall 3
server tidb-2 X.X.X.X:4001 send-proxy check inter 2000 rise 2 fall 3
server tidb-3 X.X.X.X:4000 send-proxy check inter 2000 rise 2 fall 3
server tidb-4 X.X.X.X:4001 send-proxy check inter 2000 rise 2 fall 3
server tidb-5 X.X.X.X:4000 send-proxy check inter 2000 rise 2 fall 3
server tidb-6 X.X.X.X:4001 send-proxy check inter 2000 rise 2 fall 3