Wed Dec 29 17:09:18 PST 2004
- Previous message: [Slony1-general] renamed tables and not renamed sequences...
- Next message: [Slony1-general] renamed tables and not renamed sequences...
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Paul Slootman wrote:
>We have here a database with (amongst others) a table named 'ssouser'.
>That table used to be named 'user', but it was impossible to setup slony
>with that name (or at least very difficult), so the application was
>modified and the table renamed.
>
>However, I've now discovered that the sequence used to dole out numbers
>for that table's primary key 'id' wasn't renamed; that is still called
>user_id_seq.
>
>This is the definition of the table (uninteresting columns edited out):
>
>ssoserver=# \d ssouser;
> Table "public.ssouser"
> Column | Type | Modifiers
>---------------+-----------------------+-----------------------------------------------------
> id | integer | not null default nextval('public.user_id_seq'::text)
> username | character varying(40) | not null
> password | character varying(40) | not null
>Indexes:
> "user_pkey" primary key, btree (id)
> "user_username_key" unique, btree (username)
>
>The problem is that when setting up a subscriber, I did a dump of the
>schema, imported that on the subscriber, and then setup slony. I first
>stupidly forgot about the sequences, so I wanted to add those now.
>I now find out that the sequence for that table is called user_id_seq on
>the master, and ssouser_id_seq on the subscriber.
>
>It looks like this means that that sequence can't be replicated at the
>moment. What would be the best course of action? Preferably without
>downtime for the master :-) Note I'm not very experienced with
>postgresql...
>
>
This doesn't sound too hard...
1. Create the sequence with its new name on all of the nodes (e.g. -
ssouser_id_seq).
2. Add the new sequence to a new replication set, and start replicating it.
3. On the provider node, set ssouser_id_seq to some value comfortably
larger than the present value of user_id_seq
4. Very soon after that, do the command, on all nodes that need it:
alter table ssouser alter column id set default
nextval('public.ssouser_id_seq');
That needs to be soon enough that, on the origin, user_id_seq hasn't
gotten bigger than ssouser_id_seq (which is why I wrote "comfortably
larger").
- Previous message: [Slony1-general] renamed tables and not renamed sequences...
- Next message: [Slony1-general] renamed tables and not renamed sequences...
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Slony1-general mailing list