三、Slony-I 基礎知識

weixin_33807284發表於2018-06-02

基本概念

  • 叢集(cluster)
  • 節點(Node)
  • 複製集合(replication set)
  • 資料原始生產者(Origin)、資料提供者(Providers)和資料訂閱者(Subscribers)
  • slon 守護程式(slon daemons)(俄語裡的大象,slony表示slon的複數,一群大象)
  • slonik 配置程式(slonik configuration processor)(俄語裡的 小象)

叢集
指的是一組PostgreSQL資料庫例項,在叢集間發生資料複製。叢集在每個Slonik指令碼中通過變數cluster_name = cname來指定。
Slony-I在各個資料庫中用叢集名稱建立一個模式,Slony-I內部使用的函式(包括觸發器函式)、表、檢視和序列都放在這個模式下。

節點
資料庫叢集裡的單個資料庫例項,在Slonik指令碼里的開頭定義,基本格式:
NODE 1 ADMIN CONNINFO = 'dbname=testdb host=server1 userslony'
1表示節點1,節點號在叢集中唯一。“CONNINFO” 是用來連線PostgreSQL資料庫的引數字串,裡面是鍵值對組成,鍵值對之間用空格隔開。這個字串配置好以後,Slony-I不會檢查是否正確,只在連線的時候才會判斷。

複製集合
指的是需要複製的表和序列的集合,目的是把要複製的物件進行分組,然後對不同的分組進行不同的操作。

資料原始生產者、提供者和訂閱者
節點生產資料時,被稱為資料原始生產者,複製原始資料的節點被稱為資料訂閱者,但是Slony-I支援級聯複製,因此當一個複製節點為另外一個複製節點提供資料時,它又被稱為資料提供者。即同時具有提供者和訂閱者的角色。

slon守護程式
叢集的每一個節點上都有一個slon守護程式,用於處理複製中的事件,事件分為兩類:

  1. 配置事件:做管理配置時,使用slonik程式發出的配置事件(修改或刪除配置等)
  2. 同步事件:當源資料庫上需要同步的表發生資料變更時,變更的多個事務組合成一個同步事件。

slonik配置程式
slonik是一個命令列工具,可以處理slonik命令以及slonik命令組合成的指令碼

Slony-I複製的限制

限制主要有:

  1. 對大物件的變更不能複製
  2. DDL的變更不能複製
  3. 使用者和許可權的變更不能複製
    基本上只支援對於表資料的同步(大多數基於觸發器的資料同步軟體特性),此外Slony-I還支援對於序列的同步。
    對DDL,支援使用命令“SLONIK EXECUTE SCRIPT”來將DDL執行到所有節點上。使用PgAdmin Ⅲ做表結構變更時,可以使用裡面的“使用Slony選項來讓表變更在Slony叢集裡執行”。

對錶的要求是:

  1. 要有主鍵,可以自動識別
  2. 沒有主鍵要有唯一鍵
  3. 沒有主鍵,要手動指定唯一鍵,沒有唯一鍵,則不能複製表資料。