Embora criar tabelas sem chaves primárias seja definitivamente uma má prática, existem aplicativos de terceiros com seus próprios esquemas, e alterar o esquema de terceiros adicionando uma chave primária pode ser ainda pior do que a decisão de usar tal aplicativo foi ( porque não podemos prever se e como isso quebra o aplicativo cujo esquema foi alterado e isso pode trazer uma carga de manutenção que mal pode ser conhecida antecipadamente).
No entanto, preciso hospedar tal aplicativo e ter um banco de dados altamente disponível para ele; o aplicativo requer um MySQL moderno, então MySQL, MariaDB e Percona estão disponíveis. Preciso configurar a replicação mestre-mestre dentro de um datacenter e entre datacenters com um único mestre ativo e outros apenas aguardando. Pelo que consegui reunir até agora, a replicação de grupo no MySQL e o Galera, do qual MariaDB e Persona dependem, exigem que as tabelas tenham uma chave primária.
Existe uma maneira de desembaraçar esse nó? Existe uma maneira de configurar um banco de dados semelhante ao MySQL altamente disponível que não exija as chaves primárias para casos em que a alteração do esquema é altamente indesejável ou isso é impossível?
Não vejo uma solução na interseção da replicação de grupo MySQL e tabelas projetadas por terceiros que não atendam aos requisitos de replicação de grupo .
Acho que suas opções são:
Não use replicação de grupo MySQL. Você pode configurar a replicação reflexiva manualmente. Ou seja, cada nó fonte é a fonte do outro. São necessárias várias etapas para fazer isso e não possui os recursos de failover automático do MySQL Group Replication. Mas trabalhei em um trabalho onde operávamos milhares de conjuntos de replicação configurados dessa maneira, usando o Percona Server, mas não a replicação de grupo.
Você pode fazer isso imediatamente. Pode ser frustrante saber que existe uma solução de replicação de grupo, mas você não pode usá-la para esse aplicativo de terceiros. Pelo menos você pode usar GR para outros esquemas sob seu controle ou aplicativos de terceiros projetados com tabelas adequadas.
Registre um bug com o desenvolvedor de software terceirizado e peça-lhes que redesenhem suas tabelas para terem chaves primárias. Espero que isso leve anos para que eles mudem (se é que isso acontece).
Bifurque o software de terceiros e adicione você mesmo as chaves primárias. Este é provavelmente um fardo de desenvolvimento que você não está orçamentado para assumir.
Em primeiro lugar, não use esses aplicativos. Você deve se perguntar quais outras decisões erradas de design eles tomaram em seu software, se nem sequer garantem que suas tabelas tenham chaves primárias.