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 / 27411
Accepted
Safado
Safado
Asked: 2012-10-23 12:36:01 +0800 CST2012-10-23 12:36:01 +0800 CST 2012-10-23 12:36:01 +0800 CST

Restaurando banco de dados MySQL com db dump e binlogs

  • 772

Tenho um banco de dados em execução em nosso servidor da Web de produção que configurei como mestre com um único escravo em outro datacenter. Ao ler as instruções de configuração de replicação do MySQL, eles aconselham colocar o servidor off-line, colocar um bloqueio de leitura, fazer o dump e, em seguida, criar o escravo com ele. Fiz isso, configurei a replicação e ficamos felizes.

Hoje decidi que ter essa replicação em claro na WAN provavelmente não é uma boa prática. Então, procurei configurar a replicação por meio de um túnel SSH (temporário). Isso exigiu que eu mudasse master_hostpara 127.0.0.1 em vez do IP do meu mestre. Ao fazer isso, interrompi minha replicação e agora tenho que começar de novo. O problema é que o Master só tinha expire_logs_days=1, então não posso repetir o processo original desde a semana passada. Eu tenho backups dos outros binlogs, mas usar mysqlbinlog para restaurar todos eles continua falhando devido a problemas de tabelas temporárias.

Portanto, agora estou tentando obter o backup do escravo e executá-lo sem derrubar o mestre. A cada 3 horas, no mestre, fazemos um dump do banco de dados para backups. Usamos mysqldump -v --flush-logs --single-transaction --routines ....para que o log binário atual seja cortado e um novo seja criado a cada backup que fazemos. No entanto, se eu restaurar um despejo de banco de dados e tentar iniciar o backup de replicação com o novo log binário que foi criado com o último --flush-logs comando, ainda me deparo com colisões de chave, exatamente como eles avisaram.

Dadas essas informações, existe uma maneira de iniciar com êxito o backup do escravo com os despejos que temos sem desativar o servidor novamente? Não estarei em um bom lugar se tiver que pedir mais tempo de inatividade.

mysql replication
  • 1 1 respostas
  • 4289 Views

1 respostas

  • Voted
  1. Best Answer
    RolandoMySQLDBA
    2012-10-23T13:12:13+08:002012-10-23T13:12:13+08:00

    São duas coisas que podem ser boas para você neste caso

    • COISA BOA #1: Você pode converter as duas tabelas MyISAM para InnoDB
    • COISA BOA #2: As duas tabelas MyISAM nunca mudam

    Se qualquer uma dessas coisas boas se aplicar, então tenho boas notícias para você

    STEP01) Eliminar todos os logs binários no mestre (OPCIONAL)

    Execute este comando no mestre:

    mysql> RESET MASTER;
    

    Se esta parte te assusta, você pode ignorá-la ou fazer uma cópia dos logs binários antes de fazê-la

    STEP02) Crie o mysqldump da seguinte forma:

    echo "STOP SLAVE;" > MySQLSlaveReload.sql
    mysqldump -v --master-data=1 --single-transaction --routines ....  >> MySQLSlaveReload.sql
    echo "START SLAVE;" >> MySQLSlaveReload.sql
    

    STEP03) Mova MySQLSlaveReload.sqlpara o Escravo

    PASSO04) Carregue MySQLSlaveReload.sqlno Escravo

    No Slave, carregue o script da seguinte forma:

    mysql -u... -p... -A < MySQLSlaveReload.sql
    

    O script parará o escravo, carregará os dados e iniciará o escravo. E o arquivo de log e a posição? Antes de fazer o STEP02, observe a linha 22 deMySQLSlaveReload.sql

    head -22 MySQLSlaveReload.sql | tail -1
    

    A opção mysqldump --master-data=1registrou o arquivo de log e a posição a partir do início do mysqldump na linha 22.

    De uma chance !!!

    • 2

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