#测试思路:
1.备份原分布式库
2.备份原来分布式库zk中的原数据
3.从hdfs 中导出备份文件 -- 这里在同一个集群中就没有导出
4.把备份文件导入到新集群的hdfs 中
5.在新集群中还原元数据
6.在hdfs中可能要重命名备份文件
7.在导入的实例中 进行回档操作
#问题:
恢复的时候,理论上是新创建实例,然后直接回档。
但是,在回档前居然还有一个 flush logs 操作。
在恢复前会连到原数据库 ,会去flush log ;
而我 导入的元数据, 根本没有真实的实例。 导至失败。
#解 : 在恢复时 会去 flush log 的原因
如果binlog写入量很少,可能有未关闭的当前binlog包含了要回档的时间段 (比如当前时间),需要关闭,完成上传;以便回档找到binlog位点 。
目前:这个写死在程序里固定的步骤 , 没有根据时间点来判断 要不要flush logs
##复制注意格式 可以vi 中 :set paste 过控制
修改备份配置文件:backupConf.xml
<backup backupfile_save_dir="/data/zkbak/zkbackup" >
<zookeeper quiet="1" iplist="10.85.10.51:2181" timeout="10000"/>
<backup_node>
<path name="/tdsqlzk/group_1609918012_34"/>
<path name="/tdsqlzk/manager/manager_proxy/proxy_sets/pro_set@group_1609918012_34"/>
<path name="/tdsqlzk/manager/manager_resources/mngr_res@10.85.10.51"/>
</backup_node>
</backup>
#要备份的ZK 地址
#/tdsqlzk 集群ZK的根目录
#/tdsqlzk/group_1609918012_34 要备份的实例
#/tdsqlzk/manager/manager_resources/mngr_res@10.85.10.51 实例的主资源(主节点)
修改备份配置文件:backupConf.xml
<recover>
<zookeeper quit="1" iplist="10.85.10.51:2181" timeout="10000"/>
<recoverlist>
<path src="/tdsqlzk/group_1609918012_34" dst="/tdsqlzk/group_1609918012_34"/>
<path src="/tdsqlzk/manager/manager_proxy/spro_set@group_1609918012_34" dst="/tdsqlzk/manager/manager_proxy/pro_set@group_1609918012_34"/>
<path src="/tdsqlzk/manager/manager_resources/mngr_res@10.85.10.51" dst="/tdsqlzk/manager/manager_resources/mngr_res@10.85.10.51"/>
</recoverlist>
</recover>
#10.85.10.51:2181 要恢复到的ZK地址
#src 原目录
#dst 目标目录
方式二:
新建一个实例,copy 备份文件到相应目录 (详情见: 实例已删除 如何恢复)
#注意
1.集份信息是记录在ZK中的 路径类似下面的
/tdsqlzk/group_1609918012_34/resources/rsip@10.85.10.52/rsport@4002/backupjobs@10.85.10.52_4002/backupjobans@0000000004
2.恢复 不会是匹配文件名,是去扫描 是否有可用的备份文件
所以 不需要去zk中改备份文件名字
原构想以为 是要与备份文件名相匹配 , 所以准备去zk 中改文件名, 或准备先去创建备份文件,然后在改成相同的名字 。 --实际上是不需要匹配文件名的。