内容大纲
- Part01-基础概念与理论知识
- 1.1 主从切换基本概念
- 1.2 TiDB主从切换原理
- 1.3 主从切换适用场景
- Part02-生产环境规划与建议
- 2.1 主从切换前准备工作
- 2.2 主从切换风险评估
- 2.3 主从切换最佳实践
- Part03-生产环境项目实施方案
- 3.1 TiDB手动主从切换步骤
- 3.2 主从切换验证
- 3.3 主从切换回切步骤
- Part04-生产案例与实战讲解
- 4.1 计划内维护主从切换案例
- 4.2 故障场景主从切换案例
- 4.3 跨机房主从切换案例
- Part05-风哥经验总结与分享
- 5.1 主从切换最佳实践
- 5.2 常见问题与解决方案
- 5.3 主从切换性能优化建议
内容简介:本文详细介绍TiDB手动主从切换的操作步骤、原理和最佳实践,包括主从切换的基本概念、适用场景、操作步骤和实战案例。风哥教程参考TiDB官方文档TiDB高可用架构设计指南、TiDB主从切换文档等。
Part01-基础概念与理论知识
1.1 主从切换基本概念
主从切换是指将TiDB集群中的主节点切换为从节点,从节点切换为主节点的操作。在TiDB中,主从切换主要涉及PD节点的leader选举和TiKV节点的leader转移。
更多视频教程www.fgedu.net.cn
1.2 TiDB主从切换原理
TiDB主从切换的原理如下:
- PD节点切换:通过Raft协议选举新的PD leader
- TiKV节点切换:每个Region的Raft组选举新的leader
- TiDB节点切换:通过负载均衡器将请求转发到健康的TiDB节点
学习交流加群风哥微信: itpux-com
1.3 主从切换适用场景
主从切换适用于以下场景:
- 计划内维护:如硬件升级、软件升级等
- 故障处理:如主节点故障、网络故障等
- 负载均衡:如主节点负载过高,需要切换到负载较低的节点
- 跨机房迁移:如将服务从一个机房迁移到另一个机房
学习交流加群风哥QQ113257174
Part02-生产环境规划与建议
2.1 主从切换前准备工作
在进行主从切换前,需要做好以下准备工作:
- 检查集群状态,确保集群健康
- 备份重要数据,防止数据丢失
- 通知相关人员,协调切换时间
- 准备回滚方案,以防切换失败
- 测试切换流程,确保切换顺利
风哥提示:在生产环境中,建议在业务低峰期执行主从切换操作,以减少对业务的影响。
2.2 主从切换风险评估
主从切换的风险评估应考虑以下因素:
- 服务中断风险:切换过程中可能导致服务短暂中断
- 数据一致性风险:切换过程中可能导致数据不一致
- 性能影响风险:切换后可能导致性能下降
- 回滚风险:切换失败后可能无法回滚
更多学习教程公众号风哥教程itpux_com
2.3 主从切换最佳实践
主从切换的最佳实践:
- 在业务低峰期执行切换操作
- 提前通知相关人员,做好准备
- 备份重要数据,防止数据丢失
- 测试切换流程,确保切换顺利
- 监控切换过程,及时发现和处理异常
- 切换后验证服务状态,确保服务正常
from tidb视频:www.itpux.com
Part03-生产环境项目实施方案
3.1 TiDB手动主从切换步骤
以下是TiDB手动主从切换的步骤:
步骤1:检查集群状态
# tiup cluster display tidb-cluster
# 输出示例:
# ID Role Host Ports Status Data Dir Deploy Dir
# — —- —- —– —— ——– ———-
# 192.168.1.1:2379 pd 192.168.1.1 2379/2380 Up|L /tidb/fgdata/pd-2379 /tidb/app/tidb-cluster/pd-2379
# 192.168.1.2:2379 pd 192.168.1.2 2379/2380 Up|F /tidb/fgdata/pd-2379 /tidb/app/tidb-cluster/pd-2379
# 192.168.1.3:2379 pd 192.168.1.3 2379/2380 Up|F /tidb/fgdata/pd-2379 /tidb/app/tidb-cluster/pd-2379
# 192.168.1.1:4000 tidb 192.168.1.1 4000/10080 Up /tidb/fgdata/tidb-4000 /tidb/app/tidb-cluster/tidb-4000
# 192.168.1.2:4000 tidb 192.168.1.2 4000/10080 Up /tidb/fgdata/tidb-4000 /tidb/app/tidb-cluster/tidb-4000
# 192.168.1.3:4000 tidb 192.168.1.3 4000/10080 Up /tidb/fgdata/tidb-4000 /tidb/app/tidb-cluster/tidb-4000
# 192.168.1.1:20160 tikv 192.168.1.1 20160/20180 Up /tidb/fgdata/tikv-20160 /tidb/app/tidb-cluster/tikv-20160
# 192.168.1.2:20160 tikv 192.168.1.2 20160/20180 Up /tidb/fgdata/tikv-20160 /tidb/app/tidb-cluster/tikv-20160
# 192.168.1.3:20160 tikv 192.168.1.3 20160/20180 Up /tidb/fgdata/tikv-20160 /tidb/app/tidb-cluster/tikv-20160
步骤2:停止当前PD leader节点
# tiup cluster stop tidb-cluster -R pd –node 192.168.1.1:2379
# 查看集群状态
# tiup cluster display tidb-cluster
# 输出示例:
# ID Role Host Ports Status Data Dir Deploy Dir
# — —- —- —– —— ——– ———-
# 192.168.1.1:2379 pd 192.168.1.1 2379/2380 Down /tidb/fgdata/pd-2379 /tidb/app/tidb-cluster/pd-2379
# 192.168.1.2:2379 pd 192.168.1.2 2379/2380 Up|L /tidb/fgdata/pd-2379 /tidb/app/tidb-cluster/pd-2379
# 192.168.1.3:2379 pd 192.168.1.3 2379/2380 Up|F /tidb/fgdata/pd-2379 /tidb/app/tidb-cluster/pd-2379
# 192.168.1.1:4000 tidb 192.168.1.1 4000/10080 Up /tidb/fgdata/tidb-4000 /tidb/app/tidb-cluster/tidb-4000
# 192.168.1.2:4000 tidb 192.168.1.2 4000/10080 Up /tidb/fgdata/tidb-4000 /tidb/app/tidb-cluster/tidb-4000
# 192.168.1.3:4000 tidb 192.168.1.3 4000/10080 Up /tidb/fgdata/tidb-4000 /tidb/app/tidb-cluster/tidb-4000
# 192.168.1.1:20160 tikv 192.168.1.1 20160/20180 Up /tidb/fgdata/tikv-20160 /tidb/app/tidb-cluster/tikv-20160
# 192.168.1.2:20160 tikv 192.168.1.2 20160/20180 Up /tidb/fgdata/tikv-20160 /tidb/app/tidb-cluster/tikv-20160
# 192.168.1.3:20160 tikv 192.168.1.3 20160/20180 Up /tidb/fgdata/tikv-20160 /tidb/app/tidb-cluster/tikv-20160
# 注:可以看到192.168.1.2:2379已经成为新的PD leader
步骤3:验证服务可用性
# mysql -h 192.168.1.2 -P 4000 -u root -e “SELECT 1;”
# 输出示例:
# +—+
# | 1 |
# +—+
# | 1 |
# +—+
# 验证数据一致性
# mysql -h 192.168.1.2 -P 4000 -u root -e “SELECT * FROM fgedudb.fgedu_users;”
# 输出示例:
# +—-+——-+———————-+
# | id | name | email |
# +—-+——-+———————-+
# | 1 | user1 | user1@fgedu.net.cn |
# | 2 | user2 | user2@fgedu.net.cn |
# | 3 | user3 | user3@fgedu.net.cn |
# +—-+——-+———————-+
3.2 主从切换验证
主从切换验证的步骤如下:
步骤1:检查新的PD leader
# tiup cluster display tidb-cluster | grep pd
# 输出示例:
# 192.168.1.1:2379 pd 192.168.1.1 2379/2380 Down /tidb/fgdata/pd-2379 /tidb/app/tidb-cluster/pd-2379
# 192.168.1.2:2379 pd 192.168.1.2 2379/2380 Up|L /tidb/fgdata/pd-2379 /tidb/app/tidb-cluster/pd-2379
# 192.168.1.3:2379 pd 192.168.1.3 2379/2380 Up|F /tidb/fgdata/pd-2379 /tidb/app/tidb-cluster/pd-2379
步骤2:检查TiKV leader分布
# tiup ctl:v6.5.0 pd -u http://192.168.1.2:2379 store
# 输出示例:
# {“store”:{“id”:1,”address”:”192.168.1.1:20160″,”state”:1,”state_name”:”Up”,”labels”:[],”version”:”6.5.0″,”status_address”:”192.168.1.1:20180″,”git_hash”:”xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”,”start_timestamp”:1704067200,”deploy_path”:”/tidb/app/tidb-cluster/tikv-20160″,”last_heartbeat”:1704067300000000000,”last_heartbeat_ts”:1704067300000},
# “status”:{“capacity”:1073741824000,”available”:858993459200,”used_size”:107374182400,”leader_count”:50,”leader_weight”:1,”leader_score”:50,”leader_size”:5368709120,”region_count”:300,”region_weight”:1,”region_score”:300,”region_size”:32212254720,”slow_score”:0,”start_ts”:1704067200000000000,”last_heartbeat_ts”:1704067300000000000}}
# …
步骤3:验证服务状态
# tiup cluster status tidb-cluster
# 输出示例:
# Cluster `tidb-cluster` status check result:
# [Healthy] All components are healthy.
学习交流加群风哥QQ113257174
3.3 主从切换回切步骤
当需要将服务切回原主节点时,可以执行以下步骤:
步骤1:恢复原PD leader节点
# tiup cluster start tidb-cluster -R pd –node 192.168.1.1:2379
# 查看集群状态
# tiup cluster display tidb-cluster
步骤2:触发PD leader选举
# tiup cluster stop tidb-cluster -R pd –node 192.168.1.2:2379
# 查看集群状态
# tiup cluster display tidb-cluster
# 启动停止的PD节点
# tiup cluster start tidb-cluster -R pd –node 192.168.1.2:2379
# 查看集群状态
# tiup cluster display tidb-cluster
步骤3:验证服务状态
# tiup cluster status tidb-cluster
# 验证服务可用性
# mysql -h 192.168.1.1 -P 4000 -u root -e “SELECT 1;”
Part04-生产案例与实战讲解
4.1 计划内维护主从切换案例
场景:某生产环境中,需要对主节点进行硬件升级,需要执行主从切换操作。
处理步骤:
# 2. 检查集群状态
# tiup cluster display tidb-cluster
# 3. 备份重要数据
# tiup br backup full –pd “192.168.1.1:2379” –storage “local:///tidb/backup/full/20240101”
# 4. 执行主从切换
# tiup cluster stop tidb-cluster -R pd –node 192.168.1.1:2379
# 5. 验证服务可用性
# mysql -h 192.168.1.2 -P 4000 -u root -e “SELECT 1;”
# 6. 进行硬件升级
# 关闭服务器,更换硬件
# 7. 恢复原主节点
# tiup cluster start tidb-cluster -R pd –node 192.168.1.1:2379
# 8. 验证集群状态
# tiup cluster display tidb-cluster
4.2 故障场景主从切换案例
场景:某生产环境中,主节点因网络故障导致服务不可用,需要执行主从切换操作。
处理步骤:
# 2. 检查集群状态
# tiup cluster display tidb-cluster
# 3. 确认主节点故障
# 192.168.1.1:2379 (PD) 状态为 Down
# 4. 验证服务是否可用
# mysql -h 192.168.1.2 -P 4000 -u root -e “SELECT 1;”
# 5. 检查网络状态
# ping 192.168.1.1
# ssh root@192.168.1.1
# 6. 修复网络故障
# 检查网络连接,修复网络问题
# 7. 恢复主节点
# tiup cluster start tidb-cluster -R pd –node 192.168.1.1:2379
# 8. 验证集群状态
# tiup cluster display tidb-cluster
4.3 跨机房主从切换案例
场景:某生产环境中,需要将服务从机房A切换到机房B,需要执行跨机房主从切换操作。
处理步骤:
# 2. 检查集群状态
# tiup cluster display tidb-cluster
# 3. 备份重要数据
# tiup br backup full –pd “192.168.1.1:2379” –storage “local:///tidb/backup/full/20240101”
# 4. 执行跨机房主从切换
# 停止机房A的PD leader节点
# tiup cluster stop tidb-cluster -R pd –node 192.168.1.1:2379
# 5. 验证服务可用性
# mysql -h 192.168.2.1 -P 4000 -u root -e “SELECT 1;”
# 6. 更新DNS或负载均衡配置
# 将服务地址指向机房B的TiDB节点
# 7. 验证服务状态
# tiup cluster status tidb-cluster
# 8. 监控服务运行状态
# 持续监控服务运行状态,确保服务正常
Part05-风哥经验总结与分享
5.1 主从切换最佳实践
- 在业务低峰期执行主从切换操作
- 提前通知相关人员,做好准备
- 备份重要数据,防止数据丢失
- 测试切换流程,确保切换顺利
- 监控切换过程,及时发现和处理异常
- 切换后验证服务状态,确保服务正常
- 建立切换操作文档,规范切换流程
5.2 常见问题与解决方案
问题1:切换过程中服务中断
解决方案:优化切换流程,减少切换时间;使用负载均衡器,确保切换过程中服务不中断。
问题2:切换后数据不一致
解决方案:在切换前确保数据同步完成;切换后验证数据一致性。
问题3:切换后性能下降
解决方案:确保新主节点的硬件配置不低于原主节点;优化新主节点的配置参数。
问题4:切换失败无法回滚
解决方案:在切换前准备回滚方案;确保原主节点的状态可以恢复。
5.3 主从切换性能优化建议
- 优化网络连接,减少网络延迟
- 使用高性能硬件,提高节点的处理能力
- 合理配置集群规模,确保有足够的冗余节点
- 优化PD调度参数,提高切换效率
- 使用监控工具实时监控集群状态,及时发现和处理异常
通过本文的学习,您应该能够掌握TiDB手动主从切换的操作步骤和最佳实践,在实际生产环境中安全、高效地执行主从切换操作。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
