TiDB br 日志备份 PermissionDenied
作者: Zyaire 原文来源:https://tidb.net/blog/618eefd4
项目背景
这次项目是关于银行的,主要涉及存储各种交易和客户信息,这个过程产生了大量数据。为了保护客户数据并确保合规性,需要制定了一套数据管理策略,定期备份所有金融数据,以防止数据丢失或损坏,从而在突发事件发生时能够迅速恢复运营。因此,我的任务是负责这个备份过程。我采用了一种高效的备份工具 BR,并将数据存储在高可用的网络文件系统(NFS)上,以确保多台服务器之间的可靠访问。起初我以为这项工作能很快完成,但在备份过程中遇到了一个权限相关的问题,导致备份无法成功。尝试了多种方法都未能解决,直到第二天早晨,我才意识到确保备份过程顺利进行的重要性。
备份任务的计划
这次备份采用每日执行增量备份,每周进行全量备份。
增量备份:我们每天都会执行增量备份,捕捉自上次备份以来所有新增或更改的数据。采用这种方式目的能够节省存储空间,还能减少备份时间,每天的交易数据都能及时保存。
全量备份:每周进行一次全量备份,将所有金融数据完整地复制并存储。
原理解释
本文档将基于具体的使用场景,进行 TiDB 日志备份以及全量备份途中遇到的问题。
下面简单介绍一下 TiDB 集群以及工具及备份存储的情况:
tidb 集群版本 v6.5.1
tiup 版本:v1.11.3
br 工具版本 v6.5.1
备份存储:nfs 共享文件(nfs4,xfs)
br 日志备份的原理图,以及流程图:
在上面的流程图可以看得出,如下:
br 接收到备份命令 br log start,会获取当前备份时间点,备份存储地址,并在 PD 注册日志备份任务
TIKV 监控日志备份任务的创建与更新
TikV log backup observer 持续的变更 KV 变更日志
TIDB 监控日志的备份进度
日志备份
这是一个使用 tiup 工具执行 br 日志备份的示例命令。其中:
${pd_addr} 是 PD 服务器的地址
${task-name} 是 br 日志任务名称
${backup_path} 是备份文件的存储路径
${log_file} 是日志文件的路径
日志备份报错 (PermissionDenied)
在执行日志备份命令时,遇到了权限被拒绝的错误。I/O Error PermissionDenied 这表明 TiKV 无法在指定的备份路径创建或写入文件。并且在上面的流程图可以看出备份文件 (SST) 的保存是由 TiKV 执行的,所以备份权限是与 TIKV 的节点相关的。
在创建 tidb 用户没有正确设置 UID 和 GID,导致出现权限冲突问题。这可能会导致 TiKV 无法访问指定的备份路径,从而引发 PermissionDenied 错误。
解决步骤:
确认 NFS 服务端配置:
设置 NFS 客户端(TiDB 节点)的默认 ACL,必须将每个需要备份的 tikv 节点都配置进去:
调整 TiDB 集群用户权限:
重新挂载 NFS 共享:
验证权限:
通过这些步骤,我们可以解决由于用户权限设置不当导致的 PermissionDenied 错误,TiKV 能够成功执行日志备份操作。
反思
经过这次备份操作,深刻认识到在数据备份过程中,权限管理的复杂性与重要性是不可忽视的。备份虽然是一个技术性的操作,但背后涉及到的权限配置、用户管理等问题往往会直接影响到备份的成功与否。我们在这个过程中,除了要确保备份目录的权限设置正确外,还发现了用户的 umask 设置、用户组的合理配置以及访问控制的重要性(* 虽然修改 umask 对于整个过程没什么帮助哈哈哈哈 *)。
在未来的工作中,需要继续深化更加严格的权限管理策略,确保每个用户的访问权限都是经过深思熟虑的。也需要定期进行备份流程中的权限审查,以便及时发现并解决潜在的问题,进一步提升数据的安全性与可靠性。
总结
本文详细介绍了在使用 TiDB 进行日志备份时遇到的权限问题及其解决方法。通过对 NFS 服务的配置、TiDB 目录的 ACL 的设置,成功消除了备份过程中的权限冲突。这一经验教训为日后的 TiDB 备份与恢复操作中提供了宝贵的参考,也希望可以给遇到这个问题的而熬夜解决的老铁们一个参考。
总的来说,这次经历不仅提升了我的技术水平,也增强了在面对问题时的应对能力。未来,我期待在数据管理和备份策略上不断完善,以更好地在上一层楼。
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/f536354ba3e690dc20515891c】。文章转载请联系作者。
评论