Hey I know a crazy method to create a slave without augmenting any operation of master (ServerA) or slave (ServerB)
Step 1) Setup a New Server (ServerC)
Step 2) On ServerC, Install MySQL (same version as ServerB)
Step 3) On ServerC, service mysql stop
Step 4) Copy /etc/my.cnf from ServerB to ServerC
Step 5) On ServerC, change server_id to a value different from ServerA and ServerB
Step 6) rsync /var/lib/mysql on ServerB to ServerC
Step 7) When rsync is completed, run "STOP SLAVE;" on ServerB
Step 8) rsync /var/lib/mysql on ServerB to ServerC
Step 9) On ServerB, run "START SLAVE;"
Step 10) On ServerC, service mysql start
Step 11) On ServerC, run "START SLAVE;" (Do this if skip-slave-start is in /etc/my.cnf)
Give it a Try !!!
BTW I have the utmost confidence this will work because I just did this for client over the last 2 days. Client had 2.7TB of data on a slave. I rsyncd to another server while the slave was still active. rsync took like 11 hours. I then ran STOP SLAVE; on the first slave and ran rsync again. That took another hour. I then performed the above step and everything is done.
I think I see the problem
You have the following in your question:
Replicate_Do_DB: db1; db2
That is not supposed to be a semicolon-separated list. It is supposed to be a comma-separated list.
My guess is your have this in your slave's /etc/my.cnf
replicate-do-db=db1; db2
The correct way to set this up is
replicate-do-db=db1
replicate-do-db=db2
Please adjust this in the slave's /etc/my.cnf and restart mysql on the slave
Give it a Try !!!
UPDATE 2011-10-31 15:20 EDT
You may want to clear out the relay log by doing this
STOP SLAVE;
CHANGE MASTER TO master_log_file='mysql-bin.000008',master_log_pos-98;
START SLAVE;
then run SHOW SLAVE STATUS\G
and make sure replication is running by making sure you see this
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
just as you posted in your question
Best Answer
There's really no harm in just spooling up a new slave, so I'd go that route.