14、TIUP TIDB

跨机房集群方式,延迟最好要低于 100ms

参考地址: https://docs.pingcap.com/zh/tidb/dev/tiup-cluster

TIUP 常用命令

Usage:
  tiup cluster [command]

Available Commands:
  check       对集群进行预检
  deploy      部署集群
  start       启动已部署的集群
  stop        停止集群
  restart     重启集群
  scale-in    集群缩容
  scale-out   集群扩容
  clean       清理数据
  destroy     销毁集群
  upgrade     升级集群
  display     获取集群信息
  list        获取集群列表
  audit       查看集群操作日志
  import      导入一个由 TiDB Ansible 部署的集群
  edit-config 编辑 TiDB 集群的配置
  reload      用于必要时重载集群配置
  patch       使用临时的组件包替换集群上已部署的组件
  help        打印 Help 信息

Flags:
  -c, --concurrency int     最大并行任务数(默认值为 5)
      --format string       (实验特性) 输出的格式, 支持 [default, json] (默认值为 "default")
  -h, --help                帮助信息
      --ssh string          (实验特性)SSH 执行类型,可选值为 'builtin''system''none'
      --ssh-timeout uint    SSH 连接超时时间
  -v, --version             版本信息
      --wait-timeout uint   等待操作超时的时间
  -y, --yes                 跳过所有的确认步骤

TIUP 服务器时间必须一直

TiUP 查看系统架构

TiUP 初始化集群拓扑文件

配置如下

TiUP 检查集群是否符合

TiUP 自动修复集群

TiUP 自动部署集群

  • tidb-test: 自定义集群名字

  • v7.1.0: Tidb 版本

TiUP 安全启动集群

TiUP 查看集群列表

TiUP 检查集群状态

TIUP 扩容节点

对 TiKV、TiFlash 及 Binlog 组件的操作

  • 停止已经下线掉的节点的服务

  • 清理已经下线掉的节点的相关数据文件

  • 更新集群的拓扑,移除已经下线掉的节点

对其他组件的操作

  • 下线 PD 组件时,会通过 API 将指定节点从集群中删除掉(这个过程很快),然后停掉指定 PD 的服务并且清除该节点的相关数据文件

  • 下线其他组件时,直接停止并且清除节点的相关数据文件

参考: https://docs.pingcap.com/zh/tidb/dev/scale-tidb-using-tiup

编写扩容拓扑配置

可以使用 tiup cluster edit-config 查看当前集群的配置信息,因为其中的 global 和 server_configs 参数配置默认会被 scale-out.yml 继承,因此也会在 scale-out.yml 中生效。

执行扩容命令

TIUP 缩容节点

正常缩容

TiUP 切换 PD Dashboard 到其他节点

  • 版本: v7.1.0

  • 集群: tidb-test

正常切换

  • 通信正常情况下(直接切换)

故障切换

  • 先禁用 TiDB Dashboard

  • 重新启用 TiDB Dashboard

注意: 若新启用的 TiDB Dashboard 实例与禁用前的实例不一致,将会丢失之前 TiDB Dashboard 实例所存储的本地数据,包括流量可视化历史、历史搜索记录等。

TiDB Dashboard 安全问题

  • 为 root 用户设置强密码

  • 为 TiDB Dashboard 创建最小权限用户

  • 用防火墙阻止不可信访问

  • 通过反向代理使用 TiDB Dashboard

建议 root 强密码,防火墙配置

TiDB 备份与恢复实践示例

配置备份存储 (Amazon S3)

  • 1、在 S3 创建用于保存备份数据的目录 s3://tidb-pitr-bucket/backup-data

    • 创建 bucket: tidb-pitr-bucket

    • 创建备份数据总目录: backup-data

  • 2、配置 br 命令行工具和 TiKV 访问 S3 中的备份目录的权限

    • 备份集群的 TiKV 和 br 命令行工具需要的 s3://<桶名>/<文件夹> 权限

      • s3:ListBucket

      • s3:PutObject

      • s3:AbortMultipartUpload。

    • 恢复集群的 TiKV 和 br 命令行工具需要 s3://<桶名>/<文件夹> 的最小权限

      • s3:ListBucket

      • s3:GetObject

      • s3:PutObject。

  • 3、规划备份数据保存的目录结构,以及快照(全量)备份和日志备份的目录。

    • 所有快照备份保存在 s3://tidb-pitr-bucket/backup-data/snapshot-${date} 目录下,${date} 为快照备份开始的时间点,如在 2022/05/12 00:01:30 开始的快照备份保存为 s3://tidb-pitr-bucket/backup-data/snapshot-20220512000130。

    • 日志备份保存在 s3://tidb-pitr-bucket/backup-data/log-backup/ 目录下。

