Lembre-se de um caso de restauração de um banco de dados com base em logs binlog em um ambiente de produção

Prefácio

8 de março de 2021, um lindo dia - Dia da Mulher, mas excluí minha biblioteca hoje. Fiquei realmente sem palavras. Passei por uma viagem congestionada de 50 minutos (10 km de distância) pela manhã, mas não consegui me conter. As etapas da supressão da base de dados da empresa veio na segunda-feira, ai de mim não tive coragem de fugir ...
Insira a descrição da imagem aqui
Perto do assunto, para ser sincero, depois de realizar esta etapa da minha própria operação, primeiro esclareci o motivo para o líder, e então foi exatamente o que o líder disse, deixe eu dar uma iniciação, acordei como um sonho, e quando desci comecei a afiar minha espada e restaurar os dados.

Operação de recuperação

passo 1: Primeira restauração com um backup completo de dados

Como o backup do nosso ambiente de produção é feito pelo script de backup do banco de dados (backup regular todos os dias), obtemos o sql de backup e o executamos no ambiente de produção. Insira a descrição da imagem aqui
No servidor de backup:

cd /u01/databak/42/202103080400
scp  20210308_040001-wg_wenhai_data.sql.gz 数据库服务器ip:/root/

No servidor de banco de dados:

gunzip 20210308_040001-wg_wenhai_data.sql.gz

Faça login no mysql para executar:

use wg_wenhai_data
source /root/20210308_040001-wg_wenhai_data.sql

Insira a descrição da imagem aqui

etapa 2: log visualizado no binlog por meio do mysqlbinlog

Nota: Com base na recuperação do log bin, embora possa ser recuperado de acordo com o tempo, também pode ser recuperado através dos end_log_pos correspondentes após o tempo, que será mostrado abaixo.

Recuperação pontual
1) mysqlbinlog ver localização detalhada

Insira a descrição da imagem aqui

mkdir /root/log
mysqlbinlog --base64-output=decode-rows -vvv /u01/mysql/mysqlbinlog/mysql-bin.000155 > /root/log/mysql-bin.000155.log

Insira a descrição da imagem aqui

2) O comando baseado na recuperação do tempo é o seguinte
mkdir /root/log/sql
mysqlbinlog  /u01/mysql/mysqlbinlog/mysql-bin.000155 --start-datetime='2021-03-08  0:00:00' --stop-datetime='2021-03-08  9:40:43' > /root/log/sql/binlog-date.sql

Insira a descrição da imagem aqui

Recupere com base no id de posição do log binlog
1) mysqlbinlog ver localização detalhada

Insira a descrição da imagem aqui

2) Obtenha o valor da id da posição de acordo com o ponto de tempo de recuperação

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
O pré-requisito para a recuperação é baseado no momento da exclusão do banco de dados antes de restaurá-lo. Como cobri o banco de dados no anel de produção, tive que encontrar a ação de criar o banco de dados inicial no log bin no banco de dados sobrescrito. É por isso que o id de posição é selecionado, porque a caixa verde é o comando de início da sobreposição.

Você pode ver que os ids de posição à meia-noite e 9:40:43 são 97506871 e 269167350, respectivamente.

mysqlbinlog --start-position=97506871 --stop-position=269167350 /u01/mysql/mysqlbinlog/mysql-bin.000155 > /root/log/sql/binlog.sql

Insira a descrição da imagem aqui
Compare as diferenças de arquivo entre os dois métodos: Verifica-se que embora o tamanho do arquivo não seja totalmente o mesmo, mas o número de inserir, atualizar e excluir é o mesmo, para que você possa realizar a recuperação diretamente.
Insira a descrição da imagem aqui

passo 3: log visualizado no binlog através do mysqlbinlog

mysql -uusername -ppassword -h127.0.0.1
source /root/log/sql/binlog-date.sql

Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/weixin_44729138/article/details/115251534
Recomendado
Clasificación