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 ...
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.
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
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
mkdir /root/log
mysqlbinlog --base64-output=decode-rows -vvv /u01/mysql/mysqlbinlog/mysql-bin.000155 > /root/log/mysql-bin.000155.log
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
Recupere com base no id de posição do log binlog
1) mysqlbinlog ver localização detalhada
2) Obtenha o valor da id da posição de acordo com o ponto de tempo de recuperação
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
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.
passo 3: log visualizado no binlog através do mysqlbinlog
mysql -uusername -ppassword -h127.0.0.1
source /root/log/sql/binlog-date.sql