Então, a maneira correta de fazer isso é com clustering / replicação. Veja algumas maneiras incorretas (mas provavelmente funcionais em casos especiais) de fazer isso:
-
Se você estiver usando o MyISAM no ZFS ou algum outro sistema de arquivos que suporte instantâneos, é possível bloquear a tabela para escrever, emitir tabelas de liberação, fazer instantâneos do sistema de arquivos e desbloquear tabelas. Em seguida, vá para o instantâneo, copie todos os arquivos para fora e carregue-os no servidor escravo. É claro que colocá-los no servidor escravo é uma espécie de reversão do procedimento acima, exceto que há um delete & move em vez de um snapshot reverso. Nota: Eu não recomendaria seriamente isso a ninguém em um sistema de produção.
-
Você pode escrever um script que crie tabelas temporárias no sistema escravo usando a definição das tabelas nas quais será replicado, conecte-se ao sistema mestre, faça um select * e copie os resultados em as tabelas de memória de destino, quando todas estiverem concluídas, bloquear (ou transaccionar) as tabelas e copiar os dados da memória para as tabelas reais (isto é, apagar, substituir, substituir e depois apagar); então, destrave e pequenino.
No entanto, essas duas soluções não são ótimas, pois criam picos de carga e resultam em períodos entre sincronizações em que os dados do escravo não estão atualizados. Você não especificou que precisava disso na sua pergunta, daí as sugestões, mas apenas apontando que, se isso é realmente necessário, então sim, você precisa de replicação.
Eu uso algo como a primeira idéia de fazer backups em um servidor de banco de dados muito específico que temos (e eles funcionam bem) e o segundo para sincronizar dados de uma fonte upstream Eu não controlei para um servidor que eu controlei que eu possa trabalhar com os dados. Como eu disse, não há ótimas soluções gerais lá, mas nesses casos específicos elas funcionam bem.