Requisitos e configurações do log de transações

Saiba como preparar o banco de dados MySQL e as variantes suportadas para o Oracle GoldenGate, incluindo a definição de log binário e as variáveis do servidor de banco de dados necessárias.

Configurando Propriedades de Log

O Oracle GoldenGate conta com os logs binários MySQL para armazenar os dados necessários para replicar transações de origem. Os logs binários no sistema de origem devem ser configurados corretamente antes de você iniciar o processamento do Oracle GoldenGate.

Esta seção trata das opções de inicialização do log de binários e das variáveis do sistema a seguir que se aplicam ao Oracle GoldenGate for MySQL.

Opções de Log Valores O que faz Requisito
binlog_annotate_row_events ON, OFF Variável de sistema que instrui o servidor primário a gravar esses eventos no log de binários. Obrigatório para MariaDB e Oracle GoldenGate 23.8 e anteriores. OFF
binlog_expire_logs_seconds 0 - 4294967295 Onde for suportado, esta variável do sistema define o período de expiração do log de binários, em segundos. O valor recomendado é: >=86400
binlog_format ROW, STATEMENT, MIXED Variável de sistema que define o formato de log de binários.

Obrigatório quando MySQL é usado como banco de dados de origem. Se definido como MIXED ou STATEMENT, somente as transações no nível ROW serão capturadas.

ROW

binlog retention hours 1 - 168 Onde for suportado, esta variável do sistema define o período de expiração do log de binários, em horas. O valor recomendado é: >=24
binlog_row_image FULL, MINIMAL, NOBLOB Variável de sistema que define diferentes níveis de log no nível da coluna no log de binários.

Obrigatório quando MySQL é usado como banco de dados de origem.

FULL

binlog_row_metadata FULL, MINIMAL Variável de sistema que configura a quantidade de metadados adicionados ao log de binários para log baseado em linha.

Obrigatório quando o MySQL 8.0 ou superior é usado como banco de dados de origem para suporte a DDL.

FULL

event_scheduler ON, OFF Variável do sistema que permite a criação de jobs de atualização e limpeza do Heartbeat.

Obrigatório se estiver implementando a funcionalidade Heartbeat do Oracle GoldenGate.

ON

log_bin ON, OFF Variável de sistema que mostra o status do registro em log de binários. Obrigatório quando MySQL é usado como banco de dados de origem. Se ainda não for ON, defina designando um nome, como log-bin=binlog.
log_replica_updates ON, OFF Variável de sistema que registra atualizações no próprio log de binários do servidor secundário quando recebido de um servidor primário.

Obrigatório quando MySQL é usado como banco de dados de origem e é configurado para capturar de um servidor de réplica.

ON

server_id 0 - 4294967295 Variável de sistema necessária para ser especificada quando o log de binários está ativado. Para uma replicação principal e cada réplica de replicação, certifique-se de que os valores sejam >0 e exclusivos.

Obrigatório quando MySQL é usado como banco de dados de origem.

>=1

Verificar Log no Nível do Banco de Dados

Para verificar as definições de log de binários atuais do banco de dados necessárias para suportar o Oracle GoldenGate Capture para o banco de dados MySQL, execute as consultas a seguir. Se as definições precisarem ser alteradas, siga as instruções em Ativar Log no Nível do Banco de Dados

  1. Faça log-in em MySQL como a conta de Administrador do serviço de banco de dados raiz ou designada.

    [root@srcdbserver ~]$ mysql -uroot -p
  2. Emita o comando a seguir para determinar se o banco de dados está ativado para log de binários. Se o resultado for ON, o log de binários do banco de dados será ativado.

    show variables like 'log_bin';
  3. Emita os comandos a seguir para determinar se o banco de dados está ativado com as definições corretas de log de binários e server_id. Certifique-se de que o valor binlog_format esteja definido como ROW, binlog_row_image e binlog_row_metadata estejam definidos como FULL e que a variável server_id esteja definida como >=1 e seja exclusiva para um primário e qualquer réplica.

    show variables like 'binlog_%';
    show variables like 'server_id';
  4. Repita o processo para consultar as variáveis para as outras opções listadas em Configurando Propriedades de Log, com base em seus requisitos, como suporte a DDL e suporte a MariaDB.

Ativar Log no Nível do Banco de Dados

