LDAP: резервне копіювання з slapcat vs ldapsearch


11

Використовується: openldap-servers-2.4.23-34.el6_5.1.x86_64

Завдання: створити скрипт для crontabстворення повної резервної копії баз даних.

1) slapcat- створити файл у форматі за замовчуванням, Berkeley DB.

2) slapcatможна робити під час slapdроботи (якщо bdb/hdbвикористовується база даних).

3) Щоб відновити файл після slapcat- повинен бути використаний slapadd(не ldapadd).

4) slapcat/addне вимагає пароля.

5) slapaddможна зробити лише при slapdзупинці.

Приклад:

 $ slapcat -f /etc/openldap/slapd.conf -b "dc=db_1" -l db_1_backup.ldif
 $ slapadd -l db_1_backup.ldif

Замість slapcat/add- давайте подивимось ldapsearch/add:

1) ldapsearch- створює файл з майже такою ж інформацією, як і slapcat;

2) ldapadd- може використовувати файл з ldapsearch, не потребує slapdзупинки;

3) ldapadd/search- вимагає пароль.

Приклад:

 $ ldapsearch -D "cn=root,dc=db_1" -W -b "dc=db_1" "dc=db_1" -LLL > db_1_backup2.ldif
 $ ldapadd -x -D "cn=root,dc=db_1" -W -f db_1_backup2.ldif

Отже - питання:

1) Чи я пропускаю щось в цьому описі інструментів?

2) У чому ще різниця між ldapadd/slapaddі ladpsearch/slapcat?

Відповіді:


12

Хороший підсумок, кілька додаткових моментів:

  • slapcatскидання з будь-якого (локального) резервного резервного пам’яті, воно не повинно бути Берклі (hdb або bdb), воно також працює з OLC ( cn=config). Він скидається у формат LDIF . (Під поняттям я маю на увазі безпосередньо керований OpenLDAP, а не, наприклад, бекенд SQL, навіть якщо він зберігається локально.)
  • ldapaddвимагає , щоб Slapd це працює, slapaddвимагає , щоб він НЕ працює
  • ldapsearchвимагає, щоб slapd це було запущено, slapcatне важливо, чи він працює з BDB, як ви зазначили

