昨晚欧峰老师对上述 br 问题做了回答,现简单总结下:
-
br 恢复是不是按照一个个sst文件去恢复的。恢复是会读取 backupmeta 文件,里面存有所有要恢复的 schema 和 table 信息,恢复时会根据这些信息并发恢复数据。
-
如果恢复时原表存在且有数据,br restore 并不会 drop table,而是继续恢复数据操作。当 br 认为恢复完成后,会去做 checksum 检查,这时候会报错,因为此时的文本数据已经和集群数据不一致了。所以在 br 恢复时需要确保原表原库已经不存在了,不然会出现恢复数据不一致的情况。
-
在线集群恢复单库或者单表,从数据的角度是不会影响的,但是 br 操作会有额外的性能开销,尽量避免在业务高峰期去进行此类操作。
另外针对第二个恢复问题,闫彬彬老师提了个很好的建议:br 命令可以支持类似于 oracle impdp 中TABLE_EXISTS_ACTION
这类可选参数,方便用户可以基于实际情况自行选择恢复方式。