Você pode optar por dump do banco de dados de manhã e executá-lo em cada uma das máquinas locais.
> mysqldump -h endereco.ou.ip.do.servidor.principal -u usuario -p'senha' tabela > dump.sql
> mysql -u usuario -p'senha' --execute "DROP DATABASE banco"
> mysql -u usuario -p'senha' --execute "CREATE DATABASE banco"
> mysql -u usuario -p'senha' < dump.sql
No exemplo acima, tudo é executado no powershell do windows de cada máquina. Ele cria um arquivo dump.sql contendo todo o conteùdo do banco de dados principal, depois ele apaga o banco de dados, cria de novo e instala o dump inteiro. Você pode ter problemas de rede ao executar isso, então, faça um dump local de cada màquina antes de rodar isso aí. Tambem, lembre-se que o dump vai ficar cada vez maior a cada dia, deixando a solução cada vez mais lenta. Se vocë estiver confortàvel com isso...
Agora, para "trazer" de volta, talvez você precise fazer algo mais elaborado já que cada um dos clientes traz informações diferentes cujos IDs podem se repetir causando problemas sérios.
Recomendaria esquecer que existe ID auto_increment e não exibir esse dado para os usuários, assim eles não sabem da existencia dessa coluna, logo não conseguem acessar um recurso de outra pessoa. Ao invés disse usa algum hash em outra coluna como <? md5(time() . $tabela . $usuario["login_unico"]); ?>, daí você pode trabalhar com um script de importação.
Primeiro, exporta os dados numa tabela
.cvs (cada linha tem os dados de todas as tabelas relacionadas) em cada um das màquinas e manda executar o script de importação na máquina principal que vai ler o arquivo .csv que você acabou de enviar.
Isso é só uma maneira... existe uma configuração no mysql na qual você define um auto_increment diferente, assim você pode, talvez, garantir que nenhum dado irá colidir na hora de trazer os inserts necessários.
Não sei se ficou claro. Qualquer coisa, grita.