[Date Prev][Date Next]
Re: 2.0.27 replicating to 2.2.15
Kurt D. Zeilenga wrote:
At 02:06 PM 3/23/2005, Curt Blank wrote:
Thank you for your reply.
Yeah I was leaning towards one of your three solutions as a temporary fix so I could do the upgrade. Before I attempt it though (already been looking at the code) and target the structuralObjectClass issue and optimistically say successfully address it, anything else then going to bite me in the butt?
The problem with your upgrade approach, as I see it, is that the
2.0 server may not only have bad data in it, clients may
continually be adding bad data to it. So, even if you were to
modify slurpd(8) (I don't recommend solutions (1) or (3)) to
generate structualObjectClass values, you have to deal data for
which slurpd(8) can deal with programmatically.
I recommend (2) over (1) and (3) because it keeps the (temporary)
hacks out of the servers. I recommend against (3) as that would
lead to the hacks becoming permanent, it would (in effect) back
out many of the data consistency bug fixes that 2.2 was intended
Thanks. I don't want to leave any hacks in so #2 does sound the best.
Personally, I prefer to either replacing everything at onceMy only problem here is time, even if I built a 2.2 Master and a Slave
ahead of time I would still have to do the data conversion via
slapcat/slapadd from the 2.0 to the 2.2 Berkley. And on top of that I
have to edit the output from slapcat, and you guessed it, correct and/or
remove a lot of bad or no longer needed data. That would cause a large
outage for applications that do updating. Not the end of the world but
an inconvenience and I may have to bite the bullet and go that route.
(which can be done quite quickly if necessary... and, if done
right, allows for switching back if something were to go wrong)
or to replace master first.
I've been digging through a lot of this stuff to gain an understanding
and like Pierangelo said I see that I would have to deal with
structuralObjectClass, entryUUID, and entryCSN. Is there any explanation
whitepaper, RFC, etc. that I could read up on these attributes? I'd
really like to read up on how these deal with data integrity (I assume
that is their purpose). It appears entryUUID and entryCSN are generated
values, I suppose I could cut and paste the code, but I'm leaning more
and more towards taking the down time.
I really thought I could do this replication trick to the 2.2 server
keeping it current until we were ready to pop it in as the Master but
these three attributes and their underlying purpose definitely throw a
monkey wrench in that idea.
I take it the Master generates the values for these three attributes and
saves them and then places them in the Transactions.log to be replicated
so that the Master and all the slaves match. If so I would have to grab
that code from 2.2 slapd and put it into my 2.0 slurpd so I could do the
2.0->2.2 replication and make slurpd smart enough to only add it when
replicating to 2.2 servers and not 2.0 servers. Not sure I want to
attempt that yet.
Kurt D. Zeilenga wrote:
At 12:44 PM 3/23/2005, Curt Blank wrote:
I've got a 2.0.27 server set up as Master replicating via slurp to a 2.2.15 slave server. Modifications are being replicated properly but adds are not, the new dn is not added, I see this error message:
bdb_add: entry failed schema check: no structuralObjectClass operational attribute (80)
Unfortunately I do have updatedn and rootdn set the same. I see in the 2.2 documentation that shouldn't be done but the existing environment is 2.0 and it was not a constraint there, at least according to the the 2.0 Admin Manual.
So, anyone know if making the updatedn and rootdn different will solve this problem?
The problem has nothing to do with the updatedn and the rootdn.
2.0 simply does not produce everything that 2.2 expects to be
present in the replication stream. There are three obvious
solutions to this problem.
1) modify the 2.0 slapd(8) to provide what 2.2 slapd(8) expects.
2) modify the 2.0 or 2.2 slurpd to provide what 2.2 slapd(8) expects.
3) modify the 2.2 slapd(8) not to require information not provided
by the 2.0 slapd(8).
The devil is in the details, of course.