MySQL Replication Master push to Slave

MySQL

I have two servers that need to be synced. One is online and has a public IP address. The other is internal and has no public IP address – nor is there a way to get it a public IP so that's off the table.

I'd like to set up replication between the two servers through MySQL but as I understand it, the MySQL slave needs to be able to connect to the master (i.e. the master doesn't just simply push data out) and that's a problem since there's no public IP or interface to connect to.

Is there any way to replicate and simply tell the master to push data to the slave (which it can access)? Alternatively, is there some other solution? I have considered a mysqldump periodically but the data is going to grow very quickly resulting in too-large dump files.

Best Answer

Make sure that you are able to connect to Remote MySQL server (Online server) from a Slave server machine. You can verify by using telnet command

# telnet <online server IP><space><MySQL port>

Now follow the replication procedures mentioned here:

http://dev.mysql.com/doc/refman/5.1/en/replication-howto.html

For Database synchronization refer existing answer here:

https://stackoverflow.com/questions/7946540/how-do-i-sync-2-mysql-databases