Limitações
A replicação de entrada para o MySQL HeatWave Service não suporta algumas das configurações possíveis para replicação do MySQL.
- Só há suporte para a replicação baseada na linha. Este formato de log de binários é o padrão no MySQL versão 5.7 e posterior. A replicação baseada em instruções e a replicação mista não são suportadas.
Observação
O MySQL 5.7 tem um bug conhecido em que a instruçãoDROP TEMPORARY TABLEé registrada incorretamente no log de binários baseado em linha e causa falha na replicação baseada em linha. O MySQL 5.7 está em Suporte Sustentado desde outubro de 2023 e nenhuma outra correção de bugs será fornecida por Oracle Lifetime Support Policy. - Somente a replicação assíncrona é suportada. A replicação semissíncrona não é suportada.
- Um sistema de banco de dados de destino suporta até 18 canais de replicação de entrada. O limite de 18 canais inclui todos os canais no sistema de BD, independentemente do estado do serviço.
- As operações do sistema de BD que afetam a replicação são aplicadas em todos os canais configurados no sistema de BD de destino, e o tempo necessário para essas operações pode aumentar à medida que o número de canais aumenta.
- Um canal pode suportar no máximo 30 filtros de canal.
- As alterações no esquema
mysqlnão são replicadas e fazem com que a replicação seja interrompida. - Quando um sistema de banco de dados de alta disponibilidade é submetido a upgrade, os canais de replicação de entrada são suspensos. Os canais são retomados quando o processo de upgrade é concluído.
- Somente as instruções que o nome de usuário do aplicador tem privilégio para executar podem ser replicadas. A replicação falhará se o nome de usuário do applier tiver privilégio insuficiente para executar qualquer instrução lida nos logs binários do servidor de origem. A lista de privilégios é restrita aos privilégios concedidos ao administrador do sistema de banco de dados. Consulte Privilégios Padrão do MySQL.
- Antes do MySQL 8.2, o nome de usuário na cláusula
DEFINERdas instruçõesCREATE VIEW,CREATE PROCEDUREeCREATE FUNCTIONdeve ser o mesmo que o nome de usuário do aplicador para replicar essas instruções com sucesso. No MySQL 8.2 ou posterior, o usuário aplicador deve ter o privilégioSET_ANY_DEFINERpara replicar as instruçõesCREATE VIEW,CREATE PROCEDUREeCREATE FUNCTIONcom a cláusulaDEFINERcontendo outro nome de usuário. - Os sistemas de banco de dados (MySQL 8.3.0 ou mais recente) criados antes de maio de 2024 que não têm o privilégio
TRANSACTION_GTID_TAGprecisam ser atualizados para replicar transações com tags GTID. - Na replicação assíncrona, os sistemas de banco de dados de origem e de destino podem ser sistemas de banco de dados de Leitura-Gravação e o cluster HeatWave associado pode ser gerenciado de forma independente. No entanto, como há um canal de replicação entre eles, as ações executadas na origem podem afetar a funcionalidade do sistema de banco de dados de destino.
- Quando as instruções
ALTER TABLE <table_name> SECONDARY_LOADeALTER TABLE <table_name> SECONDARY_UNLOADsão replicadas em um sistema de BD de destino, elas não carregam nem descarregam dados no cluster do HeatWave anexado ao sistema de BD de destino, se houver.Isso ajuda a configurar a replicação entre sistemas de banco de dados nos quais a origem tem um cluster HeatWave, mas o destino não tem um cluster HeatWave e também em sistemas de banco de dados de alta disponibilidade nos quais somente o sistema de banco de dados principal tem um cluster HeatWave. No entanto, quando a instrução
ALTER TABLE <table_name> SECONDARY_LOADé replicada, os metadados de carga secundários são atualizados no dicionário de dados do MySQL. Como os metadados de carga secundária são consultados no momento da recuperação, se o sistema de banco de dados de destino for reiniciado, as novas tabelas cujas instruções DDL de carga secundária são replicadas também serão consideradas para recarregamento no cluster do HeatWave no sistema de banco de dados de destino. - Você pode carregar ou descarregar tabelas de forma independente no cluster do HeatWave nos sistemas de banco de dados de origem e de destino. No entanto, em versões mais antigas e do MySQL 9.5.1, se você carregar uma tabela no cluster do HeatWave no sistema de banco de dados de destino primeiro e, em seguida, tentar carregar a mesma tabela no cluster do HeatWave no sistema de banco de dados de origem, isso poderá interromper o canal de replicação, e um erro semelhante ao seguinte será gerado nesses casos:
No MySQL 9.5.1 e em versões mais antigas, isso acontece porque a instrução DDLReplica SQL for channel 'replication_channel': Worker 1 failed executing transaction '<transaction_id>' at source log binary-log.<number>, end_log_pos <number>; Error 'Secondary engine operation failed. Table already has a secondary engine defined.' on query. Default database: ''. Query: 'ALTER TABLE <table_name> SECONDARY_ENGINE=RAPID', Error_code: MY-003889ALTER TABLE <table_name> SECONDARY_ENGINE = RAPIDgerada pela carga é replicada, mas falha no sistema de banco de dados de destino porque a tabela correspondente já está carregada no cluster do HeatWave e já temSECONDARY_ENGINE = RAPIDdefinido.No MySQL 9.5.2 e em versões posteriores, você pode carregar e descarregar tabelas de forma independente nos sistemas de banco de dados de origem e de destino sem fazer com que o canal de replicação interrompa ou gere erros.
- Quando o cluster HeatWave é excluído ou recriado no sistema de banco de dados de origem, todas as tabelas carregadas anteriormente são descarregadas do cluster HeatWave no sistema de banco de dados de origem, e as mesmas tabelas também são descarregadas do cluster HeatWave no sistema de banco de dados de destino. Isso ocorre porque quando o cluster HeatWave no sistema de banco de dados de origem é excluído ou recriado, a definição
SECONDARY_ENGINEpara todas as tabelas carregadas anteriormente no sistema de banco de dados de origem é redefinida como NULL. Quando a definiçãoSECONDARY_ENGINEde uma tabela é redefinida no sistema de BD de origem, a definiçãoSECONDARY_ENGINEda mesma tabela também é redefinida como NULL no sistema de BD de destino, o que resulta no descarregamento da tabela do cluster HeatWave no sistema de BD de destino. - Se você quiser replicar tabelas externas do Lakehouse, é recomendável não definir o canal como
GENERATE_IMPLICIT_PRIMARY_KEYpara tabelas sem chave primária. A replicação quebra ao alterar uma tabela InnoDB com uma chave primária gerada para uma tabela do Lakehouse. - Os seguintes nomes não podem ser usados para canais de replicação:
-
group_replication_applier -
group_replication_recovery -
oci_upgrade_channel
-
- Em versões anteriores à 8.4.0-u2, se o sistema de banco de dados de destino tiver um cluster HeatWave interrompido (inativo), o canal de replicação não poderá aplicar nenhuma instrução DDL que crie ou altere uma tabela externa do Lakehouse. O canal de replicação será interrompido.
- Nas versões anteriores à 8.4.0-u2, mesmo que o carregamento de dados seja ignorado, o canal de replicação poderá interromper se o MySQL HeatWave Lakehouse estiver ativado no sistema de banco de dados de destino e não tiver acesso de leitura e lista aos arquivos especificados no atributo de mecanismo da tabela externa do Lakehouse.