Коротко:

  • slapcatце спосіб отримати гарне резервне копіювання, яке ви зможете швидко відновити, хоча і з простоєм майстра (ви можете обійти це за допомогою різних типів налаштування реплікації). Це те, що ви повинні використовувати для загального резервного копіювання та попереднього оновлення.
  • ldapsearch(без +) ви отримаєте портативну резервну копію, яку ви, мабуть, можете з невеликими труднощами завантажувати на будь-який інший сервер каталогів, але це буде лише відновлення життєздатності у простому налаштуванні OpenLDAP (ніякої реплікації, жодних спеціальних накладок, жодного переписування), і якщо вам не байдуже зберігати UUID / створювати / змінювати метадані. Вам знадобляться будь-які додаткові файли схем, які також відповідають вашим даним.
  • ldapadd(з використанням іншої ідентичності ldapmodify) можна використовувати для легкого застосування модифікацій LDAP (модифікація об'єкта, видалення та перейменування), які неможливо або неможливо за допомогою slapadd/ slapcatпоодинці

Для більшості адміністраторів основні міркування випливають із дещо різного змісту LDIF у кожному конкретному випадку та вимоги slapdдо запуску (чи ні). Більш важливі відмінності:

  1. slapcatшвидше, оскільки він просто скидає базу даних, пропускаючи накладні витрати протоколу LDAP, автентифікацію, контроль доступу, обмеження об'єктів і часу, накладення; і він не здійснює пошук відповідно до ієрархії LDAP.
  2. slapaddшвидше (знову ж, відсутність накладних витрат протоколу LDAP), і якщо ви відновлюєте резервну копію відомого хорошого, ви можете запустити у швидкому режимі ( -q), щоб прискорити великий імпорт. Ви також можете відключити перевірку схеми ( -s), хоча зауважте, що невеликі зміни схеми або перевірки даних між версіями OpenLDAP не є нечуваними.
  3. slapcatобмежена локальними базами даних, вона не перейде на інші каталоги (наприклад, з back-ldap, back-meta), як ldapsearchбуде. Те саме стосується slapadd/ ldapadd.
  4. ldapsearchповертає динамічні атрибути, які не зберігаються в бекенде, наприклад, hasSubordinatesабо ті, що підтримуються накладками (наприклад slapo-memberof). У вас виникнуть проблеми із завантаженням цих даних ldapadd(наприклад, експлуатаційні атрибути без модифікації користувача). Переписування (slapo-rwm) також може спотворювати ldapsearchпогляд на вміст каталогу.
  5. slapcatвключає внутрішні (операційні) атрибути, якщо ви використовуєте реплікацію, ці атрибути є критичними. З реплікацією ви дещо менш залежні від резервного копіювання, але якщо ви використовуєте ldapaddдля перезавантаження головного майстра, кожен об'єкт буде відтворений шляхом реплікації (змінено entryUUID entryCSN). Хоча ви можете включати оперативні атрибути, використовуючи спеціальний атрибут "+" з ldapsearch(або allopнакладенням), це не те самеslapcat , що див. попередній пункт, чому це так. Ці атрибути також включають створення / зміну DN та часових позначок, що може бути важливим для деяких додатків.
  6. оскільки slapcatне дотримується ієрархії LDAP (мається на увазі впорядкування), немає гарантії, що її впорядкування даних буде життєздатним ldapadd- тобто навіть якщо ви викреслите оперативні атрибути, ldapaddможете поскаржитися, тому що підрядні можуть з’явитися перед начальством (батьками) . Специфікації LDAP вимагають існування батьків, але також залишають у цьому відношенні результат пошуку не визначеним. Дивіться коментар Говарда нижче, OpenLDAP slapaddмовчки підтримує невпорядковані дані для деяких програм. У крайньому випадку ви зможете неодноразово використовувати slapaddпараметр «продовжувати помилку» ( -c), поки не будуть створені всі батьки «не в порядку», зупиняючись, коли ви більше не отримуєте жодного коду помилки 32 (такого об’єкта немає,
  7. ldapadd підпорядковується правилам і накладкам LDAP, наприклад, референтна цілісність, ppolicy (політика щодо паролів)
  8. slapcatвважає за краще використовувати кодовані значення атрибутів base-64 принаймні для користувачаPassword (вказано ::після імені атрибута)
  9. ldapsearchє більше варіантів для форматування LDIF та написання великих атрибутів для окремих файлів. Він також може обробляти реферали та псевдоніми .

Порядок результатів LDAP не визначений. І slapcat, і ldapsearch можуть повертати записи у довільному порядку, і жоден вихід не гарантується у відповідному порядку для використання з ldapadd. Драйвери slapadd bdb / hdb / mdb мають спеціальні обхідні шляхи для обробки вводу в довільному порядку, ldapadd не робить.
hyc

slapcatповертає записи в порядок бази даних (бекенд), які можуть бути або не бути чітко визначеними. ldapsearchза замовчуванням повертається у порядку, на який відповідає сервер, з OpenLDAP є вибір сортування на стороні клієнта (наприклад -S "") або керування сортуванням на стороні сервера (наприклад -E sss, якщо воно підтримується, і залежно від деяких другорядних пасток ведмедя, налаштованих на конфігурацію та схему). Специфікація каже , що результати пошуку можуть бути в будь-якому порядку. Реалізація може визначити порядок за замовчуванням, більшість людей вважають, що типовим є "батько перед дитиною", лише OpenDS документує це, AFAIK.
mr.spuratic

2
Порядок результатів пошуку у OpenLDAP навмисно недокументований. Оскільки в специфікації вже сказано, що результати можуть бути в будь-якому порядку, клієнтське програмне забезпечення не повинно покладатися на якесь конкретне замовлення. Сортування результатів можна, звичайно, зробити, але це вимагає набагато більше ресурсів і, як правило, не цікаво при повному резервному копіюванні. Порядок використання бази даних є відносно безглуздим, враховуючи можливість переназвання піддірева, переміщення гілок до нових місць DIT.
hyc

1

slapcatне працює, якщо у вас є накладки, наприклад memberOf. Тож якщо ви зробите slapcat/ slapaddцикл членства, накладки більше не працюватимуть.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.