【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】
【附件:截图/日志/监控】
因为是测试机器。一切从简。
原有的服务器如下
步骤
1编辑集群拓扑
cat > topology.yaml << EOF
global:
user: “tidb”
ssh_port: 22
deploy_dir: “/tidb-deploy”
data_dir: “/home/tidb-data”
server_configs:
tidb:
log.slow-threshold: 300
tikv:
storage.engine: partitioned-raft-kv
pd_servers:
- host: 192.168.137.2
tidb_servers:
- host: 192.168.137.3
tikv_servers:
- host: 192.168.137.4
- host: 192.168.137.5
- host: 192.168.137.6
monitoring_servers:
- host: 192.168.137.5
grafana_servers:
- host: 192.168.137.5
alertmanager_servers:
- host: 192.168.137.5
EOF
2.下载&&解压&&配置免密
curl -O https://download.pingcap.org/tidb-community-server-v6.6.0-linux-amd64.tar.gz
tar zxf https://download.pingcap.org/tidb-community-server-v6.6.0-linux-amd64.tar.gz
cd tidb-community-server-v6.6.0-linux-amd64
3.免密
ssh-keygen
ssh-copyid root@127.0.0.1
4.安装tidb
bash local_install.sh
source /root/.bash_profile
tiup cluster check ./topology.yaml --apply
tiup cluster deploy tidb-test v6.6.0 ./topology.yaml
tiup cluster start tidb-test
这个时候整个tidb就启动正常了。用上面的脚本是自动化安装的不需要人工参与。
我们往数据库里面写入点数据
create database oscardba;
use database oscardba;
create table oscardbatable;
这个时候我们模拟pd故障
开启压力测试。然后硬件断电pdserver服务器
。
因为是断电关机。所以pd数据库会损坏。导致整个集群不可用。
这个时候我们再开始pd服务器会发现pd服务器不可用 整个tidb服务器瘫痪。
进入系统后发现pd 服务不可用。
好现在开始我们恢复pd server的表演
在pd 恢复的时候需要我们知道2个参数 cluster id 和最大的已分配 pd号
cat {{/path/to}}/pd.log | grep “init cluster id”
cat {{/path/to}}/pd*.log | grep “idAllocator allocates a new id” | awk -F’=’ ‘{print $2}’ | awk -F’]’ ‘{print $1}’ | sort -r -n | head -n 1
因为我的pd没有数据了 日志被我删除了一次。所以用官方的办法没办法获取最大的分配数字 我自己想了个办法。
我找了commit 里面有id 还有lastindex 应该就是系统的最大分配id 14015995 我自己再加了1000000 15015995
全部完成后先杀了pd
ps -ef | grep pd-server | grep -v grep | cut -c 9-15 | xargs kill -s 9
mv /data/tidb-data/pd-2379 /data/tidb-data/pd-2379bak
备份完成再重启pdserver
service pd-2379 start
这个时候pdserver是空的 需要用pd工具恢复
curl -O https://download.pingcap.org/tidb-community-toolkit-v6.6.0-linux-amd64.tar.gz
tar zxf tidb-community-toolkit-v6.6.0-linux-amd64.tar.gz
cd tidb-community-toolkit-v6.6.0-linux-amd64
tar zxf pd-recover-v6.6.0-linux-amd64
./pd-recover -endpoints http://192.168.1.2:2379 -cluster-id 6747551640615446306 -alloc-id 10000
这个时候恢复成功会报 sucess
你需要先把pdserver 关闭再重启
service pd-2379 stop
service pd-2379 restart
这个时候pd服务器就恢复成功了。
tidb的服务器进去就正常了