【TiDB 使用环境】生产环境
【TiDB 版本】8.1.2
【操作系统】opencloud9
【部署方式】机器部署
【集群数据量】10G
【集群节点数】3
目前生产使用的集群,在同一个机房有三个节点,每个节点都部署了pd/tikv/tidb。
为了容灾需求,需要部署成两地三中心(5节点),保留目前的三个中的两个,另外增加三个节点。
假设目前的是北京1机房1、2、3节点,改造后变成北京1机房1、2节点+北京2机房1、2节点+上海机房1节点。
这种情况,可以直接在线部署切换不停机维护吗?
参考了文档,但是写的不是很清楚,可以提供一下相关操作命令或配置方法吗?
参考文档“:
通过拓扑 label 进行副本调度
https://docs.pingcap.com/zh/tidb/v8.1/schedule-replicas-by-topology-labels/
跨数据中心部署拓扑
https://docs.pingcap.com/zh/tidb/v8.1/geo-distributed-deployment-topology/
PD Control 使用说明
https://docs.pingcap.com/zh/tidb/v8.1/pd-control/
目前的操作
1、给tikv打标签
tiup cluster edit-config tidb # 会自动打开配置编辑器(vim)
tikv_servers:
- host: 10.1.1.11
#下面增加
config:
server.labels:
zone: zone1
dc: dc1
rack: rack1
host: host1
#10.1.1.12 \10.1.1.13同样修改但是host不一样
tiup cluster reload tidb -R tikv #重启生效
2、修改pd配置
tiup ctl:v8.1.2 pd -u http://10.1.1.11:2379 config set location-labels zone,dc,rack,host
tiup ctl:v8.1.2 pd -u http://10.1.1.11:2379 config set isolation-level zone
tiup cluster reload tidb -R pd #重启生效
3、扩缩容
把北京2和上海1的节点加入
然后等数据更新完成后缩容掉10.1.1.13
理论上这样操作是可以,但是无法查看到底状态如何。
修改pd配置成功但是tiup cluster edit-config tidb无法查看到。
文档中似乎没有对pd进行区域标签设置的内容(tidb的内容都提到了,但是pd没有,不知道为什么),是不需要对pd进行区域设置吗?
使用命令行修改的内容,不会同步到配置文件中去,也没有相关的命令同步吗?怎么查看配置,怎么确保下次集群启动是用哪个配置启动的,不能导出这个配置吗?
label-property(已废弃)但文档中提示的配置还是用这个来限制pd选主,那这个是有效还是无效。
1 个赞
跨机房部署要设置tikv的
server.grpc-compression-type: gzip
但是tiup cluster edit-config tidb-cluster这里面又没有server_configs.tikv的项目。
随缘天空
(Ti D Ber Ivw R7o Pj)
3
可以尝试tiup扩容命令试试,扩容时,拓扑文件中设置下新节点的label信息,成功后再将已有的三节点缩容一个
1、补标签-tikv
tiup cluster edit-config tidb # 会自动打开配置编辑器(vim)
如果要在配置文件中设置,使用下列配置:
tikv_servers:
- host: 192.168.2.121
#下面增加
config:
server.labels:
zone: xian
dc: xian1
rack: rack1
host: host1
#- host: 192.168.2.122
host: host2
#- host: 192.168.2.123
dc: xian2
#重启tikv节点后生效
tiup cluster reload tidb -N 192.168.2.121:20160 # 只重启目标 TiKV 节点----display中的ID
tiup cluster reload tidb -R tikv #----display中的Role
#验证TiKV标签是否生效
2、补标签-tidb-可选-一般用不上
tiup cluster edit-config tidb-cluster # 打开配置编辑器(vim)
config:
server.labels:
zone: xian
dc: xian1
rack: rack1
host: host1
tiup cluster reload tidb -R tidb #----display中的Role#重启 TiDB 节点
3、设置 PD 配置
tiup ctl:v8.1.2 pd -u http://192.168.2.121:2379 config set location-labels zone,dc,rack,host
tiup ctl:v8.1.2 pd -u http://192.168.2.121:2379 config set isolation-level zone
tiup cluster reload tidb -R pd
4、扩容
编辑文件 scale-out-topo.yaml
pd_servers:
- host: 192.168.2.124
- host: 192.168.2.125
tikv_servers:
- host: 192.168.2.124
config:
server.labels:
zone: xian
dc: xian2
rack: rack1
host: host2
- host: 192.168.2.125
config:
server.labels:
zone: beijing
dc: beijing1
rack: rack1
host: host1
readpool.storage.use-unified-pool: true
readpool.storage.low-concurrency: 10
raftstore.raft-min-election-timeout-ticks: 50
raftstore.raft-max-election-timeout-ticks: 60
tidb_servers:
- host: 192.168.2.124
- host: 192.168.2.125
tiup cluster check tidb scale-out.yml --cluster #检查集群存在的潜在风险
tiup cluster check tidb scale-out.yml --cluster --apply #自动修复集群存在的潜在风险
tiup cluster scale-out tidb scale-out.yml
tiup cluster reload tidb --skip-restart #更新集群配置
tiup cluster reload tidb -R prometheus #更新 Prometheus 配置并重启
tiup ctl:v8.1.2 pd -u http://192.168.2.121:2379 member leader_priority pd-192.168.2.121-2379 5
tiup ctl:v8.1.2 pd -u http://192.168.2.121:2379 member leader_priority pd-192.168.2.122-2379 5
tiup ctl:v8.1.2 pd -u http://192.168.2.121:2379 member leader_priority pd-192.168.2.123-2379 5
tiup ctl:v8.1.2 pd -u http://192.168.2.121:2379 member leader_priority pd-192.168.2.124-2379 5
tiup ctl:v8.1.2 pd -u http://192.168.2.121:2379 member leader_priority pd-192.168.2.125-2379 1
tiup cluster display tidb #查看集群状态
看起来可以了,不清楚是不是真的可以,会不会有问题
1 个赞
大致是这样。
反正有一个地区两个机房,这两个机房各两个节点。
异地一个机房,一个节点。
麻辣机师
(Ti D Ber N Ec Hp7n S)
8
你这也太省了,如果生产彻底挂了,备怎么起来?强制重建pd? 这个是风险操作吧?
-
拓扑结构:
北京1:TiKV节点1、2、3
labels:region=prod,zone=bj1"
北京2:TiKV节点4
labels = “region=samecity,zone=bj2”
上海1:TiKV节点5
labels = “region=remote,zone=sh1”
-
放置策略
CREATE PLACEMENT POLICY default
PRIMARY_REGION = “prod”
REGIONS = “prod, samecity, remote”
FOLLOWERS=4;
ALTER RANGE GLOBAL PLACEMENT POLICY = ‘default’; – 全局应用,现有的库表,需要逐个设置
请问你们两地的网络环境是怎么样的?PD主节点在不同城市对性能影响大不大?
影响应该蛮大,网络一般,延时差不多20ms吧。
所以正常都用同城市的机房,异地只能做兜底一般用不上。
就是因为不懂啊。
话说这个不是集群吗,按道理,5 节点,只要有3节点正常,应该就可以正常使用吧。
不过昨天测试,把2、4节点停了,集群就不能使用了
。
是不是因为region副本数设置的不够,总感觉这种多中心的方案很不靠谱
你们计划的region副本数设置多大?两地的网络环境如何?三个中心的节点客户端计划如何读写?
不知道啊,没用对 region进行设置,只设置了拓扑,没了解过具体的设置,这个不是集群自动调度吗?
两地三中心,客户端只读写其中的一地。另外那个中心留着不用。
不是的,要通过标签手工设置region调度的策略才可以的。
那你们这方案有点太浪费资源了。我记得是302那个课程里有讲过这种方案的设计。
那推荐怎么设计?
课程在哪里?
文档里面不是也讲的这种设计吗?就是没讲具体的设置,只给了个配置文件和简单的几句讲解。
302-TiDB 高级系统管理
模块8里有讲这些,正好限时免费学习的