Artigo Diretório
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 |
+----+------+-------+