#在新环境恢复分布式备份集
在分布式部署中,YashanDB支持使用已有的数据库集群A的备份集构建新数据库集群B。
# 版本要求
A、B两个集群版本必须一致,且为v23.2.4.100及以上。
# 前提条件
需先参考安装前准备为数据库集群B准备服务器及相关环境。
# 操作步骤
在数据库集群A中,使用yasbak生成备份,tag为full_01,具体操作见yasbak操作示例。
将备份集文件压缩为一个压缩包,压缩包格式要求如下:
yashandb.tar.gz # 文件名称无约束,但文件后缀名必须为.tar.gz mn-1-1.tar.gz # 压缩包命名格式为"节点类型-节点id.tar.gz" full_01/... # 若为增量备份,则将多个备份集全压缩在同一个压缩包中 cn-2-1.tar.gz full_01/... dn-3-1.tar.gz full_01/...
执行以下命令,在当前目录下获得集群A的节点部署信息文件nodeinfo.txt。
$ yasbak run -c yashandb -s "list backup tag 'full_01' node info to 'nodeinfo.txt'"
以安装用户登录为数据库集群B准备的服务器1,执行以下命令生成数据库集群B的配置文件。
Note:
指定--node-info为步骤3生成文件的路径。
如果不指定--data-path,则节点的datapath和nodeinfo.txt中节点的datapath保持一致。
不要求数据库集群A和数据库集群B同名。
不需要指定--mn,--cn,--dn,节点数量通过--node-info自动生成。
$ yasboot package de gen --cluster yashandb -u yashan -p password --ip 192.168.1.2,192.168.1.3,192.168.1.4 --port 22 --install-path /data/yashan/yasdb_home --node-info nodeinfo.txt
生成的yashandb.toml文件比分布式配置文件新增参数如下,请不要手动修改groupid和nodeid,否则可能会导致无法恢复数据库。
cluster = "yashandb" empty_cluster = true # empty_cluster为true的时候,表示要创建空集群。 [[group]] groupid = 1 [[group.node]] nodeid = "1-1:1"
执行以下命令,安装数据库。
$ yasboot package install -t hosts.toml
执行以下命令,部署数据库集群B。
$ yasboot cluster deploy -t yashandb.toml
将集群A的catalog目录拷贝至集群B服务器1的相应目录。
初始化集群B的yasbak。
Note:
-D参数需指定为集群B的服务器1中catalog实际存放的目录。
$ yasbak deploy -c yashandb -a 192.168.1.3:1675 -k 96ed7a2c90e81a9e -D ./catalog -u sys -p password --force
拷贝集群A的备份集压缩包到集群B服务器1的相应目录。
执行以下命令,分发备份集压缩包至集群B的所有服务器。
$ yasbak distribute -c yashandb -b yashandb.tar.gz
执行以下命令,重置集群B。
$ yasbak reset -c yashandb -p password
执行以下命令,恢复备份集至集群B。
$ yasbak run -c yashandb -s "restore cluster from tag 'full_01'"