Este tópico descreve os problemas que podem ocorrer ao usar a Multi-master Cluster (Limitless) Edition e como resolvê-los.
Multi-master Cluster (Limitless) Edition Como comprar mais nós de leitura e gravação para esta edição?
Uma Multi-master Cluster (Limitless) Edition recém-criada tem apenas dois nós de leitura e gravação. A adição de mais nós de leitura e gravação só é possível após a criação do cluster. Para mais informações, consulte Add or remove nodes.
Por que a contagem de conexões de um nó RW continua alta mesmo com pouca carga de trabalho?
Ao usar o endpoint do cluster de uma Multi-master Cluster (Limitless) Edition, o proxy do banco de dados se conecta a todos os nós RW. Assim, a contagem de conexões em cada nó RW é igual. Recomendamos que ative o recurso de pool de threads para evitar que um alto número de conexões consuma recursos significativos do banco de dados.
Após usar a Multi-master Cluster (Limitless) Edition, é possível acessar os dados de um banco de dados ou objeto de dados em qualquer nó de leitura e gravação?
Não. Os dados de um banco de dados ou objeto de dados podem ser acessados em apenas um nó. Contudo, é possível usar o comando de alternância de endpoint para alterar isso dinamicamente quando necessário.
Quando usar o nível de isolamento de banco de dados e quando usar o nível de isolamento de objeto de dados?
Se as suas cargas de trabalho forem isoladas por banco de dados ou schema e houver poucas consultas e atualizações associadas entre os bancos de dados, use o nível de isolamento de banco de dados para gerenciá-las. Esse também é o método padrão. A vantagem é a facilidade de gerenciamento ao alternar endpoints posteriormente. Se as suas cargas de trabalho usarem apenas alguns bancos de dados e cada recurso for isolado no nível da tabela, considere usar o nível de isolamento de objeto de dados. Isso exige menos modificações nas suas cargas de trabalho e oferece gerenciamento flexível. Contudo, a desvantagem é que, ao alternar endpoints posteriormente, será necessário alternar manualmente os objetos no banco de dados um a um, o que torna o gerenciamento mais complexo.
Após usar a Multi-master Cluster (Limitless) Edition, é necessário que modifique o código da aplicação para adaptá-la?
Não. Embora a Multi-master Cluster (Limitless) Edition tenha vários nós de leitura e gravação no backend, a aplicação não precisa saber em qual nó está o endpoint de cada banco de dados ou objeto de dados. A camada de proxy encaminha automaticamente as solicitações ao nó correspondente.
Se os endpoints de dois bancos de dados ou objetos de dados estiverem em nós diferentes, posso modificá-los na mesma transação?
Não. Os bancos de dados ou objetos de dados modificados na mesma transação devem estar no mesmo nó.
Solução: Recomendamos usar multi-master partitioned tables em vez de modificar dados associados em nós diferentes. As tabelas particionadas multi-master podem distribuir dados automaticamente para vários bancos de dados fragmentados com base em regras de sharding, o que habilita recursos de leitura e gravação em cada nó e fornece capacidades de processamento distribuído.
Se os endpoints de dois bancos de dados ou objetos de dados estiverem em nós diferentes, posso executar consultas entre nós?
Sim. É necessário adquirir global read-only nodes. Com global read-only nodes, é possível implementar consultas entre endpoints.
Usei uma instrução ALTER para alternar o endpoint de um banco de dados ou objeto de dados, mas o comando demora muito para retornar. Por quê?
Os principais motivos são: primeiro, ao alternar o endpoint de um banco de dados que contém muitos objetos de dados, a alternância pode ser mais lenta; segundo, se a carga de DML no banco de dados ou objeto de dados for alta durante a alternância, especialmente a carga de gravação, o processo também fica mais lento. Recomendamos fazer a alternância em horários fora de pico.
Como visualize metadados?
Ainda é possível usar as tabelas no banco de dados information_schema, mas observe que algumas registram informações sobre todo o cluster, enquanto outras registram informações sobre o nó que execute a instrução SQL. É necessário diferenciá-las. Por exemplo, a tabela information_schema.tables contém informações de todo o cluster, enquanto a information_schema.innodb_tables registra informações de um único nó.
Como adicionar nós de armazenamento hot standby?
É possível purchase hot standby storage nodes diretamente no console. Por padrão, os nós de armazenamento hot standby são implantados em uma zona diferente de outros nós e possuem recursos de computação e armazenamento independentes.
A Multi-master Cluster (Limitless) Edition tem muitos nós de gravação. O que posso fazer se quiser assinar o binlog para uso downstream?
Ative o recurso de binlog do cluster para que o sistema downstream possa assinar diretamente usando o endpoint do cluster. A Multi-master Cluster (Limitless) Edition classifica o binlog internamente de forma automática e fornece um fluxo de binlog adequado para uso downstream.
O que observar antes que exclua um nó de leitura e gravação?
Antes de excluir um nó de leitura e gravação, migre os endpoints de todos os bancos de dados no nó para outros nós de leitura e gravação disponíveis. Essa é uma operação obrigatória. Caso contrário, esses bancos de dados ficarão inacessíveis. Para mais detalhes, consulte Delete a node. Após a migração dos bancos de dados, execute as operações restantes para que exclua o nó.
O Multi-master Cluster (Limitless) deve reter pelo menos dois nós de leitura e gravação. Portanto, se restarem apenas dois nós de leitura e gravação no cluster, não será possível excluir um nó.
Excluí acidentalmente um nó de leitura e gravação e o banco de dados ficou inacessível. Como recuperá-lo?
Se a alternância do endpoint do banco de dados não estiver concluída e um nó de leitura e gravação for excluído acidentalmente, os bancos de dados relacionados podem ficar inacessíveis. Nesse caso, para restaurar o acesso, especifique novamente os nós de leitura e gravação desses bancos de dados. Por favor, execute a seguinte instrução SQL:
ALTER DATABASE <name> POLARDB_WRITE_NODE <new_master_id>;
Esse comando direciona o endpoint do banco de dados inacessível para outro nó de leitura e gravação disponível, o que restaura o acesso normal ao banco de dados. Para mais informações, consulte Usage notes.