目前系計中有三台主要的LDAP Server,其中有
一、cshome,為LDAP Master,別名為 ldapmaster.cs.nctu.edu.tw
二、csmailgate,為LDAP Slave,別名為 ldap.cs.nctu.edu.tw
三、csduty,為LDAP Slave,別名與csmailgate的別名相同。
cshome每天都會把資料庫文字備份起來
一般情況之下,儘可能保持三台Server的版本相同,避免出現版本不相同而不相容的情事。升級並不需要有任何特定順序,惟注意升級Master時,會附掛replication server,若是重建cshome的bdb時,需特別注意相關問題。
升級ldap的時候,一定要保持冷靜,因為除非兩個系統(csmailgate, csduty)都爛掉了,這樣才會變成很嚴重的問題;即使兩台都爛了,只要第三台沒爛,那資料就一定有救,所以不要太緊張,但是一定要謹慎。
第一步驟,以文字資料備份資料庫
# ldapsearch –x –d ‘cn=Manager,dc=cs,dc=nctu,dc=edu,dc=tw’ –W > csdb.ldif接下來打入密碼
第二步驟,檢查備份資料完整性
目前來說系計中的LDAP資料筆數大約是3000~4000筆之間,用
# vi csdb.ldif按下G,可以看到輸出的資料筆數。
往上捲動看幾個一般使用者,檢查他們是否都有userPassword以及NTLMpasswd之類的欄位。
第三步驟,開始升級,在這個地方我們比較不建議使用portupgrade openldap23-server,而是
# cd /usr/ports/net/openldap23-client因為這樣的動作可以確保OpenLDAP Server的downtime最短,而portupgrade的好處是自動化,但是它卻不會幫你重新啟動ldap server (而是直接停掉)
# make
# cd
/usr/ports/net/openldap23-server
# make
# sudo
/usr/local/etc/rc.d/slapd
stop
# sudo /usr/local/etc/rc.d/slurpd
stop
# make –DFORCE_PKG_REGISTER
reinstall
# sudo
/usr/local/etc/rc.d/slapd start
# sudo
/usr/local/etc/rc.d/slurpd start
#如果這台是cshome的話
第四步驟,檢查資料庫正常運作
# ps auxwww grep slapd
如果有process的話,那麼就有機會是好的,可以接下來做第五個步驟的測試,如果沒有的話;那麼可能就需要做第六步驟的還原了。不確定的話,可以再重新把slapd重新啟動一次。
第五步驟,再次確認資料庫正常運作
# ldapsearch –x –H ldaps://HOSTNAME ‘(uid=jtwang)’HOSTNAME的部份填入相對應的hostname,有可能是csduty、csmailgate、cshome
確定HOSTNAME的部份相當重要。
如果真的有查到資料,恭喜你,你的資料庫已經成功的升級了,可以省略本文件以下的內容。
第六步驟,還原資料庫
如果你的slapd開起來之後沒多久就死掉,或者是根本就開不起來,建議你可以先使用
# /usr/local/libexec/slapd –D 255
啟動slapd來看錯誤訊息,如果發現是無可捥救的錯誤訊息的話,那就可以把資料庫砍了
# sudo mv /var/db/openldap-data /var/db/openldap-data-`date ….`然後把原本的資料倒回去
# sudo mkdir
/var/db/openldap-data
# sudo chmod 700 /var/db/openldap-data
# sudo
chown
ldap:ldap /var/db/openldap-data
# sudo /usr/local/etc/rc.d/slapd
start
基本上,你要確定倒出的資料前兩筆一定要是
Dn: cn=Manager,dc=cs,dc=nctu,dc=edu,dc=tw .接下來再
…
Dn:
cn=cs,dc=nctu,dc=edu,dc=tw
…
# ldapadd –D “cn=Manager,dc=cs,dc=nctu,dc=edu,dc=tw” –H ldaps://HOSTNAME –W –f csdb.ldif一定要注意,-H 那一段一定要加,以免倒錯機器。
理論上你會看到一大堆add entry …. “uid=UID,ou=People,dc=cs,dc=nctu,dc=edu,dc=tw”之類的,一直到結束。如果可以安然的執行到結束而且沒有錯誤訊息的話,那麼恭喜你,你的升級動作有驚無險的完成了。可以省略以下的文件。
如果又冒出錯誤訊息,那麼你的升級之路還沒結束…
第N-1步驟,檢查你的錯誤訊息
如果錯誤訊息是syntax error或是什麼value之類的,則詢問一下之前的maintainer或問你自己是不是有修改過schema,可能是之前可以接受的資料類型,而現在不支援了。
第N步驟,Google it
把它找出問題發現的原因,並解決它。這部份,這篇文章只能提示你這些資訊了…