Migracja danych z OpenLDAP do OpenDJ

Sorry, this entry is only available in Polish. For the sake of viewer convenience, the content is shown below in the alternative language. You may click the link to switch the active language.

Jeśli posiadacie już jakieś dane w katalogu opartym na OpenLDAP i istnieje potrzeba migracji tychże do OpenDJ, to można to zrobić na kilka sposobów. Najszybszym jest przeniesienie ich między backendami. Po drodze należy jednak wyciąć kilka atrybutów wewnętrznych OpenLDAPa, których OpenDJ może nie przyjąć. Najpierw zróbmy zrzut i policzmy ilość wpisów (entry):

# slapcat > openldap.ldif
# grep -c "^dn: " openldap.ldif
41667

Zrzut ponad 41 tys. rekordów zajmuje ok. 5 sekund, w tym czasie katalog normalnie działa i obsługuje zapytania. Ważne jednak, aby nie były dokonywane w nim zmiany już po zrzucie, bo nie będzie ich odwzorowania w pliku. Czas na utworzenie pliku LDIF zjedliwego przez OpenDJ:

# egrep -v "(structuralObjectClass|entryUUID|creatorsName|createTimestamp|\ entryCSN|modifiersName|modifyTimestamp)" openldap.ldif > opendj.ldif
# grep -c "^dn: " opendj.ldif
41667

Ilość entry się zgadza, kopiuję plik do kontenera z OpenDJ i przystępuję do importu:

# cd /data/var/OpenDJ-2.4.3/bin
# ./stop-ds
# ./import-ldif -a -b dc=domain,dc=tld -l ../../opendj.ldif

Podczas importu będą wyświetlane podobne komunikaty:

...
[14/Jul/2011:13:54:56 +0200] category=JEB severity=NOTICE msgID=8847533 msg=OpenDJ 2.4.3 starting import (build 20110613203412Z, R6998)
[14/Jul/2011:13:54:56 +0200] category=JEB severity=NOTICE msgID=8847449 msg=Import Thread Count: 16 threads
[14/Jul/2011:13:55:07 +0200] category=JEB severity=NOTICE msgID=8847456 msg=Processed 4027 entries, skipped 0, rejected 0, and migrated 0 (recent rate 401.6/sec)
[14/Jul/2011:13:55:07 +0200] category=JEB severity=NOTICE msgID=8847457 msg=Free memory = 165 MB, Cache miss rate = -0.0/entry
[14/Jul/2011:13:55:17 +0200] category=JEB severity=NOTICE msgID=8847456 msg=Processed 8285 entries, skipped 0, rejected 0, and migrated 0 (recent rate 425.8/sec)
[14/Jul/2011:13:55:17 +0200] category=JEB severity=NOTICE msgID=8847457 msg=Free memory = 239 MB, Cache miss rate = 0.0/entry
[14/Jul/2011:13:55:27 +0200] category=JEB severity=NOTICE msgID=8847456 msg=Processed 22912 entries, skipped 0, rejected 0, and migrated 0 (recent rate 1462.7/sec)
[14/Jul/2011:13:55:27 +0200] category=JEB severity=NOTICE msgID=8847457 msg=Free memory = 148 MB, Cache miss rate = 0.0/entry
[14/Jul/2011:13:55:37 +0200] category=JEB severity=NOTICE msgID=8847456 msg=Processed 40627 entries, skipped 0, rejected 0, and migrated 0 (recent rate 1771.7/sec)
...
[14/Jul/2011:13:56:01 +0200] category=JEB severity=NOTICE msgID=8847514 msg=Index dn.dn 95% complete: remaining = 106 kb, rate = 11 kb/s; batch 1/1
[14/Jul/2011:13:56:01 +0200] category=JEB severity=NOTICE msgID=8847514 msg=Index mail.substring 84% complete: remaining = 875 kb, rate = 63 kb/s; batch 1/1
...
[14/Jul/2011:13:56:05 +0200] category=JEB severity=NOTICE msgID=8847539 msg=Index sn.equality phase two processing completed
[14/Jul/2011:13:56:05 +0200] category=JEB severity=NOTICE msgID=8847539 msg=Index mail.substring phase two processing completed
...
[14/Jul/2011:13:56:07 +0200] category=JEB severity=NOTICE msgID=8847569 msg=Total import time was 70 seconds. Phase one processing completed in 45 seconds, phase two processing completed in 25 seconds
[14/Jul/2011:13:56:07 +0200] category=JEB severity=NOTICE msgID=8847454 msg=Processed 41667 entries, imported 41667, skipped 0, rejected 0 and migrated 0 in 70 seconds (average rate 594.0/sec)
[14/Jul/2011:13:56:14 +0200] category=JEB severity=NOTICE msgID=8847536 msg=Import LDIF environment close took 7 seconds

Pisałem wcześniej o konieczności przebudowy indeksów przy imporcie przez backend, ale widzę, że przebudowywane są podczas importu. Na wszelki wypadek sprawdzę jednak spójność:

# ./verify-index -b dc=domain,dc=tld

[14/Jul/2011:14:28:53 +0200] category=BACKEND severity=INFORMATION msgID=9437595 msg=Local DB backend userRoot does not specify the number of lock tables: defaulting to 97
[14/Jul/2011:14:28:53 +0200] category=BACKEND severity=INFORMATION msgID=9437594 msg=Local DB backend userRoot does not specify the number of cleaner threads: defaulting to 24 threads
[14/Jul/2011:14:29:06 +0200] category=JEB severity=NOTICE msgID=8847469 msg=Processed 178 out of 41670 records and found 0 error(s) (recent rate 17.7/sec)
[14/Jul/2011:14:29:06 +0200] category=JEB severity=INFORMATION msgID=8388718 msg=Free memory = 63 MB, Cache miss rate = 89.0/record
[14/Jul/2011:14:29:16 +0200] category=JEB severity=NOTICE msgID=8847469 msg=Processed 594 out of 41670 records and found 0 error(s) (recent rate 41.6/sec)
...
[14/Jul/2011:14:34:32 +0200] category=JEB severity=NOTICE msgID=8847466 msg=Checked 41670 entries and found 0 error(s) in 336 seconds (average rate 123.8/sec)

Przy okazji widać, że jest 41670 entry, czyli wszystkie zaimportowane + 3, które były już wcześniej. Uruchamiam serwer OpenDJ:

# ./start-ds

Po uruchomieniu podłączam się z Eclipse do katalogu i przeglądam sobie świeżo zaimportowane dane.

You may also like...

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.