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