Como a opção '' --use-savepoints "do mydumper reduz o bloqueio de metadados

8

MyDumper 0.6.1 adiciona uma nova opção --use-savepoints. Do manual, significa:

Use pontos de salvamento para reduzir problemas de bloqueio de metadados, precisa do privilégio SUPER

Eu não entendo Como "reduz os problemas de bloqueio de metadados" e por que precisa de "privilégio SUPER"? Como eu acho, os metadados são essenciais para impedir outra estrutura de tabela de modificação de DDL.

leafonsword
fonte

Respostas:

3

Eu tive que pesquisar um pouco o código fonte do mydumper para encontrar a resposta para essa pergunta. Se você olhar o código fonte real do mydumper:

Você encontrará o seguinte, começando na linha 415, como parte da fila do processo:

if(use_savepoints && mysql_query(thrconn, "SET SQL_LOG_BIN = 0")){
    g_critical("Failed to disable binlog for the thread: %s",mysql_error(thrconn));
    exit(EXIT_FAILURE);
}

Isso mostra que o uso de --use-savepoints no mydumper requer a capacidade de desativar o log de bin do MySQL. Tentei isso no meu próprio servidor MariaDB, que ainda usa o MySQL como o DBMS base e obtive o seguinte erro ao usar uma conta de não administrador:

MariaDB [(nenhum)]> SET SQL_LOG_BIN = 0; ERRO 1227 (42000): acesso negado; você precisa (pelo menos um) dos privilégios SUPER para esta operação

Pelo que eu estava lendo o código real e testando essa condição no meu servidor MySQL, entendo que você precisa de "privilégio SUPER", pois o mydumper estará desativando o log no binlog enquanto ele é executado. Isso faz parte do poder "de habilitar ou desabilitar o registro" de uma SUPER mencionada no DOCS .

Informações mais específicas sobre o binlog estão aqui:

http://dev.mysql.com/doc/refman/5.6/en/set-sql-log-bin.html

No que diz respeito aos pontos de salvaguarda:

http://dev.mysql.com/doc/refman/5.6/en/savepoint.html

Depois de ler o manual e este relatório de erros , parece que se os pontos de salvamento forem liberados, eles liberarão bloqueios na tabela que está sendo trabalhada, o que pode evitar problemas de bloqueio que foram vistos no mysqldump recentemente no MySQL 5.5.

Espero que isso dê um pouco mais de conhecimento sobre a ferramenta mydumper.

JPeck89
fonte