示例: TiUP 备份快照数据到 AWS S3

示例: TiUP 从 AWS S3 恢复快照备份数据

TIUP 实战备份

AWS参考格式: URL格式参考: https://docs.pingcap.com/zh/tidb/stable/backup-and-restore-storages

  • 运行日志备份,持续不断备份数据库数据变更;

  • 每隔两天在零点左右进行一次快照备份;

  • 保存 30 天内的快照备份和日志备份数据,清理超过 30 天的备份数据。

1、执行日志备份(必须)

  • 结合快照备份,可以恢复到历史指定时间点的用户数据

  • 日志备份持续不断将数据库变更数据备份到 S3 中,(实测默认是间隔2分30秒左右)

2、执行快照备份(必须)

  • 可以借助 Contab 定时任务做备份

TIUP 恢复备份

  • 恢复的时候需要先暂停日志备份任务

恢复指定快照日期

执行 PITR(恢复到指定时间位置)

  • 假设你接到需求,要准备一个(新)集群查询 2022/05/15 18:00:00 时间点的用户数据。

  • 此时,你可以制定 PITR 方案,恢复 2022/05/14 的快照备份和该快照到 2022/05/15 18:00:00 之间的日志备份数据,从而收集到目标数据。

TiDB 日志备份与 PITR 命令行手册

官网更详细: https://docs.pingcap.com/zh/tidb/stable/br-pitr-manual#%E6%9F%A5%E8%AF%A2%E6%97%A5%E5%BF%97%E5%A4%87%E4%BB%BD%E4%BB%BB%E5%8A%A1

日常巡检

官网更详细: https://docs.pingcap.com/zh/tidb/stable/daily-check

MYSQL|TIDB 全量迁移

  • 1、MYSQL|TIDB 把数据先全量备份导出,sql 结尾文件

  • 2、sql 文件导入到 TIDB 集群中

安装组件

  • dumpling: 可以把存储在 TiDB 或 MySQL 中的数据导出为 SQL 或 CSV 格式,用于逻辑全量备份

    • filetype: sql/csv 两种类型

    • B: 备份指定数据库

    • t: 线程数

    • o: 存储路径

    • r: 指定单个文件的最大行数

    • F: 指定单个文件的最大大小,单位为 MiB,可接受类似 5GiB 或 8KB 的输入。

    • 更多参考: https://docs.pingcap.com/zh/tidb/stable/dumpling-overview

  • Lightning: 是用于从静态文件导入 TB 级数据到 TiDB 集群的工具,常用于 TiDB 集群的初始化数据导入。

    • 物理导入模式:快(100 ~ 500 GiB/小时)-->无法提供服务,常用于初始化导入

    • 逻辑导入模式:慢(10 ~ 50 GiB/小时)-->可提供服务,常用于生产环境线上有数据

    • 更多参考: https://docs.pingcap.com/zh/tidb/stable/tidb-lightning-overview

注意: 如果你想使用 TiDB Lightning 将该文件加载到 TiDB 实例中,建议将 -F 选项的值保持在 256 MiB 或以下 注意: 如果导出的单表大小超过 10 GB,强烈建议使用 -r 和 -F 参数。

导出数据

导入数据

/tmp/test/ 刚刚导出的 sql 目录地址

  • 配置 tidb-lightning.toml

  • 启动 tidb-lightning

tiup dmctl --master-addr 10.11.19.141:8261 operate-source create source1.yaml

MYSQL|TIDB 不停机迁移

部署参考: https://docs.pingcap.com/zh/tidb-data-migration/v5.3/deploy-a-dm-cluster-using-tiup 具体迁移参考: https://docs.pingcap.com/zh/tidb-data-migration/v5.3/migrate-data-using-dm

DM 集群安装组件

编辑初始化配置文件

执行部署命令

检查

Last updated