drbd故障處理
drbd1主,drbd2輔
1,正常情況下狀態:
[root@drbd1 ~]# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
srcversion: 299afe04d7afd98b3ca0af9
0: cs:connected ro:primary/secondary ds:uptodate/uptodate c r----
ns:2144476 nr:0 dw:36468 dr:2115769 al:14 bm:129 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
[root@drbd2 ~]# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
srcversion: 299afe04d7afd98b3ca0af9
0: cs:connected ro:secondary/primary ds:uptodate/uptodate c r----
ns:0 nr:2141684 dw:2141684 dr:0 al:0 bm:130 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
2,drbd1故障後
drbd1狀態:
[root@drbd1 ~]# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
srcversion: 299afe04d7afd98b3ca0af9
0: cs:standalone ro:primary/unknown ds:uptodate/dunknown r----
ns:4 nr:102664 dw:102668 dr:157 al:1 bm:8 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
drbd2的狀態:
[root@drbd2 ~]# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
srcversion: 299afe04d7afd98b3ca0af9
0: cs:wfconnection ro:secondary/unknown ds:uptodate/dunknown c r----
ns:0 nr:2141684 dw:2141684 dr:0 al:0 bm:130 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
3,處理方法:
a,將secondary配置成primary角色
[root@drbd2 ~]# drbdsetup /dev/drbd0 primary -o
[root@drbd2 ~]# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
srcversion: 299afe04d7afd98b3ca0af9
0: cs:wfconnection ro:primary/unknown ds:uptodate/outdated c r----
ns:0 nr:2141684 dw:2141684 dr:0 al:0 bm:130 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
掛載:[root@drbd2 /]# mount /dev/drbd0 /data1
[root@drbd2 data1]# ll
total 10272
-rw-r--r-- 1 root root 10485760 feb 13 11:26 aa.img
drwx------ 2 root root 16384 feb 13 11:25 lost+found
這個時候drbd2開始提供服務,開始寫資料
drbd1主恢復正常後:
[root@drbd1 ~]# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
srcversion: 299afe04d7afd98b3ca0af9
0: cs:standalone ro:primary/unknown ds:uptodate/dunknown r----
ns:2144476 nr:0 dw:36484 dr:2115769 al:14 bm:129 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:8
drbd1狀態是:standalone,此時,drbd1是不會和drbd2互相聯絡的
我們來檢視下日誌:
[root@drbd1 ~]# tailf /var/log/messages
feb 13 16:14:27 drbd1 kernel: block drbd0: helper command: /sbin/drbdadm split-brain minor-0
feb 13 16:14:27 drbd1 kernel: block drbd0: helper command: /sbin/drbdadm split-brain minor-0 exit code 0 (0x0)
feb 13 16:14:27 drbd1 kernel: block drbd0: conn( wfreportparams -> disconnecting )
feb 13 16:14:27 drbd1 kernel: block drbd0: error receiving reportstate, l: 4!
feb 13 16:14:27 drbd1 kernel: block drbd0: asender terminated
feb 13 16:14:27 drbd1 kernel: block drbd0: terminating drbd0_asender
feb 13 16:14:27 drbd1 kernel: block drbd0: connection closed
feb 13 16:14:27 drbd1 kernel: block drbd0: conn( disconnecting -> standalone )
feb 13 16:14:27 drbd1 kernel: block drbd0: receiver terminated
feb 13 16:14:27 drbd1 kernel: block drbd0: terminating drbd0_receiver
腦裂出現!
解決方法:
1>,我們需要將現在的drbd1角色修改為secondary
[root@drbd1 ~]# drbdadm secondary r0
[root@drbd1 ~]# drbdadm -- --discard-my-data connect r0 ##該命令告訴drbd,secondary上的資料不正確,以primary上的資料為準。
2>,我們還需要在drbd2上執行下面操作
[root@drbd2 /]# drbdadm connect r0
這樣drbd1就能和drbd2開始連線上了,並且保證資料不會丟失:
[root@drbd1 ~]# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
srcversion: 299afe04d7afd98b3ca0af9
0: cs:connected ro:secondary/primary ds:uptodate/uptodate c r----
ns:0 nr:20592 dw:20592 dr:0 al:0 bm:4 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
drbd腦裂處理
自動處理 通過 etc drbd.conf配置中設定自動處理策略,在發生資料不一致時自動處理。自動處理策略定義如下 1 after sb 0pri.當兩個節點的狀態都是secondary時,可以通過after sb 0pri策略自動恢復。1 disconnect 預設策略,沒有自動恢復,簡單的斷開連...
線上故障處理
於 2016 年 12 月 09 日 處理流程 故障後處理 前段時間在團隊內整理了乙份線上事故處理的流程,修改後在這裡分享。1.1 系統 業務報警 這個是獲取故障最常用的手段。一般的系統正常運營過程中都會有一定的指標監控。如 在系統層面某種報錯出現的次數,系統常規指標,如可用記憶體,jvm gc,連...
RAC 故障處理
rac的故障定位 比單節點資料庫更複雜 日誌的儲存位置更多 日誌的資訊量更大 故障更複雜 rac的核心程序,cssd,crsd 這兩個程序出現問題,那麼 rac就宕了。rac比單例項資料庫程序要複雜的多。rac日誌存放的位置也多,種類也多,相對於單例項。對於單例項資料庫,所有的關於資料庫的資訊幾乎都...