Jan Wieck wrote:
On 2/23/2008 12:20 AM, Craig James wrote:
A little more info on this problem...

Craig James wrote:
I'm trying to migrate a node for the second time, and no luck. Last time I tried it, it just got stuck, and due to lack of time, I didn't investigate.

This time I watched -- it got stuck again, doing some sort of huge SELECT statement. I was under the impression that migrating a node was a fairly simple operation that should happen in a short time (less than a minute?) even for large databases.

I waited 10 minutes, during which the entire system was completely locked up (no other process could access the database), and our web site was offline. I finally had to kill all of the slon daemons and kill Postgres to get our site back on the air, then run the node-unlock command to get Slony back in shape.

This system appears to otherwise be working well. I can insert, update and delete records, and they're copied to the slave node immediately.

What's up?  Am I just too impatient?

I tried it again, after vacuuming the slony tables that are subject to bloat. This time I shut everything off, started the migration of the master to node 2, and waited for 35 minutes, but the SELECT never finished. vmstat showed massive I/O and CPU activity the whole time.

What SELECT are you referring to? I don't see where in the MOVE SET you have to perform any SELECT.

You tell me?  It is the slon daemon that is executing this select.  There were 
no other connections to the database the second time I tried this.


Again, after I killed postgres, restarted, and unlocked the node, Slony went back to performing perfectly.

Killing postgres is a bad idea. Stop that habit right now, before you physically corrupt any of your databases.

Thanks for the advice, but I don't think it's a problem.  That's one of the 
features of a robust relational database with a write-ahead log -- it can 
withstand being killed without corrupting data.  Besides, I had no choice, my 
web site went offline because slon apparently took an exclusive lock on the 
tables, blocking all other activity.  And I killed a SELECT, not an INSERT or 
UPDATE.

But that's a topic for a separate discussion ... I have to fix this Slony 
problem first.

Anyhow, apparently the LOCK SET part of the process succeeds. So what I now assume is that the WAIT FOR EVENT never finishes. First, you don't need a WAIT FOR EVENT between LOCK SET and MOVE SET. Both events are executed on the origin, so by the time the LOCK SET finishes, everything is ready for the MOVE.

I don't think it got as far as this, but I don't know the internals.  When I 
execute the script, the SELECT starts, and that's where everything comes to a 
sudden halt.

But what this indicates is that node 2 never confirms the LOCK SET. Can it be that you actually have a problem with the connection from node 2 to node 1? What is the content of the view sl_status on both nodes?

Both nodes seem to be normal -- the st_last_event_ts is just a few seconds 
prior to the query, st_lag_time is 00:00:11.465251 (node 1) and 00:00:07.50164.

If you want to speed up this communication in order to meet your Sat. noon deadline, I'll be available on IRC, channel #slony on freenode.

Thanks, but I don't use an IRC client, hope you get this.

Craig
_______________________________________________
Slony1-general mailing list
[email protected]
http://lists.slony.info/mailman/listinfo/slony1-general

Reply via email to