Backup completo do banco de dados MySQL e backup incremental

backup de banco de dados

Em um ambiente de produção, a segurança dos dados é de suma importância e qualquer perda de dados pode ter consequências graves

Razões para perda de dados

Erro de programa Erro
humano (a maioria das razões)
Falha de computador,
falha de disco,
desastre (como incêndio, terremoto) e roubo

Faça backup dos direitos autorais de uma perspectiva física e lógica

Backup físico: backup dos arquivos físicos (como arquivos de dados, arquivos de log, etc.) do sistema operacional do banco de dados. O
banco de dados é dividido em três tipos de arquivos no nível físico. O nome de cada arquivo começa com o nome da tabela, e a extensão indica o tipo de arquivo
arquivo de estrutura da tabela :. Definição da tabela de armazenamento de arquivos Frm
A extensão do arquivo de dados da tabela é .MYD (MYData)
A extensão do arquivo de índice da tabela é .MYI (MYIndex). O
backup físico pode ser dividido em backup offline (backup a frio) e backup online (backup a quente) )
Cold backup: é realizado quando o banco de dados é fechado.
Hot backup: o banco de dados está em execução. Este método de backup depende do arquivo de log do banco de dados.
Backup lógico: o backup dos componentes lógicos do banco de dados (como tabelas e outros objetos do banco de dados)

Estratégia de backup de banco de dados

Backup completo: faça um backup completo dos dados de cada vez.
Backup diferencial: faça backup dos arquivos que foram modificados desde o último backup completo.
Backup incremental: somente aqueles arquivos que foram modificados após o último backup completo ou backup incremental serão Cópia de segurança

Backup completo

Um backup completo é um backup de todo o banco de dados, estrutura do banco de dados e estrutura de arquivos. Um
backup completo salva o banco de dados no momento em que o
backup é concluído. Um backup completo é a base do backup incremental.

Prós e contras do backup completo

Vantagens:
alta segurança,
operações de backup e recuperação simples e convenientes.
Desvantagens:
grande quantidade de repetição de dados,
ocupando muito espaço de backup, pouca utilização de espaço,
backup longo e tempo de recuperação

pode vir! Mostrar!

Faça backup de arquivos diretamente

[root@5centos mysql]# tar jcvf /beifen/bk-$(date +%F).tar.gz data
[root@5centos mysql]# ls /beifen/
bk-2020-08-20.tar.gz  bk-.tar.gz

Use o mysqldump

备份单个库(实际上是备份库里的所有表)
[root@5centos /]# mysqldump -u root -p LIU > /beifen/JUEJUE.sql
Enter password: 

多库备份
[root@5centos beifen]# mysqldump -u root -p --databases LIU PAN > /beifen/databases-LIU_PAN.sql
Enter password: 
[root@5centos beifen]# ls
databases-LIU_PAN.sql  JUEJUE.sql

备份所有库
[root@5centos beifen]# mysqldump -u root -p --opt --all-databases > /beifen/all_databases.sql
Enter password: 

备份指定表
[root@5centos beifen]# mysqldump -u root -p LIU SHUSHU > /beifen/LIU-SHUSHU.sql
Enter password:

Restaurar o banco de dados
Existem duas maneiras de restaurar o banco de dados:
uma fonte
dois mysql -u username -p <script de backup

mysql -u root -p mysql < /beifen/JUEJUE.sql

Backup incremental

Somente os arquivos que foram modificados
desde o último backup completo ou backup incremental serão copiados.Os backups incrementais são os arquivos ou conteúdos que foram adicionados ou alterados desde o último backup.

Vantagens e desvantagens do backup incremental

Vantagens:
sem dados duplicados, alta eficiência, utilização máxima de espaço
, pequeno volume de backup, tempo curto.
Desvantagens:
restauração problemática: ele precisa do último backup completo e todos os backups incrementais após o backup completo para restaurar, e todos os backups incrementais são necessários A recuperação reversa por push
é menos segura

pode vir! Mostrar!

Adicione o item log-bin = filepath (filepath é o caminho do arquivo binário) no item [mysqld] do arquivo de configuração do MySQL, como log-bin = mysql-bin e reinicie o serviço mysqld.

