Skip to content

dble下如何做备份 #3151

Answered by KlawzZ
PanternBao asked this question in Q&A
Discussion options

You must be logged in to vote

1.备份管理端发起一个全量备份的请求,即在各个数据节点中做一个全量备份,并且得到一个数据备份的位置,这个位置记作A。
2.通过dble集群管理端的命令去获取每个分片当前gtid事务的状态,这个操作会hang住dble的写事务。对于正在执行的事务会等待它完成,而新的事务将会被阻塞在dble层面。为了防止业务长时间挂在这里,阻塞时间过长,在等待事务执行完成这里存在一个超时机制,如果超时,本次拉取gtid的操作就会失败。正常情况下,在阻塞新事务以及等待事务执行完成后,所有的分片处于一个只读状态,那么此时去拉gtid是能保证一致性的。
3.上一步返回的gtid记为B。
4.上面步骤完成后,写请求已经可以继续了。然后备份管理端会下发一个新的请求,按照每个分片做binlog的备份。由于此时可能已经写入了新的数据,所以binlog的备份一定是大于等于B的。另外需要注意的是,binlog的备份起点一定要包含A,即备份起点小于等于A,这样binlog的备份范围就是A到B的一个超集。
以上,一次完整的备份就完成了。

Replies: 1 comment

Comment options

You must be logged in to vote
0 replies
Answer selected by LUAgam
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants