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
|
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.
|
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.
|
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.
|
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.
|
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.
|
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
-
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 -
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'; -
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 valorbinlog_formatesteja definido comoROW,binlog_row_imageebinlog_row_metadataestejam definidos comoFULLe que a variávelserver_idesteja definida como>=1e seja exclusiva para um primário e qualquer réplica.show variables like 'binlog_%'; show variables like 'server_id'; -
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.
-
Edite o arquivo de configuração MySQL,
my.cnfpara Linux oumy.inipara 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 -
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* -
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 -
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.
-
Salve e feche o arquivo.
-
Reinicie o banco de dados para que as definições entrem em vigor.
[root@srcdbserver ~]$ service mysqld restart -
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:
-
Para ativar o log binário na Amazon, você deve ativar backups do banco de dados; caso contrário, a variável
log_binserá reportada comoOFFe o Extract será encerrado de forma anormal, informando que não é possível recuperar a lista de arquivosbinlog.Ative backups na criação do banco de dados ou modifique um banco de dados existente para incluir um regimento de backup.
-
Para bancos de dados Amazon MySQL, defina a variável
binglog_formatcomoROW, a variávelbinlog_row_imagecomoFULL, aevent_schedulercomoONse estiver implementando a funcionalidade de pulsação do Oracle GoldenGate e defina a variávelbinlog_row_metadatacomoFULLse 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/
-
Para bancos de dados MySQL do Azure, defina a variável
binlog_formatcomoROWe a variávelbinlog_row_imagecomoFULL. 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:
-
Alter Extract para capturar de um ponto posterior no tempo para o qual os dados do log de binários estão disponíveis (e aceitar possíveis perdas de dados no destino).
-
Ressincronize as tabelas de origem e destino e inicie o ambiente do Oracle GoldenGate novamente.
A retenção de dados do log binário pode ser aumentada com diferentes medidas, dependendo do banco de dados ou da variante MySQL.
-
Para o MySQL Server, MySQL Heatwave, Azure Database para MySQL e MariaDB, a variável
binlog_expire_logs_secondspode ser aumentada para ajustar o período de retenção. -
Para o Amazon Aurora for MySQL e o Amazon RDS for MySQL, as definições padrão de retenção de log de binários são
NULL, o que significa que, para o Aurora, os logs são limpos com preguiça e para o RDS for MySQL, eles não são retidos. Use o procedimento a seguir para definir as horas de retenção do parâmetrobinlog. Por exemplo:call mysql.rds_set_configuration('binlog retention hours', 24);
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.