I have a circularly replicating MySQL cluster, and a newer cluster of Percona XtraDB instances that we're in the process of moving to. During the move, we're running some projects on the old cluster and other projects on the new cluster.
I'd like to have the old cluster replicate changes to most tables in one specific database across to the new cluster. Unfortunately, the binlog contains changes for every table in every database, and there doesn't seem to be a way to compile different sets of binlogs.
Is there a reasonable way to replicate only certain tables separately from pre-existing circular replication? The clusters are in separate datacenters with different providers, so I don't want to send the entire binlog over the wire when I only need a vanishingly small portion of it.
So, the approach I wound up taking was rather convoluted and based mostly on http://www.jroller.com/dschneller/entry/mysql_replication_using_blackhole_engine.
I fired up a second instance of MySQL on one of the old cluster's machines on port 3307, running the BLACKHOLE engine rather than InnoDB. It ingests the binlogs and spits out its own, filtered using
binlog-do-db
,replicate-ignore-table
, andreplicate-do-db
. Those massively smaller binlogs are then ingested by one of the servers in the new cluster, and everything's happy.