SSDB-Datenbank-Benutzerhandbuch
/ SSDB 主從同步和復(fù)制的配置與監(jiān)控
SSDB 主從同步和復(fù)制的配置與監(jiān)控
配置
對(duì)于老版本, 你必須通過
slaveof.ip
指定 master 的 IP 地址, 但對(duì)于新版本(1.9.2+), 你可以通過 slaveof.host
指定 master 的主機(jī)名(域名).主-從
#server 1
replication: slaveof:
#server 2
replication:
slaveof: id: svc_1
# sync|mirror, default is sync type: sync # use ip for older version #ip: 127.0.0.1 # use host since 1.9.2
host: localhost
port: 8888
主-主
#server 1
replication:
slaveof: id: svc_2
# sync|mirror, default is sync type: mirror # use ip for older version #ip: 127.0.0.1 # use host since 1.9.2
host: localhost
port: 8889
#server 2
replication:
slaveof: id: svc_1
# sync|mirror, default is sync type: mirror # use ip for older version #ip: 127.0.0.1 # use host since 1.9.2
host: localhost
port: 8888
多主
在一組一共包含 n 個(gè)實(shí)例的 SSDB 實(shí)例群中, 每一個(gè)實(shí)例必須 slaveof 其余的 n-1 個(gè)實(shí)例.
replication:
slaveof: id: svc_1
# sync|mirror, default is sync type: mirror # use ip for older version #ip: 127.0.0.1 # use host since 1.9.2
host: localhost
port: 8888
slaveof:
id: svc_2 # sync|mirror, default is sync type: mirror # use ip for older version #ip: 127.0.0.1 # use host since 1.9.2
host: localhost
port: 8889# ... more slaveof
監(jiān)控同步狀態(tài)
info 命令返回的信息
ssdb 127.0.0.1:8899> infobinlogs capacity : 10000000 min_seq : 1 max_seq : 74replication client 127.0.0.1:55479 type : sync status : SYNC last_seq : 74replication slaveof 127.0.0.1:8888 id : svc_2 type : sync status : SYNC last_seq : 10023 copy_count : 0 sync_count : 44
binlogs
當(dāng)前實(shí)例的寫操作狀態(tài).
- capacity: binlog 隊(duì)列的最大長度
- min_seq: 當(dāng)前隊(duì)列中的最小 binlog 序號(hào)
- max_seq: 當(dāng)前隊(duì)列中的最大 binlog 序號(hào)
replication
可以有多條 replication
記錄. 每一條表示一個(gè)連接進(jìn)來的 slave(client), 或者一個(gè)當(dāng)前服務(wù)器所連接的 master(slaveof).
- slaveof|client host:port, 遠(yuǎn)端 master/slave 的 host:port.
- type: 類型,
sync|mirror
. - status: 當(dāng)前同步狀態(tài),
DISCONNECTED|INIT|OUT_OF_SYNC|COPY|SYNC
. - last_seq: 上一條發(fā)送或者收到的 binlog 的序號(hào).
- slaveof.id: master 的 id(這是從 slave's 角度來看的, 你永遠(yuǎn)不需要在 master 上配置它自己的 id).
- slaveof.copy_count: 在全量同步時(shí), 已經(jīng)復(fù)制的 key 的數(shù)量.
- slaveof.sync_count: 發(fā)送或者收到的 binlog 的數(shù)量.
關(guān)于 status:
- DISCONNECTED: 與 master 斷開了連接, 一般是網(wǎng)絡(luò)中斷.
- INIT: 初始化狀態(tài).
- OUT_OF_SYNC: 由于短時(shí)間內(nèi)在 master 有大量寫操作, 導(dǎo)致 binlog 隊(duì)列淘汰, slave 丟失同步點(diǎn), 只好重新復(fù)制全部的數(shù)據(jù).
- COPY: 正在復(fù)制基準(zhǔn)數(shù)據(jù)的過程中, 新的寫操作可能無法及時(shí)地同步.
- SYNC: 同步狀態(tài)是健康的.
判斷同步狀態(tài)
對(duì)于 master, binlogs.max_seq
是指當(dāng)前實(shí)例上的最新一次的寫(寫/更新/刪除)操作的序號(hào), replication.client.last_seq
是指已發(fā)送給 slave 的最新一條 binlog 的序號(hào).
所以, 如果你想判斷主從同步是否已經(jīng)同步到位(實(shí)時(shí)更新), 那么就判斷 binlogs.max_seq
和 replication.client.last_seq
是否相等.