Skip to content

Commit 9512c4d

Browse files
committed
new doc
1 parent 82f0e98 commit 9512c4d

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed

201907/20190713_01.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
digoal
55

66
### 日期
7-
2019-07-12
7+
2019-07-13
88

99
### 标签
1010
PostgreSQL , mergejoin , 扫描方法 , 写法注意 , query rewrite , 内核优化

201907/20190719_01.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,29 @@ PostgreSQL , quorum based replication , 脑裂 , 逻辑复制
2929

3030
使用多副本,强一致,达到不发生脑裂的效果。
3131

32+
需要注意:PG同步复制时,本地REDO先刷盘,然后wal sender会等从库的FEEDBACK来释放处于等待队列中的会话。如果用户直接cancel(发送cancel)信号,那么本地实际是已提交,只是用户并不知道(处于unknown状态的事务),如果这个时候发生切换,老的主库实际REDO会比任意从库都要多一点数据,(虽然实际上unknown状态的事务是可以丢掉的),
33+
34+
1、剩余可控从库的个数要至少达到m-n+1个,m为sync从库个数,n为从库副本数,可以保证不发生脑裂(脑裂指主库多出非unknown的事务)。
35+
36+
2、至少需要控制max((m-n+1), n)个从库,才能保证切换时的数据0丢失。
37+
38+
https://www.postgresql.org/docs/12/runtime-config-replication.html#RUNTIME-CONFIG-REPLICATION-MASTER
39+
40+
```
41+
[FIRST] num_sync ( standby_name [, ...] )
42+
ANY num_sync ( standby_name [, ...] ) # quorum based sync replication配置
43+
standby_name [, ...]
44+
```
45+
46+
ANY=n
47+
总共多少个standby_name=m
48+
49+
如下,控制3个从库,保证不脑裂。
50+
51+
控制4个从库,保证不丢数据。
52+
53+
![pic](20190719_01_pic_001.jpg)
54+
3255
## 如何处理
3356
1、补数据,如何补?
3457

201907/20190719_01_pic_001.jpg

69.8 KB
Loading

0 commit comments

Comments
 (0)