Re: Mirroring existing mysql setup - Mailing list pgsql-general

From Erik Jones
Subject Re: Mirroring existing mysql setup
Date
Msg-id A00FEC8C-6A82-46ED-8055-F0EA1CB158C1@engineyard.com
Whole thread Raw
In response to Mirroring existing mysql setup  (snacktime <snacktime@gmail.com>)
List pgsql-general
On Dec 18, 2008, at 11:32 AM, snacktime wrote:

> Where I work we use mysql for a fairly busy website, and I'd like to
> eventually start transitioning to postgres if possible.   The largest
> obstacle is the lack of replication as a core feature.  I'm well aware
> of the history behind why it's not in core, and I saw a post a while
> back saying it would be in 8.4.  I'd like to say I think this is a
> very good idea, and I know a number of shops personally that did not
> go with postgres just for this reason.
>
> So anyways our general setup is that we have one master replicating to
> one slave.  We use the slave for generating various leaderboard stats
> for our games.  Most of these get generated every 4 hours.   If we
> wanted to duplicate this on postgres I'm not sure which replication
> option would work best.  Last time I looked at slony you had to edit
> configs for each table  you wanted to replicate, and the whole setup
> was more complex then it needed to be.  If it's still like that, I
> think we would lose more then we gain by moving to postgres.  Once
> setup, the replication needs to be free of daily administration other
> then routine automated tasks.  We add new tables/remove old ones
> almost on a daily basis.

You should check out Londiste, part of the Skytools package of
Postgres projects.  For simple, master-slave replication it's *loads*
easier to set up and administer than Slony.  The only reason I could
see to go with Slony right now is if you need some kind of complex
setup with cascaded replication or what-not.  Adding and removing
tables to/from the replication stream is also a cinch in Londiste but
you *do* have to actually do it -- they don't get added automatically
like in MySQL's built-in replication.  However, you may want to wait a
few months with your fingers crossed to see if Hot Standy replication
is ready for 8.4 in March.

> Now for one of the main things we don't like about mysql.  You can't
> add indexes without locking the whole table, which means you can't go
> back and add indexes later on a production app without shutting down
> the whole system.   The effect his has had is that when we add new
> features to our games that would normally require an additional
> column, we have to add a new table since we can't add an index to the
> old table.   When you add indexes in postgres, how much of a
> performance hit will the database be taking while adding the index?
> I haven't worked on a postgres installation that's as busy as our
> mysql installation is.  We get roughly 3-4 million page views per day,
> with each page view probably averaging 4-6 db queries.  Probably 20%
> of these are cached.  In addition we have our slave which does far
> fewer, but more complicated queries.  Quite a few of our tables will
> gain thousands of rows per day, some tens of thousands.  Some of our
> busiest tables have tens of millions of rows.  We could start to
> archive some of these.

You can use CREATE INDEX CONCURRENTLY to avoid the table locks.
However, that takes two passes over the data instead of one so there's
a bigger IO hit.

Erik Jones, Database Administrator
Engine Yard
Support, Scalability, Reliability
866.518.9273 x 260
Location: US/Pacific
IRC: mage2k






pgsql-general by date:

Previous
From: snacktime
Date:
Subject: Mirroring existing mysql setup
Next
From: Tom Lane
Date:
Subject: Re: 8.1.11 PREPARE problem?