2009-04-27 22 views
34

Tôi biết đây là giống như một câu hỏi serverfault hơn một câu hỏi stackoverflow, nhưng kể từ khi serverfault không phải là lên được nêu ra, ở đây tôi đi:Làm thế nào để clone một cơ sở dữ liệu OpenLDAP

tôi phải di chuyển một ứng dụng từ một máy chủ redhat khác, và không có kiến ​​thức rất tốt về các hoạt động bên trong của ứng dụng, làm thế nào tôi sẽ di chuyển cơ sở dữ liệu OpenLDAP từ máy này sang máy khác, với các lược đồ và tất cả.

Tôi cần sao chép các tệp nào? Tôi tin rằng thiết lập là khá chuẩn.

Trả lời

38

Sự cố với câu hỏi SourceRebelsslapcat(8) không đảm bảo rằng dữ liệu được đặt hàng cho ldapadd(1)/ldapmodify(1). Từ trang người đàn ông:

 
The LDIF generated by this tool is suitable for use with slapadd(8). 
As the entries are in database order, not superior first order, they 
cannot be loaded with ldapadd(1) without first being reordered. 

Plus sử dụng công cụ sử dụng các tệp phụ trợ để giao thức ldap không nhất quán.

tôi muốn đề nghị sử dụng một sự kết hợp của slapcat(8)/slapadd(8)HOẶCldapsearch(1)/ldapmodify(1). Sở thích của tôi sẽ chuyển sang tùy chọn thứ hai vì nó không cần truy cập trình bao vào máy chủ ldap hoặc di chuyển các tệp xung quanh.

Ví dụ, cơ sở dữ liệu bãi từ server của chương trình dưới dc = thạc sĩ, dc = com và tải nó trong một máy chủ sao lưu

 
$ ldapsearch -Wx -D "cn=admin_master,dc=master,dc=com" -b "dc=master,dc=com" -H ldap://my.master.host -LLL > ldap_dump-20100525-1.ldif 
$ ldapadd -Wx -D "cn=admin_backup,dc=backup,dc=com" -H ldap://my.backup.host -f ldap_dump-20100525-1.ldif 

Cờ -W trên nhắc cho mật khẩu ldap admin_master Tuy nhiên kể từ khi chúng tôi đang chuyển hướng đầu ra cho một tập tin bạn sẽ không thấy dấu nhắc - chỉ là một dòng trống. Hãy tiếp tục và nhập mật khẩu quản trị viên ldap của bạn và nó sẽ hoạt động. Dòng đầu tiên của tập tin đầu ra của bạn sẽ cần phải được loại bỏ (Nhập mật khẩu LDAP :) trước khi chạy ldapadd.

Gợi ý cuối cùng, ldapadd(1) là liên kết cứng đến ldapmodify(1) với cờ -a (thêm) được bật.

+2

-Wx không hoạt động đối với tôi khi chuyển hướng đến tệp. Thay thế -Wx bằng -w hoạt động tốt. –

+4

Tôi không thích đặt mật khẩu trên dòng lệnh vì chúng thường kết thúc trong lịch sử vỏ của bạn ... – sberder

+1

Đồng ý, nhưng đó là điều duy nhất làm việc cho tôi. –

8

Một số cuộc hẹn:

  • Lưu schemas cá nhân hóa và objectClasses định nghĩa trên máy chủ mới của bạn. Bạn có thể tìm kiếm các file bao gồm tại slapd.conf để có được nó, ví dụ (điều này là một phần của slapd.conf của tôi):

    bao gồm /etc/ldap/schema/core.schema

  • Bao gồm các lược đồ và lớp đối tượng được cá nhân hóa của bạn trong bản cài đặt OpenLDAP mới.

  • Sử dụng slapcat lệnh để xuất cây LDAP đầy đủ của bạn thành một tệp/ldif đơn/khác nhau.

  • Sử dụng ldapadd để nhập tệp ldif vào cài đặt LDAP mới của bạn.

+0

Cảm ơn ... vấn đề là tôi không nhớ tên công cụ (slapcat) – elzapp

+1

Đối với phiên bản mới hơn của OpenLDAP, bạn sẽ cần sử dụng 'slapadd' thay thế của 'ldapadd'. –

