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
Foi aprovada a proposta de reestruturação da carreira de Finanças e Controle para o próximo…
O Conselho Regional de Serviço Social do Pará (CRESS PA) divulgou os resultados das provas…
O concurso CONFERE (Conselho Federal dos Representantes Comerciais) está com os resultados definitivos das provas…
Foi publicado o edital de concurso público da Prefeitura de Morungaba. O certame oferta 98…
A Secretaria de Educação do Município de Recife oficializou a contratação do Instituto AOCP como…
O concurso para servidores da Defensoria Pública do Amazonas (DPE AM) está oficialmente autorizado e…