Execute as etapas a seguir, se necessário, para ativar as definições de log de binários do banco de dados necessárias para suportar o Oracle GoldenGate Capture para um banco de dados MySQL. Modifique apenas as definições que precisam ser ativadas ou alteradas com base nos resultados de Verificar Registro em Log no Nível do Banco de Dados.

  1. Edite o arquivo de configuração MySQL, my.cnf para Linux ou my.ini para Windows, para ativar as variáveis do sistema necessárias para suportar a captura do Oracle GoldenGate para MySQL.

    [root@srcdbserver ~]$ vi /etc/my.cnf
  2. Para ativar o log de binários, adicione uma entrada ao arquivo de configuração, como a seguir, usando um valor de log-bin de sua preferência.

    log-bin=*binlog*
  3. Para definir o formato de log de binários correto e as variáveis server_id, defina o seguinte:

    binlog-format=ROW
    binlog-row-image=FULL
    
    #For MySQL 8.0 and above, for DDL support
    binlog-row-metadata=FULL
    
    #Set to value > 0 and <= 4294967295
    server-id=1
  4. Adicione variáveis adicionais para as outras opções listadas em Configurando Propriedades de Log, com base em seus requisitos, como suporte a DDL e suporte a MariaDB.

  5. Salve e feche o arquivo.

  6. Reinicie o banco de dados para que as definições entrem em vigor.

    [root@srcdbserver ~]$ service mysqld restart
  7. Verifique o status do serviço de banco de dados usando o seguinte comando:

    [root@srcdbserver ~]$ service mysqld status

Modificando Variáveis do Sistema para Serviços do Amazon e do Azure MySQL Database

Para configurar os bancos de dados MySQL do Amazon e do Azure para a funcionalidade de extração e pulsação do Oracle GoldenGate, as alterações necessárias deverão ser feitas usando os grupos de parâmetros, a criação ou modificação do banco de dados ou as definições de parâmetro do servidor, se ainda não estiverem definidas com os valores necessários. Use as seguintes diretrizes para modificar estas variáveis do sistema:

  1. Para ativar o log binário na Amazon, você deve ativar backups do banco de dados; caso contrário, a variável log_bin será reportada como OFF e o Extract será encerrado de forma anormal, informando que não é possível recuperar a lista de arquivos binlog.

    Ative backups na criação do banco de dados ou modifique um banco de dados existente para incluir um regimento de backup.

  2. Para bancos de dados Amazon MySQL, defina a variável binglog_format como ROW, a variável binlog_row_image como FULL, a event_scheduler como ON se estiver implementando a funcionalidade de pulsação do Oracle GoldenGate e defina a variável binlog_row_metadata como FULL se estiver ativando o suporte à captura de DDL.

    Siga as instruções fornecidas pela Amazon para criar ou editar um grupo de parâmetros existente para fazer essas alterações.

    https://aws.amazon.com/premiumsupport/knowledge-center/enable-binary-logging-aurora/

  3. Para bancos de dados MySQL do Azure, defina a variável binlog_format como ROW e a variável binlog_row_image como FULL. Siga as instruções fornecidas pela Microsoft para modificar as definições do parâmetro do servidor para a instância do banco de dados.

    https://docs.microsoft.com/en-us/azure/mysql/howto-server-parameters

Garantindo a Disponibilidade dos Dados

Reter dados de log de binários suficientes para que, se você interromper o Extract ou houver uma interrupção não planejada, o processo Extract possa ser iniciado novamente em seus pontos de verificação. O processo Extract deve ter acesso ao log de binários que contém o início da unidade de trabalho não submetida a commit mais antiga e a todos os logs de binários posteriormente. O período de retenção recomendado é de pelo menos 24 horas de dados de transação, incluindo informações ativas e arquivadas. Talvez você precise fazer alguns testes para determinar o melhor tempo de retenção, atendendo aos requisitos de volume de dados e negócios.

Se os dados necessários do Extract durante o processamento não forem retidos nos logs ativos ou de backup, uma das seguintes ações corretivas poderá ser necessária:

A retenção de dados do log binário pode ser aumentada com diferentes medidas, dependendo do banco de dados ou da variante MySQL.

Capturando em uma Réplica de Replicação MySQL

Você pode configurar o Oracle GoldenGate para capturar de uma réplica de replicação MySQL.

Normalmente, as transações aplicadas na réplica são registradas nos logs de retransmissão e não no binlog da réplica. Para que a réplica grave transações que recebe do principal em seu binlog, inicie a réplica de replicação com a opção log_replica_updates como 1 em my.cnf em conjunto com os outros parâmetros de log de binários do Oracle GoldenGate. Depois que as transações do principal estiverem no binlog da réplica, você poderá configurar um Extract regular do Oracle GoldenGate na réplica para iniciar a captura.