5

tôi thích sao chép cơ sở dữ liệu thông qua giao thức:

trước hết hãy chắc chắn bạn có các lược đồ tương tự trên cả hai máy chủ.

-dump cơ sở dữ liệu với ldapsearch:
ldapsearch -LLL -Wx -D "cn = admin, dc = miền" -b "dc = miền"> domain.ldif

-Và nhập nó trong máy chủ mới:
ldapmodify -Wx -D "cn = admin, dc = miền" -a -f domain.ldif

trong oneline:
ldapsearch -LLL -Wx -D "cn = admin, dc = miền "-b" dc = miền "| ldapmodify -w pass -x -D "cn = admin, dc = domain" -a

Bằng cách sử dụng lệnh bin/ldap * bạn đang nói trực tiếp với máy chủ trong khi sử dụng lệnh bin/slap * bạn đang xử lý tệp phụ trợ

+3

Tôi quan tâm đến cách "chắc chắn rằng bạn có cùng một lược đồ trên cả hai máy chủ". Tôi được giao nhiệm vụ chuyển một LDAP hiện có sang một máy chủ mới và chưa bao giờ sử dụng openLdap trước đây. Làm thế nào tôi có thể lấy lược đồ để phản chiếu máy chủ cũ để quá trình nhập thành công? – Ketema

15

ldapsearch và ldapadd không nhất thiết phải là công cụ tốt nhất để sao chép DB LDAP của bạn. slapcat và slapadd là lựa chọn tốt hơn nhiều.

Xuất DB của bạn với slapcat:

slapcat > ldif 

nhập DB với slapadd (chắc chắn rằng máy chủ LDAP được dừng lại):

slapadd -l ldif 
+1

Từ trang người dùng slapcat, "Đầu ra của slapcat được dùng để nhập vào slapadd (8). Đầu ra của slapcat thường không thể được sử dụng làm đầu vào cho ldapadd (1) hoặc các ứng dụng LDAP khác mà không cần chỉnh sửa đầu ra. Việc chỉnh sửa này thường sẽ bao gồm sắp xếp lại các bản ghi vào thứ tự ưu tiên cao cấp và loại bỏ các thuộc tính hoạt động không có người dùng sửa đổi. " - Nói cách khác, có khả năng rất nhiều công việc để sử dụng ldapadd vì siêu dữ liệu hoạt động, trong khi slapadd sẽ bỏ qua siêu dữ liệu hoạt động. – wmorse

+0

@wmorse slapadd sẽ không bỏ qua siêu dữ liệu hoạt động nhưng tải nó vì nó được chứa trong ldif được tạo bởi slapcat. Điều này quan trọng nếu bạn có các quá trình như nhân bản, vv dựa vào các thuộc tính hoạt động như các entryUUID giữ nguyên. – Ralf

2

Cảm ơn, Vish. Làm việc như người ở! Tôi chỉnh sửa các lệnh:

ldapsearch -z max -LLL -Wx -D "cn=Manager,dc=domain,dc=fr" -b "dc=domain,dc=fr" >/tmp/save.ldif 

ldapmodify -c -Wx -D "cn=Manager,dc=domain,dc=fr" -a -f /tmp/save.ldif 

Chỉ cần thêm -z max để tránh các giới hạn kích thước và -c đi trên ngay cả khi tên miền mục tiêu đã tồn tại (trường hợp của tôi).

3

(Không đủ danh tiếng để viết nhận xét ...)

Ldapsearch sẽ mở kết nối với máy chủ LDAP. Slapcat thay vì truy cập cơ sở dữ liệu trực tiếp và điều này có nghĩa là ACL, giới hạn thời gian và kích thước và các sản phẩm phụ khác của kết nối LDAP không được đánh giá và do đó sẽ không làm thay đổi dữ liệu. (Matt Butcher, "Làm chủ OpenLDAP")

+0

Hãy thử đưa ra một câu trả lời chi tiết hơn. Nếu không, câu trả lời của bạn có thể phù hợp hơn để nhận xét. –

+0

Cũng có một lý do cho yêu cầu đó và trả lời thay vì bình luận chỉ vì một người không có đặc quyền nào được nêu ra khá cau mày. –

Các vấn đề liên quan