ldap数据库--ODSEE--复制协议
簡單介紹一下ODSEE的復制拓撲的建立,復制協議可以通過管理界面進行創建,也可以通過命令行創建。在此之前需要了解一些復制協議的相關概念,這里針對OESEE。
1,復制角色
master(提供者,也可以叫做數據源):為hub和consumer提供數據,可進行讀寫操作
hub(路由也可稱為):可以為consumer提供數據源,讀寫操作通過referral到master主數據源上進行
consumer(消費者):只能進行讀取操作,寫操作通過referral到master主數據源上進行。
復制角色之間可以進行相互轉換,倒是遵循變動順序:master-->hub-->consumer,consumer-->hub-->master。
2,復制類型
1)多主復制(master---master):讀寫復制,復制協議兩端的角色都為master,均可進行讀寫操作;但是同時在兩端進行操作可能會引起復制沖突,不建議同時在兩端進行寫操作。
2)主從復制(master--consumer):主從復制,consumer保存一份master拷貝;
3)master--hub--consumer:和主從復制相同,hub保存一分master拷貝,并向comsumer提供數據源。
如果復制拓撲里超過16臺服務器進行復制,這時需要考慮使用主從復制;如果超過百臺服務器,這是需考慮使用3)種復制類型,并且每個master鏈接的hub數量至少是10個,每個hub最多能連接20個consumer;任何一個復制拓撲當中都不應該出現hub數量與master相同,或則hub數量與consumer數量相同(原文出處:https://docs.oracle.com/cd/E19424-01/820-4806/gadwv/index.html)
3,復制管理員條目
consumer提供一個針對復制使用的復制管理員對master的變更進行認證;master使用這個復制管理員連接到consumer。
在consumer服務器上,復制管理員具有操作條目變更的權限;復制管理員不能作為被復制的條目信息;創建復制協議時,復制管理員需配置在復制角色為master及hub的一方。
創建復制協議時,可以使用簡單的復制協議,consumer不對數據源進行認證;可以使用復制管理員進行認證(SSL server authentication);可以使用證書進行認證(SSL client authentication)。
?
了解以上內容后就可以創建復制協議了,復制協議基于DN,因此復制協議的創建步驟:創建復制管理員(可選),設置復制角色,在master/hub角色上創建復制協議,初始化復制協議。
4,創建復制管理員
由于復制管理員賬戶不能作為被復制的數據,所以只能通過ldapmodify命令進行添加,添加命令如下(真多ldapmodify,ldapsearch等命令會在后面介紹):
ldapmodify -a -h hostanme -p port -D cn=admin,cn=Administrators,cn=dscc -w 12345678 -f File_path
參數說明:
-a :添加操作
-f:ldif文件路徑,如果不寫該選擇,則可以在命令行中直接進行編輯操作,推薦使用ldif文件方式
文件內容可以如下:
dn: cn=RM_From_masterHost,cn=replication,cn=config
changetype: add
objectClass: person
objectClass: top
sn: replicat_manager
cn: replicat_manager
userPassword: 12345678
5,配置復制角色
1)啟用master復制角色
/bin/dsconf enable-repl -h hostname -p port -w PWD_FILE -d REL_ID master BASE_DB
參數說明: -w:directory Manager密碼文件路徑,-d:master 角色唯一標識符,1--65534,BASE_DB:啟用復制角色的dn,例如dc=example,dc=cr
2)啟用hub復制角色
/bin/dsconf enable-repl -h hostname -p port -w PWD_FILE?hub?BASE_DB
3)啟用consumer復制角色
/bin/dsconf enable-repl -h hostname -p port -w PWD_FILE? consumer?BASE_DB
6,創建復制協議
復制協議的創建在master和hub角色上,執行命令如下:
/bin/dsconf create-repl-agmt -h hostname -p port suffix-DN consumer-host:consumer-port [consumer-host:consumer-port]
(如果master服務器或consumer服務器更改了端口,和該服務器相關的復制協議就需要重新建立)
查看復制協議(status :ok標識復制協議轉臺正常)
./bin/dsconf show-repl-agmt-status -h hostname -p port suffix-DN consumer-host:consumer-port
執行如下命令,使復制協議兩端的服務器使用相同的復制協議配置
/bin/dsconf accord-repl-agmt -h hostname -p port suffix-DN consumer-host:consumer-port
默認情況下創建的復制協議,在consumer端會自動添加一個到master的referral,即在consumer也是可以寫的,只不過通過referral到了master上,但是為了保證讀寫完全分離,此時應該將consumer短的referral設置為一個不可達地址。設置命令如下:
/bin/dsconf set-suffix-prop -h host -p port suffix-DN referral-url:ldaps://servername:port
7,配置復制協議復制管理員
管理員的創建要在創建復制協議之前,創建復制協議的時候配置復制管理員,同樣是在master/hub端:
/bin/dsconf set-repl-agmt-prop -h hostname -p port? $3consumer-host:consumer-port auth-bind-dn:REPL_MAG_DN auth-pwd-file:REPL_MAG_PWD
8,復制協議啟停
啟用復制協議:創建完復制協議后,應該執行啟用復制協議操作
/bin/dsconf enable-repl-agmt -h hostname -p port suffix-DN consumer-host:consumer-port?[consumer-host:consumer-port ...]
停止復制協議:
/bin/dsconf disable-repl-agmt -h hostname -p port suffix-DN consumer-host:consumer-port [consumer-host:consumer-port ...]
9,刪除復制協議
/bin/dsconf delete-repl-agmt -h hostname -p port suffix-DN consumer-host:consumer-port
10,復制協議初始化
如果數據量較大推薦使用命令行進行,如果數據量較小,推薦使用管理界面進行操作。在進行復制協議初始化之前需保證master已經被正確初始化,可以通過dsconf或則dsadm的方式初始化創建的master suffix;也可以使用二進制文件進行初始化,但是限制條件較多不建議使用。
/bin/dsconf init-repl-dest -h host -p port suffix-DN destination-host:destination-port [destination-host:destination-port]
完成后查看復制協議狀態:
/bin/dsconf show-repl-agmt-status -h host -p port suffix-DN destination-host:destination-port
11,強制更新consumer
如果復制協議停止,可以執行此操作,這個操作不能通過管理界面進行。通過dsconf執行的配置操作可能會需要重新啟動服務器實例
/bin/dsconf update-repl-dest-now -h host -p port suffix-DN destination-host:destination-port [destination-host:destination-port]
12,復制沖突的解決
1)復制沖突
存在更改沖突的條目包含操作屬性,nsds5ReplConflict作為沖突標記,使用ldapSearch查找沖突.
$ ldapsearch -h hostname -p port -D cn=admin,cn=Administrators,cn=config -w - -b BASE_DN "(nsds5ReplConflict=*)"
2)命名沖突
在相互復制的時候發生,存在相同的dn,解決辦法是重命名第二個條目。由屬性nsuiqueid提供。多值屬性進行重命名解決(nsuniqueid);單值屬性通過重命名解決。
3)孤立條目沖突
再添加或是刪除的時候,不存在父條目或者存在子條目的時候就可能產生孤立條目,此時會通過創建緊附條目的方式避免。緊附條目包含對象類glue和extensibleObject的臨時條目。可以修改緊附條目以刪除 glue 對象類和 nsds5ReplConflict 屬性(以便使此條目保持為普通條目),或者刪除緊附條目及其子條目
4)潛在互操作問題
限制訪問存在nsds5ReplConflict 屬性的條目,添加aci:
(target="ldap:///dc=example,dc=com")(targetattr!="userPassword")
(targetfilter="(!(nsds5ReplConflict=*))")(version 3.0;acl
"Anonymous read-search access";allow (read, search, compare)
(userdn="ldap:///anyone");)
?
復制拓撲的建立區分好讀寫功能,可以很好的避免由于操作導致的復制沖突。以上內容參考一下內容:
參考鏈接:http://docs.oracle.com/cd/E29127_01/doc.111170/e28972/ds-replication.htm
轉載于:https://www.cnblogs.com/adam1991/p/7650606.html
總結
以上是生活随笔為你收集整理的ldap数据库--ODSEE--复制协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初学scrum及首次团队开发
- 下一篇: 十、Hadoop学习笔记————Hive