黄东旭解析 TiDB 的核心优势
956
2023-11-29
3副本集群
Ip
组件
73.134.46.237
中控机、PD、TiDB Server
73.134.46.61 非***固态硬盘
TiKV1
73.134.47.200 非***固态硬盘
TiKV2
73.134.46.239 非***固态硬盘
TiKV3
73.134.47.53
Prometheus、Grafana、alertmanager、Nginx、HAProxy
Dashboard:
http://73.134.46.237:2379/dashboard
Grafana:
http://73.134.47.53:3000
TiDB集群数据源:
HAProxy 73.134.47.53:3390 推荐
Nginx 73.134.47.53:4000
小数据量迁移
通常数据量较低时,使用 DM 进行迁移较为简单,可直接完成全量+持续增量迁移工作。
大数据量迁移
当数据量较大时,DM 较低的数据导入速度 (30~50 GiB/h) 可能令整个迁移周期过长。本文所称“大数据量”通常指 TiB 级别以上。使用 Dumpling 和 TiDB Lightning 进行全量数据迁移,其本地导入 (local backend) 模式导入速度可达每小时 500 GiB。完成全量数据迁移后,再使用 DM 完成增量数据迁移。
名称
使用场景
上游(或输入源文件)
下游
(或输出文件)
主要优势
使用限制
Data Migration
集群
用于将数据从与
MySQL 协议
兼容的数据库迁移到 TiDB。
MySQL,MariaDB,
Aurora,MySQL
TiDB
一体化的数据迁移任务
管理工具,
支持全量迁移和增量同步;
支持对表与操作进行过滤;
支持分库分表的合并迁移。
建议用于 1 TB 以内的存量数据迁移。
Dumpling
用于将数据从 MySQL/TiDB
进行全量导出。
MySQL,TiDB
SQL,CSV
支持全新的 table-filter,
筛选数据更加方便;
支持导出到 Amazon S3 云盘
如果导出后计划往非 TiDB 的数据库恢复,建议使用 Dumpling;如果是往另一个 TiDB 恢复,建议使用 BR。
TiDB Lightning
用于将数据
全量导入到 TiDB。
Dumpling 输出的文件;
从 Hive 或者 Aurora 导出的
Parquet 文件;
从本地盘或 Amazon S3
云盘读取数据。
TiDB
支持迅速导入大量新数据,
实现快速初始化 TiDB 集群
的指定表;支持断点续传;
支持数据过滤。
Physical Import Mode Logical Import Mode
Ip
组件
73.134.47.190
Dm-master、Dm-worker、Prometheus、Grafana、alertmanager
Dashboard:
http://73.134.47.190:8261/dashboard
Grafana:
http://73.134.47.190:3000/
在外网连通的服务器上使用TiUP工具制作离线镜像
tiup mirror clone tidb-dm-v6.5.0-linux-amd64 --os=linux --arch=amd64 \
--dm-master=v6.5.0 --dm-worker=v6.5.0 --dmctl=v6.5.0 \
--alertmanager=v0.17.0 --grafana=v4.0.3 --prometheus=v4.0.3 \
--tiup=v$(tiup --version|grep tiup|awk -F {print $1}) --dm=v$(tiup --version|grep tiup|awk -F {print $1})
sh tidb-dm-v6.5.0-linux-amd64/local_install.sh
source /home/tidb/.bash_profile
tiup dm template > /data/tidb/topology.yaml
编辑配置文件,其中73.134.47.190部署dm-master、dm-worker
tiup dm deploy dm-test v6.5.0 /data/tidb/topology.yaml --user tidb -p
tiup dm list
tiup dm display dm-gykj
启动集群
tiup dm start dm-gykj
tiup dm display dm-gykj
tiup dmctl -encrypt Root#123
命名规则 mysql-source-${项目简称}.yaml 示例:mysql-source-xahr.yaml
注:在全量数据迁移和增量数据迁移模式下,启动迁移任务时会进行前置检查(上游数据库权限检查、外键、主键或唯一键等等),因此需提供root用户
b.加载数据源配置文件
tiup dmctl --master-addr=73.134.47.190:8261 operate-source create mysql-source-xahr.yaml
查看数据源状态
tiup dmctl --master-addr=73.134.47.190:8261 config source xahr-test
查看数据源和dm-worker的绑定关系
tiup dmctl --master-addr=73.134.47.190:8261 operate-source show xahr-test
命名规则 task-${项目简称}.yaml 示例:task-xahr.yaml
检查项:上游字符集、版本、外键、主键或唯一键
dump权限
REPLICATION权限、MySQL binlog配置等
tiup dmctl --master-addr=73.134.47.190:8261 check-task task-xahr.yaml
tiup dmctl --master-addr=73.134.47.190:8261 start-task ./task-xahr.yaml
tiup dmctl --master-addr=73.134.47.190:8261 query-status ./task-xahr.yaml
查询tidb,xahr数据库和对应表数据已同步
增量同步验证
源库创建一个表插入2条数据
Tidb集群xahr库已同步
tiup dmctl --master-addr=73.134.47.190:8261 validation start --start-time 2023-01-29T15:00:00 --mode full task-xahr
mode: full 行数据进行每列的比对
fast 判断行在下游数据库是否存在
null 不开启
创建
tiup dmctl --master-addr=73.134.47.190:8261 operate-source create ./mysql-source-xahr.yaml
停止
tiup dmctl --master-addr=73.134.47.190:8261 operate-source stop xahr-test
查看绑定关系
tiup dmctl --master-addr=73.134.47.190:8261 operate-source show ./source-mysql-xahr.yaml
查看配置
tiup dmctl --master-addr=73.134.47.190:8261 config source xahr-test
查询组件信息
tiup dmctl --master-addr=73.134.47.190:8261 list-member
改变绑定
tiup dmctl --master-addr=73.134.47.190:8261 transfer-source szsf-test dm-127.0.0.1-8262
前置检查
tiup dmctl --master-addr=73.134.47.190:8261 check-task ./task-xahr.yaml
启动
tiup dmctl --master-addr=73.134.47.190:8261 start-task ./task-xahr.yaml
查询状态
tiup dmctl --master-addr=73.134.47.190:8261 query-status
查询详情
tiup dmctl --master-addr=73.134.47.190:8261 query-status ./task-xahr.yaml
暂停
tiup dmctl --master-addr=73.134.47.190:8261 pause-task task-xahr
恢复
tiup dmctl --master-addr=73.134.47.190:8261 resume-task task-xahr
停止
tiup dmctl --master-addr=73.134.47.190:8261 stop-task task-xahr
开启增量校验
tiup dmctl --master-addr=73.134.47.190:8261 validation start --start-time 2023-01-29 15:00:00 --mode full task-xahr
增量校验状态
tiup dmctl --master-addr=73.134.47.190:8261 validation status task-xahr
停止增量校验
tiup dmctl --master-addr=73.134.47.190:8261 validation stop task-xahr
错误行信息
tiup dmctl --master-addr=73.134.47.190:8261 validation show-error task-xahr
清理错误行
tiup dmctl --master-addr=73.134.47.190:8261 validation clear-error task-xahr --all
3.5.4.1WebUI
通过DM WebUI页面管理迁移任务
前提条件开启OpenAPI
方法一:
拓扑文件中添加如下配置
方法二:
修改集群配置文件
tiup dm edit-config dm-gykj
重新加载集群
tiup dm reload dm-gykj -R dm-master
WebUI地址:
http://73.134.47.190:8261/dashboard
3.5.4.2 dmctl
tiup dmctl用来运维DM集群的命令行工具,交互和命令模式
3.5.4.3日常巡检
方法一:dmctl工具查看任务运行状态及错误输出
tiup dmctl --master-addr=73.134.47.190:8261 query-status
方法二:Prometheus和Grafana
通过Prometheus和Grafana查看DM相关监控项
方法三:dm-master和dm-worker日志文件
通过dm-master和dm-worker日志文件查看DM运行状态和相关错误
dm-master
dm-worker
3.5.4.4集群操作
集群列表
tiup dm list
启动集群
tiup dm start dm-gykj
集群状态
tiup dm display dm-gykj
集群缩容
tiup dm scale-in dm-gykj -N 73.134.47.190:8262
集群扩容
tiup dm scale-out dm-gykj ./scale-out-monitor.yaml
更新配置
tiup dm edit-config dm-gykj
加载配置
tiup dm reload dm-gykj
补丁更新
tiup dm patch dm-gykj /data/tidb/dm-master-hotfix.tar.gz -R dm-master
操作日志
tiup dm audit
在线安装
tiup install dumpling
在线使用
tiup dumpling ...
离线安装
tar -zxvf dumpling-v6.5.0-linux-amd64.tar.gz
./dumpling -uroot -pxxxxx -h 73.134.35.132 -P3306 --filetype sql -t 8 -o /data/ywgl/exportfile/xahr -B xahr
-t 指定导出的线程数,提高导出速度,不超过64
-F 指定单个文件的最大大小,单位MiB
--compress 压缩导出数据
整库导出
./dumpling -uroot -pxxxxx -h 73.134.35.132 -P3306 --filetype sql -t 8 -o /data/ywgl/exportfile/xahr -B xahr
表导出
./dumpling -uroot -pxxxxx -h 73.134.35.132 -P3306 --filetype sql -t 8 -o /data/ywgl/exportfile/xahr -T xahr.dict,xahr.dict_type,xahr.sdic_activity_info
筛选数据导出
./dumpling -uroot -pxxxxx -h 73.134.35.132 -P3306 --filetype sql -t 8 -o /data/ywgl/exportfile/xahr -T xahr.sdic_activity_info --where "id<=7"
参考脚本
dumpling.sh
#!/bin/bash START_TIME=date +%Y-%m-%d %H:%M:%S START_TIME_S=date +%s DUMPLING_PATH=/data/ywgl/exportfile SOURCE_IP=$1 DATABASE=$2 USER_PWD=$3
if [ -d "$DUMPLING_PATH/$DATABASE" ]; then rm -fr $DUMPLING_PATH/$DATABASE fi
cd /data/tidb-community-toolkit-v6.5.0-linux-amd64
./dumpling -uroot -p$USER_PWD -h $SOURCE_IP -P3306 --filetype sql --compress gzip -t 8 -F256MiB -o $DUMPLING_PATH/$DATABASE -B $DATABASE
END_TIME=date +%Y-%m-%d %H:%M:%S END_TIME_S=date +%s SUM_TIME=$[$END_TIME_S-$START_TIME_S]
echo "---------------begin:$START_TIME-- end:$END_TIME-- total:$SUM_TIME seconds---------------------"
在线安装
tiup install tidb-lightning
在线使用
tiup dumpling ...
离线安装
tar -zxvf tidb-lightning-v6.5.0-linux-amd64.tar.gz
chmod +x tidb-lightning
目标TiKV集群的总存储空间必须大于 数据源大小* 副本数量*2
编辑配置文件
执行导入
nohup ./tidb-lightning -config /data/ywgl/tidb-lightning-$DATABASE.toml > /dev/null 2>&1 &
参考脚本
lightning.sh
#!/bin/bash TIDB_LIGHTNING_PATH=/data/ywgl/exportfile DATABASE=$1
if [ ! -d "$TIDB_LIGHTNING_PATH/$DATABASE" ]; then echo "$DATABASE文件夹不存在" exit fi
if [ ls "$TIDB_LIGHTNING_PATH/$DATABASE" | wc -l -eq 0 ]; then echo "$DATABASE数据文件为空" fi
cd /data/ywgl cp tidb-lightning-example.toml tidb-lightning-$DATABASE.toml sed -i "s/database/$DATABASE/g" tidb-lightning-$DATABASE.toml cd /data/tidb-community-toolkit-v6.5.0-linux-amd64 nohup ./tidb-lightning -config /data/ywgl/tidb-lightning-$DATABASE.toml > /dev/null 2>&1 & tail -f tidb-lightning-$DATABASE.log
导入监控
安装br
tiup install br
安装minio
Server端
MC客户端
1
br备份恢复方案(备份存储的选择(NFS或者Minio);全量备份、增量备份、日志备份;
全量恢复、库表恢复、PITR指定时间点恢复)和验证
3周
2
TiDB集群运维操作(扩缩容、升级、补丁、修改配置、)
1周
3
TiUnitManager的使用
2周
4
日常巡检(Prometheus和dashborad)
3周
5
使用TiCDC同步数据到下游MySQL数据库
1周
6
Tiflash的使用
2周
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。