Você já pensou em criar um Cluster do MySQL para conseguir isso?
A empresa em que trabalho acaba de se mudar para a AWS - e atualmente eles têm um banco de dados central muito grande com a instância atualmente localizada na América.
No entanto, um de seus clientes solicitou que todos os seus dados sejam mantidos na UE. Portanto, criar uma instância do AWS na Irlanda não é um problema, o problema é o banco de dados e como gerenciá-lo.
Pensamos em ter outro banco de dados executado na UE para clientes europeus e usar uma etapa de chave primária diferente, para que as chaves primárias nunca entrem em conflito caso os dois locais precisem ser mesclados no futuro.
O problema é que, se tivermos um cliente que usa nosso sistema na América e na UE, teríamos que criar duas contas para esse usuário, e os relatórios em ambas as regiões não seriam possíveis, pois o tempo de conexão também seria alto.
Existe uma alternativa para configurar isso?
Você já pensou em criar um Cluster do MySQL para conseguir isso?
Primeiro de tudo, você pode definir a chave principal auto-incremental como 2n (número par) para EU e 2n + 1 (número ímpar) para EUA, para essas contas residirem em ambos os locais, você deve definir um local principal para eles e definir a chave pelo local principal. Desta forma, não haveria conflito de chave, mas você facilmente mesclará os dados de dois locais Em segundo lugar, para o relatório, você pode gerar relatórios de faturamento para os dois locais separadamente e mesclar informações de faturamento para contas que estão em ambos os locais.
Você pode querer examinar transações distribuídas. Transações distribuídas são suportadas pelo mecanismo de armazenamento InnoDB do MySQL. Aqui está um link para você começar.