AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 30128
Accepted
xref
xref
Asked: 2012-12-11 15:03:33 +0800 CST2012-12-11 15:03:33 +0800 CST 2012-12-11 15:03:33 +0800 CST

Um escravo de replicação MySQL deve ser definido como somente leitura?

  • 772

Eu tenho replicação em execução no Percona Server 5.5 seguindo este guia e me pergunto se devo adicionar read-only=1ao meu escravo my.cnfpara torná-lo somente leitura?

O guia configura a replicação para a tabela mysql para que os usuários sejam replicados, mas estou usando principalmente o escravo para obter mysqldumps e, em caso de emergência, reconfigurá-lo para ser mestre, então não acredito que precisamos (ou deveríamos) ativar a gravação em constantemente?

mysql replication
  • 3 3 respostas
  • 58698 Views

3 respostas

  • Voted
  1. Best Answer
    RolandoMySQLDBA
    2012-12-11T15:07:00+08:002012-12-11T15:07:00+08:00

    Quando um Slave é somente leitura , ele não está 100% protegido do mundo.

    De acordo com a documentação do MySQL emread-only

    Esta variável está desativada por padrão. Quando habilitado, o servidor não permite atualizações, exceto de usuários que tenham o privilégio SUPER ou (em um servidor escravo) de atualizações realizadas por threads escravos. Em configurações de replicação, pode ser útil habilitar read_only em servidores escravos para garantir que os escravos aceitem atualizações apenas do servidor mestre e não de clientes.

    Assim, qualquer um com privilégio SUPER pode ler e escrever à vontade em tal Slave...

    Certifique-se de que todos os usuários não privilegiados não tenham o privilégio SUPER.

    Se você quiser revogar todos os privilégios SUPER de uma só vez, execute isso no Master e Slave:

    UPDATE mysql.user SET super_priv='N' WHERE user<>'root';
    FLUSH PRIVILEGES;
    

    Com referência ao Slave, isso reservará o privilégio SUPER para apenas roote impedirá que os não privilegiados façam gravações das quais seriam restritos.

    ATUALIZAÇÃO 2015-08-28 17:39 EDT

    Acabei de saber recentemente que o MySQL 5.7 apresentará super_read_only .

    Isso vai parar os usuários SUPER em suas trilhas porque os Docs 5.7 dizem

    Se a variável de sistema read_only estiver habilitada, o servidor permitirá atualizações de clientes apenas de usuários que tenham o privilégio SUPER. Se a variável de sistema super_read_only também estiver habilitada, o servidor proíbe atualizações de clientes mesmo de usuários que possuem SUPER. Consulte a descrição da variável de sistema read_only para obter uma descrição do modo somente leitura e informações sobre como read_only e super_read_only interagem.

    Alterações em super_read_only em um servidor mestre não são replicadas para servidores escravos. O valor pode ser definido em um servidor escravo independente da configuração no mestre.

    super_read_only foi adicionado no MySQL 5.7.8.

    • 33
  2. poige
    2017-08-20T01:34:42+08:002017-08-20T01:34:42+08:00

    Um escravo de replicação MySQL deve ser definido como somente leitura?

    Sim, é melhor você executar servidores escravos com modos R/O disponíveis. Usuários com privilégios anteriores podiam modificar os dados de tal escravo de qualquer maneira, mas depois eles também obtiveram seu "botão" de restrição de R/O.

    Por que é importante - é melhor falhar com a gravação do que se arrepender com uma gravação imprópria que poderia efetivamente tornar o escravo inutilizável devido a dados simples ou coisas como conflito de chaves que interromperiam a replicação (não mais escravo real novamente).

    Há também software usado para orquestração/divisão de carga que levaria em consideração o status de R/O dos servidores em pools que eles configuraram para roteamento de solicitações adequado entre esses servidores.

    Isso é segurança. Use-o.

    • 3
  3. Cepxio
    2018-05-29T13:25:42+08:002018-05-29T13:25:42+08:00

    O problema aqui, incluído o MySQL 8.0, é que o MySQL não o força a definir read_only = ONquando você executa o start slavecomando. Por que é um problema? Porque quase todos os DBAs MySQL usam seus slaves no RO, para evitar corrupção de dados, e sempre existe um dba que acidentalmente roda de forma errada um SQL que modifica os dados em um slave, ou um app que não vai alterar sua conf. Se eu quiser escrever em slaves, pois tem vários esquemas e preciso fazer escritas nesse esquema, então o read_onlycomando deve ser mais inteligente, e vamos fazer um read_only for schema. Isso pode ser muito útil em servidores multimestres e escravos que fazem um arquivo Replicate_Ignore_DB. Então, por enquanto, você deve fazer o controle manualmente e ter muito cuidado.

    Apreciar.

    • 1

relate perguntas

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve