SSDB 主從同步和復(fù)制的配置與監(jiān)控

2019-02-18 14:58 更新

配置

對(duì)于老版本, 你必須通過(guò) slaveof.ip 指定 master 的 IP 地址, 但對(duì)于新版本(1.9.2+), 你可以通過(guò) 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> info
binlogs
    capacity : 10000000
    min_seq  : 1
    max_seq  : 74
replication
    client 127.0.0.1:55479
        type     : sync
        status   : SYNC
        last_seq : 74
replication
    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í)例的寫(xiě)操作狀態(tài).

  • capacity: binlog 隊(duì)列的最大長(zhǎng)度
  • min_seq: 當(dāng)前隊(duì)列中的最小 binlog 序號(hào)
  • max_seq: 當(dāng)前隊(duì)列中的最大 binlog 序號(hào)

replication

可以有多條 replication 記錄. 每一條表示一個(gè)連接進(jìn)來(lái)的 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 角度來(lái)看的, 你永遠(yuǎn)不需要在 master 上配置它自己的 id).
  • slaveof.copy_count: 在全量同步時(shí), 已經(jīng)復(fù)制的 key 的數(shù)量.
  • slaveof.sync_count: 發(fā)送或者收到的 binlog 的數(shù)量.

關(guān)于 status:

  • DISCONNECTED: 與 master 斷開(kāi)了連接, 一般是網(wǎng)絡(luò)中斷.
  • INIT: 初始化狀態(tài).
  • OUT_OF_SYNC: 由于短時(shí)間內(nèi)在 master 有大量寫(xiě)操作, 導(dǎo)致 binlog 隊(duì)列淘汰, slave 丟失同步點(diǎn), 只好重新復(fù)制全部的數(shù)據(jù).
  • COPY: 正在復(fù)制基準(zhǔn)數(shù)據(jù)的過(guò)程中, 新的寫(xiě)操作可能無(wú)法及時(shí)地同步.
  • SYNC: 同步狀態(tài)是健康的.

判斷同步狀態(tài)

對(duì)于 masterbinlogs.max_seq 是指當(dāng)前實(shí)例上的最新一次的寫(xiě)(寫(xiě)/更新/刪除)操作的序號(hào), replication.client.last_seq 是指已發(fā)送給 slave 的最新一條 binlog 的序號(hào).

所以, 如果你想判斷主從同步是否已經(jīng)同步到位(實(shí)時(shí)更新), 那么就判斷 binlogs.max_seq 和 replication.client.last_seq 是否相等.

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)