br restore 细节咨询

br 版本 v5.2.2

关于 br 数据恢复,有几个问题想咨询下:

  1. br 恢复时,是不是按照每个sst文件依次去恢复的?
  2. 如果有原表有数据,恢复是会做drop操作再恢复,还是保留原来的表和数据?
  3. 我数据库内有 a,b,c 三张表,如果单独恢复 c 表,恢复期间会影响 a表和b表的使用吗?

你看下有没有老师回复,如果没有的话,今晚的版主交流会你提一下~

1 个赞

ok,已上报问题

1 个赞

小任务交给你,结束后随便把你听到的答案附上,随便标记一下解决方案。

1 个赞

:ok_hand::ok_hand:

昨晚欧峰老师对上述 br 问题做了回答,现简单总结下:

  1. br 恢复是不是按照一个个sst文件去恢复的。恢复是会读取 backupmeta 文件,里面存有所有要恢复的 schema 和 table 信息,恢复时会根据这些信息并发恢复数据。

  2. 如果恢复时原表存在且有数据,br restore 并不会 drop table,而是继续恢复数据操作。当 br 认为恢复完成后,会去做 checksum 检查,这时候会报错,因为此时的文本数据已经和集群数据不一致了。所以在 br 恢复时需要确保原表原库已经不存在了,不然会出现恢复数据不一致的情况。

  3. 在线集群恢复单库或者单表,从数据的角度是不会影响的,但是 br 操作会有额外的性能开销,尽量避免在业务高峰期去进行此类操作。

另外针对第二个恢复问题,闫彬彬老师提了个很好的建议:br 命令可以支持类似于 oracle impdp 中TABLE_EXISTS_ACTION 这类可选参数,方便用户可以基于实际情况自行选择恢复方式。

1 个赞
  1. br 恢复时,是不是按照每个sst文件依次去恢复的?
    不是,sst备份文件本身没有次序。所以没有依次恢复。
  2. 如果有原表有数据,恢复是会做drop操作再恢复,还是保留原来的表和数据?
    不会drop掉原表,会保留原来的数据。但是备份会失败。
  3. 我数据库内有 a,b,c 三张表,如果单独恢复 c 表,恢复期间会影响 a表和b表的使用吗?
    恢复过程需要decompression 和 rewrite key (table id changed), 这两个动作非常费CPU,在有限的资源情况下,会影响cluster的使用。
1 个赞

收到,谢谢欧老师~

感谢你的问题。

发现问题没有更新,然后做了个简单的回复 (感觉我们在同时进行),现在我发现我的回复多余了,你的总结更加全面。

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。