1. 首页 > 国产数据库教程 > TiDB教程 > 正文

tidb教程FG047-TiDB手动主从切换操作

内容大纲

内容简介:本文详细介绍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节点

# 停止当前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

# 查看新的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分布

# 检查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节点

# 启动原PD leader节点
# tiup cluster start tidb-cluster -R pd –node 192.168.1.1:2379

# 查看集群状态
# tiup cluster display tidb-cluster

步骤2:触发PD leader选举

# 停止当前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 计划内维护主从切换案例

场景:某生产环境中,需要对主节点进行硬件升级,需要执行主从切换操作。

处理步骤:

# 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 故障场景主从切换案例

场景:某生产环境中,主节点因网络故障导致服务不可用,需要执行主从切换操作。

处理步骤:

# 1. 监控系统告警,发现主节点故障

# 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,需要执行跨机房主从切换操作。

处理步骤:

# 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. 执行跨机房主从切换
# 停止机房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

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息