Como a pergunta indica para sincronizar todos dados de um servidor para outro, acho que você pode usar uma solução relativamente simples, envolvendo
mysqldump
. Acho que você pode fazer tudo isso no servidor dedicado:
mysqldump --user=<username> --password=<password> --host=<server 1 hostname> --port=<port> --add-drop-database <database name> > dump.sql
Substitua
<username>
, <password>
, <port>
e <server 1 hostname>
com os detalhes de conexão do servidor 1. Substitua pelo nome do banco de dados no servidor 1 que você deseja copiar para o servidor 2. Se desejar copiar todo o banco de dados, substitua pela opção --all-databases. Isso criará um arquivo chamado
dump.sql
no diretório atual. Você pode então carregar isso no servidor 2:mysql --user=<username> --password=<password> --host=<server 2 hostname> --port=<port> <database name> < dump.sql
Substitua
<username>
, <password>
, <port>
e <server 2 hostname>
com os detalhes de conexão para o servidor 2. Isto irá pegar o arquivo dump.sql e carregá-lo no banco de dados no servidor 2. Isto irá remover o banco de dados no servidor 2 - então todos os dados existentes serão substituídos por aqueles em
dump.sql
. Verifique as opções para mysqldump (com relação a bancos de dados drop, tabelas drop etc) e adapte os comandos acima para serem adequados à sua situação. Eu acho que, se você conectar as coisas corretamente, você pode até ignorar o arquivo intermediário e conectar o mysqldump no servidor 1 ao mysql no servidor 2 usando um soquete.
Para cobrir a parte 'automatizada' desta questão, você pode executar os comandos acima no cron e agendá-los para serem executados no primeiro dia de cada mês em um horário adequado.