Skip to content

Commit

Permalink
add docs for pause operation of cluster (actiontech#187)
Browse files Browse the repository at this point in the history
* add docs for  pause operation of cluster

* fixed bug of review
  • Loading branch information
dcy10000 authored and yanhuqing666 committed Apr 19, 2021
1 parent 1ec7efe commit 63ad232
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 16 deletions.
25 changes: 14 additions & 11 deletions 2.Function/2.08_cluster.md
Original file line number Diff line number Diff line change
Expand Up @@ -160,20 +160,23 @@ dble启动时候会在online的目录下注册自己的信息,如果此时正
5.其他订阅结点异步完成switch

#### G.暂停流量(一般用于扩容迁移等)

##### G.1 pause流程
1.申请分布式锁
2.通知其他结点
3.本结点停流量
4.等待其他结点完成停流量 或者超时
5.返回暂停成功或者失败
1. 申请分布式锁 pause_node.lock
2. 通知其他结点
3. 本结点停流量
4. 等待其他结点完成停流量 或者超时
5. 返回暂停成功或者失败
6. 释放分布式锁



##### G.2 resume流程
1.本结点恢复流量
2.通知其他结点
3.等待其他结点完成恢复流量
4.释放分布式锁
1. 申请分布式锁 pause_node.lock
2. 本结点恢复流量
3. 通知其他结点
4. 等待其他结点完成恢复流量 或者超时
5. 返回暂停成功或者失败
6. 释放分布式锁

### 2.8.5 XA日志管理
在使用集群模式时,未完成的XA日志会存放在zookeeper上,更加安全,防止某台机器硬盘物理损坏导致日志丢失(此处可能会有并发高吞吐引发的性能及其他问题,待测试)。
Expand Down
9 changes: 4 additions & 5 deletions 2.Function/2.1_manager_cmd/2.1.14_pause_resume.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@
背景:当我们做部分shardingNode的拆分或者是数据重分片时,有时希望不影响到其他无关的业务所涉及到的dbGroup和shardingNode,所以希望只停下部分shardingNode的流量。
#### 2.1.14.0 功能描述
  pause功能会在dble不停止的状态下停止对于指定后端节点的流量,在暂停期间的所有涉及到节点的路由结果会被挂起(为防止挂起的连接过多,queue和wait_limit参数会控制挂起连接的数量和时间),直到恢复命令resume被执行之后,之前被挂起的查询才会继续进行
  pause的执行不一定成功,pause命令将会在指定的timeout的时间内等待需要暂停的流量上的所有事务或者正在执行的sql结束,当目标节点上来自dble的sql或者事务一直无法在指定时间内结束的时候,本次暂停会返回失败。
  pause(暂停)是一种dble server级别的全局状态,暂停节点不可追加或者逐步恢复,只能一起暂停指定的一个或几个shardingNode并一起恢复流量,并且暂停期间执行reload命令不会恢复对应的流量状态。但是暂停操作不会被记录在文件之中,若发生dble重启,则暂停状态会被重置。
这里推荐谨慎的使用暂停并选择影响的范围,推荐逐个变动暂停,reload,恢复,再进行下一个变动
  pause的执行不一定成功,pause命令将会先获取分布式锁,然后在指定的timeout的时间内等待需要暂停的流量上的所有事务或者正在执行的sql结束,当目标节点上来自dble的sql或者事务一直无法在指定时间内结束的时候,本次暂停会返回失败。
  pause(暂停)是一种dble server级别的全局状态,同一时间段只能执行一个 pause 操作,暂停节点不可追加或者逐步恢复,只能一起暂停指定的一个或几个shardingNode并一起恢复流量。暂停期间执行 reload命令、dble重启、新增dble节点 均可以维持暂停状态。
这里推荐谨慎的使用暂停并选择影响的范围,推荐逐个变动暂停,reload,恢复,再进行下一个变动

#### 2.1.14.1 暂停流量:
`pause @@shardingNode = 'dn1,dn2' and timeout = 10 ,queue = 10,wait_limit = 10;`

Expand Down Expand Up @@ -34,6 +35,4 @@ mysql> show @@pause;
2 rows in set (0.15 sec)
```

另外,商业版本支持集群操作,开源版本后续也将支持


0 comments on commit 63ad232

Please sign in to comment.