当前TIDB集群版本为v6.0.0,由于内部原因,现在需降级为升级前的版本v5.4.1。
由于官方没有直接降级方案,所以通过直接摧毁重建的方式降级。
具体步骤如下:
1、全备
因为数据库里的数据是需要的,只是需要变更版本。所以,降级前对集群进行数据备份。
br backup full --pd "${PDIP}:2379" --storage "local:///tmp" --ratelimit 128 --log-file /data/tidb-backup/backupfull.log --check-requirements=false
tips:
1、要注意BR工具版本
2、注意数据备份方式。本示例是”本地备份“。
3、如果数据恢复时,对系统表,比如mysql.user等的数据有恢复期望,建议额外使用dumpling等方式单独进行表的备份,因为BR恢复不会恢复这类系统表。
2、destory掉当前版本集群:
tiup cluster destroy tidb-dev
3、安装v5.4.1版本TiDB集群
①检查集群存在的潜在风险:
tiup cluster check /data/tidb_conf/topology.yaml --user root -i /etc/ssh/key_rsa
或者:
tiup cluster check /data/tidb_conf/topology.yaml --user root -p root_passwd
[-i] 及 [-p] 为可选项,如果已经配置免密登录目标机,则不需填写。否则选择其一即可,[-i] 为可登录到目标机的 root 用户(或 --user 指定的其他用户)的私钥,也可使用 [-p] 交互式输入该用户的密码。
预期结果输出:各节点 Status 状态信息为 Up 说明集群状态正常。
②自动修复潜在风险
tiup cluster check /data/topology.yaml --apply --user root -p root_passwd
③部署集群
tiup cluster deploy tidb-dev v5.4.1 /data/topology.yaml --user root -p root_passwd
4、查看TiUP管理的集群情况
tiup cluster list
5、检查部署的 TiDB 集群情况
tiup cluster display tidb-dev
6、启动集群:
安全启动
tiup cluster start tidb-dev --init
普通启动
tiup cluster start tidb-dev
7、验证集群运行状态
tiup cluster display tidb-test
8、恢复数据:
如果使用本地存储,在恢复前必须将所有备份的 SST 文件复制到各个 TiKV 节点上 --storage 指定的目录下。
即使每个 TiKV 节点最后只需要读取部分 SST 文件,这些节点也需要有所有 SST 文件的完全访问权限。原因如下:
* 数据被复制到了多个 Peer 中。在读取 SST 文件时,这些文件必须要存在于所有 Peer 中。这与数据的备份不同,在备份时,只需从单个节点读取。
* 在数据恢复的时候,每个 Peer 分布的位置是随机的,事先并不知道哪个节点将读取哪个文件。
使用共享存储可以避免这些情况。例如,在本地路径上安装 NFS,或使用 S3。利用这些网络存储,各个节点都可以自动读取每个 SST 文件,此时上述注意事项不再适用。
同时,请注意同一时间对同一个集群只能运行一个恢复任务,否则可能会出现非预期的行为。
./br restore full --pd "${PDIP}:2379" --storage "local:///tmp" --ratelimit 128 --log-file /data/tidb-backup/restorefull.log
此命令意思是:
--pd:pd的ip地址和端口
--storage:备份文件的路径
--ratelimit: 限制了每个 TiKV 执行备份任务的速度上限
--log-file:恢复日志的路径和名称
关于系统表,如果只需要恢复 mysql.usertable,而无需恢复其他表,可以使用以下命令
br restore full -f "mysql.*" -s local:///tmp/ --ratelimit 128
至此,所有操作执行完毕。
其他操作:
9、扩容tiflash:
编辑一个scale-out.yaml文件,内容大致如下:
tiflash_servers:
- host: 1.2.3.4
data_dir: /tidb-data/tiflash-9000
deploy_dir: /tidb-deploy/tiflash-9000
然后执行命令进行扩容:
tiup cluster scale-out tidb-dev ./tidb_conf/scale-out.yaml
10、扩容cdc
新建配置文件大致如下:
# cat /data/tidb_conf/scale-out.yaml
cdc_servers:
- host: 2.3.4.5
gc-ttl: 86400
data_dir: /data/deploy/install/data/cdc-8300
- host: 3.4.5.6
gc-ttl: 86400
data_dir: /data/deploy/install/data/cdc-8300
扩容命令:
tiup cluster scale-out tidb-dev ./scale-out.yaml
拓展注意事项:
TiDB 在 v6.0.0 版本中引入了缓存表功能。对TIDB数据库进行降级,恢复表结构及数据后,如果存在缓存表,或存在表无法正常使用的状况。
在v5.4.1版本的TIDB数据库中对缓存表进行update、insert、delete等操作是,会报错。
报错大致如下:
1105 - table_cache_meta tid not exist 5802
此时查看表结构,会发现最后一行添加了部分定义,内容如下:
COMMENT='' /* CACHED ON */
取消缓存表定义,语句为:
ALTER TABLE table_name NOCACHE
或者去掉此部分定义、整理表结构后,手动执行新建表。