O caminho padrão do arquivo de log binário é / usr / local / mysql / data

A importância do log binário do MySQL para backup

O log binário salva todas as atualizações ou operações que podem atualizar o banco de dados. O
log binário começa a gravar depois que o servidor MySQL é iniciado e recria um novo arquivo de log depois que o arquivo atinge o tamanho definido por max_binlog_size ou recebe o comando flush logs. Você
só precisa executar logs de flush regularmente O método recria um novo log, gera uma sequência de arquivos binários e salva esses logs em um local seguro a tempo de concluir um período de backup incremental

Arquivo de dados de backup

[root@5centos data]# systemctl stop mysqld
tar zcvf /beifen/mysql-$(date +%F).tar.gz /usr/local/mysql/data/
[root@5centos data]# systemctl start mysqld

Abrir arquivo binário

[root@5centos data]# vim /etc/my.cnf
[mysqld]
……省略部分……
log-bin=mysql-bin

[root@5centos data]# systemctl restart mysqld
[root@5centos data]# ll
总用量 122928
……省略部分……发现已生成二进制文件
-rw-r-----. 1 mysql mysql      154 8月  22 22:47 mysql-bin.000001

Crie uma tabela e biblioteca de demonstração

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| JUEJUE             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> use JUEJUE;
Database changed
mysql> show tables;
+------------------+
| Tables_in_JUEJUE |
+------------------+
| LIULIU           |
+------------------+
1 row in set (0.00 sec)
mysql> select * from LIULIU;
+----+------+-------+
| ID | NAME | HIGHT |
+----+------+-------+
|  1 | JIAN | 175.0 |
|  2 | HAO  | 174.0 |
+----+------+-------+
2 rows in set (0.00 sec)

Faça um backup completo

[root@5centos data]# mysqldump -u root -p JUEJUE > /beifen/JUEJUE.sql
Enter password: 

增量备份
[root@5centos data]# mysqladmin -u root -p flush-logs;
Enter password: 

查看增量日志文件
[root@5centos data]# ls
mysql-bin.000001  mysql-bin.000002

Simular operação incorreta

mysql> insert into LIULIU values (4,'GU',190);
Query OK, 1 row affected (0.01 sec)

mysql> insert into LIULIU values (5,'cai',180);
Query OK, 1 row affected (0.00 sec)

mysql> insert into LIULIU values (3,'SHA',180);
Query OK, 1 row affected (0.00 sec)

[root@5centos data]# mysqladmin -u root -p flush-logs;
Enter password: 

Ver arquivos

[root@5centos data]# mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000003 > /beifen/bk03.txt

[root@5centos data]# vim /beifen/bk03.txt 
##最后一条执行
# at 625
#200822 23:54:34 server id 1  end_log_pos 673 CRC32 0xd27d03dd  Write_rows: table id 108 flags: STMT_END_F
### INSERT INTO `JUEJUE`.`LIULIU`
### SET
###   @1=5
###   @2='cai'
###   @3=180.0

Recuperação simulada

mysql> drop table LIULIU;
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
Empty set (0.00 sec)


基于时间
[root@5centos data]# mysqlbinlog --no-defaults --stop-datetime='2020-8-22  23;54:34' /usr/local/mysql/data/mysql-bin.000003 | mysql -u root -p
Enter password: 

+----+------+-------+
| ID | NAME | HIGHT |
+----+------+-------+
|  1 | JIAN | 175.0 |
|  2 | HAO  | 174.0 |
|  4 | GU   | 190.0 |
|  5 | cai  | 180.0 |
+----+------+-------+
如果想恢复特定的,恢复时开始和结束时间分开写就行

基于位置
我这又删了,不掩饰了
[root@5centos data]# mysqlbinlog --no-defaults --stop-position='625' /usr/local/mysql/data/mysql-bin.000003 | mysql -u root -p123123


+----+------+-------+
| ID | NAME | HIGHT |
+----+------+-------+
|  1 | JIAN | 175.0 |
|  2 | HAO  | 174.0 |
|  4 | GU   | 190.0 |
|  5 | cai  | 180.0 |
+----+------+-------+

Acho que você gosta

Origin blog.csdn.net/Ora_G/article/details/108123009
Recomendado
Clasificación