O projeto zerando suas dúvidas segue firme e forte! Hoje respondemos a uma questão sobre replicação no MySQL.
Ano: 2016 Banca: FGV Órgão: IBGE Prova: Analista – Análise de Sistemas – Suporte Operacional
No MYSQL, os formatos de replicação correspondem aos formatos utilizados para registrar eventos nos logs. O formato conhecido como “statement-based binary logging”, utilizado desde as versões mais antigas, tem problemas com certas cláusulas e funções utilizadas nos comandos geradores dos eventos. Nesse contexto, analise as construções que podem aparecer num comando a ser replicado.
I. a cláusula LIMIT sem ORDER BY para comandos como UPDATE, DELETE, REPLACE;
II. a função RAND();
III. o comando TRUNCATE TABLE;
IV. funções definidas pelo usuário (UDF) que sejam determinísticas.
Comprometem a correta execução da replicação, no formato descrito, somente o que é citado em:
a) I e II;
b) I e III;
c) I, II e IV;
d) II, III e IV;
e) III e IV.
Comentário:
Vamos tentar esclarecer alguns aspectos sobre a replicação em MySql. Ela geralmente é baseada na existência de um servidor mestre que armazena as mudanças do banco de dados em um log binário. Neste cenário temos também a presença de diversos servidores escravos. Cada servidor escravo se conecta com o servidor mestre e solicita a cópia dos arquivos de log.
Os diferentes formatos de replicação utilizados correspondem ao formato de registo binário utilizado quando os eventos foram registrados no log binário do mestre. A correlação entre os formatos de log binário e os termos usados durante a replicação definem os seguintes tipos de replicação:
Ao usar log binário baseado em instrução (statement-based replication – SBR), o mestre grava instruções SQL no log binário. A replicação do mestre para o escravo funciona executando as instruções SQL no escravo. Isso é chamado de replicação baseada em instruções, que corresponde ao formato do log binário padrão baseado em instrução MySQL. Os recursos de replicação do MySQL na versão 5.1.4 e em versões anteriores usavam exclusivamente esse formato.
Usando o log baseado em linha (row-based replication – RBR), o mestre grava eventos no log binário que indicam como as linhas de tabela individuais foram alteradas. A replicação do mestre para o escravo funciona copiando os eventos que representam as mudanças nas linhas da tabela para o escravo. Isso é chamado de replicação baseada em linha.
Você também pode configurar o MySQL para usar uma combinação de log baseado em instrução e em linha, dependendo de qual é mais apropriado para a alteração a ser registrada. Isso é chamado de log de formato misto (mixed).
Agora que você já entende o que seria uma replicação baseada em instruções vamos voltar nossa atenção aos itens da questão. Para respondê-la você precisa separar o que é ou não determinístico, ou seja o que podia variar de execução para a execução em um ambiente replicado.
Uma replicação “statement-based” que possui a clausula LIMIT nas operações de DELETE, UPDATE e INSERT … SELECT não é segura se a ordem das colunas da tabela não for definida. (Veja mais sobre o comando aqui). Quando você tenta executar comandos desta natureza, uma mensagem de warning avisando que o comando não é seguro é exibida.
RAND ([N]) é uma função do MySQL que retorna um valor numérico randômico entre 0 e 1. Essa função também não é segura (unsafe) quando usamos replicação statement-based.
O comando TRUNCATE TABLE é tratado para fins de logging e replicação como um comando DDL, desta forma ele pode ser registrado como uma instrução no arquivo de log. Perceba que a funcionalidade do comando é excluir todas as linhas de uma determinada tabela. Neste caso, observamos um evento perfeitamente determinístico.
A replicação de recursos invocados, tais como funções definidas pelo usuário (UDFs) e programas armazenados fornece as seguintes características: (1) os efeitos do recurso sempre são replicados, e (2)
As seguintes instruções são replicadas usando a replicação baseada em instruções: CREATE EVENT, ALTER EVENT, DROP EVENT, CREATE PROCEDURE, DROP PROCEDURE, CREATE FUNCTION, DROP FUNCTION, CREATE TRIGGER E DROP TRIGGER.
Analisando o exposto acima podemos encontrar nossa resposta na alternativa A.
Em brever voltamos com mais conteúdo!
Forte abraço e bons estudos,
Thiago Cavalcanti
O concurso público da Aeronáutica (Força Aérea Brasileira - FAB) oferece 345 vagas. Entre as oportunidades estão…
O fim de semana está com uma programação cheia de eventos para você reforçar seus…
Panorama completo dos Concursos na área de Tecnologia da Informação A Tecnologia da Informação tem…
Quer ficar por dentro de todos os concursos fiscais de âmbito municipal (ISS) previstos para…
Quer ficar por dentro de todos os concursos fiscais previstos para 2025? Então chegou ao…
Os concursos da região Sul do país oferecem diversas oportunidades para os concurseiros. A região…