zoukankan      html  css  js  c++  java
  • mysql基础之数据库备份和恢复的基础知识

    备份数据的最终目的是为了在出现一些意外情况时,能够通过备份将数据还原,所以单单的备份数据往往是无法满足还原时的需求的,所以在备份数据库时,除了要备份数据本身,还要备份相关的数据库环境,如配置文件,定时任务,sudo权限等等相关的信息。

    一、为什么要备份?

      1、灾难恢复:硬件故障,软件故障,自然灾害,黑客攻击,误操作

      2、测试

    二、备份要注意的要点

      1、备份需要多少时间(备份过程的时长)
      2、能容忍最多丢失多少数据
      3、恢复数据需要在多场时间内完成(恢复过程的时长)
      4、需要恢复哪些数据
      (1)做还原测试,用于测试备份的可用性
      (2)还原演练

      5、备份负载

    三、备份内容(备份什么?)

      1、数据

      2、二进制日志,innodb的事务日志

      3、代码(存储过程、存储函数、触发器、时间调度器)

      4、服务器的配置文件

     四、备份相关术语

      1、完全备份(全量备份)(Full Backup)

      对某个时间点的所有数据进行一个完全的备份,对应时间点的所有数据都被包含在完全备份中。(备份整个数据集)

      2、部分备份

      只备份数据子集

      3、增量备份

      仅备份最近一次完全备份或增量备份(如果有增量备份)以来变化的数据

      4、差异备份

      仅备份最近一次完全备份以来变化的数据;

      5、热备

      在数据库正常运行的情况下进行备份,读写操作均可执行(往往依赖于事务日志)(难度最大)(myisam存储引擎不支持热备,Innodb存储引擎支持热备)

      6、温备

      读操作可以、写不行

      7、冷备

      读写操作均不能执行(停数据库后进行文件拷贝即可)

      8、物理备份

      直接备份数据库所对应的数据文件,与存储引擎无关(cp),相对于逻辑备份来说,性能更强

      9、逻辑备份

      从数据库中“导出”数据另存而进行备份

    五、设计备份方案

      1、数据集:完全+增量+二进制日志|完全+差异+二进制日志

      2、备份手段:物理,逻辑(物理备份恢复较快,逻辑备份恢复较慢)

      对于备份较大的数据建议物理备份,对于较小的数据建议用逻辑备份。

    六、备份工具的选择

      1、cp命令或tar命令

      在Linux中直接对数据文件进行备份,这种方式只适用于冷备的方式

      2、通过select语句进行部分备份

      通过select语句将表中的数据导出到指定文件中。

    MariaDB [ren]> show variables like '%datadir%';
    +---------------+-----------------+
    | Variable_name | Value           |
    +---------------+-----------------+
    | datadir       | /var/lib/mysql/ |
    +---------------+-----------------+
    1 row in set (0.00 sec)
    --注意:文件必须放在数据库的工作目录下
    MariaDB [ren]> select * from test into outfile '/var/lib/mysql/test.backup';
    Query OK, 6 rows affected (0.00 sec)
    --查看原来的数据
    MariaDB [ren]> select * from test;
    +--------------+------+------+------+
    | name         | high | age  | id   |
    +--------------+------+------+------+
    | 刘亦菲       |  179 | 32   |    3 |
    | 刘德华       |  180 | 40   |    5 |
    | 毕洪态       |  177 | 26   |    2 |
    | 漩涡鸣人     | NULL | NULL | NULL |
    | 胡歌         |  178 | 32   |    1 |
    | 谢霆锋       |  182 | 33   |    6 |
    +--------------+------+------+------+
    6 rows in set (0.00 sec)
    --删除全部数据(或者创建一个和原表结构一样的新表)
    --不可以恢复部分数据 MariaDB
    [ren]> delete from test where id in (1,2,35,6); MariaDB [ren]> delete from test where id is null;
    --使用load data恢复数据 MariaDB
    [ren]> load data infile "/var/lib/mysql/test.backup" into table test;Query OK, 6 rows affected (0.01 sec) Records: 6 Deleted: 0 Skipped: 0 Warnings: 0 MariaDB [ren]> select * from test; +--------------+------+------+------+ | name | high | age | id | +--------------+------+------+------+ | 刘亦菲 | 179 | 32 | 3 | | 刘德华 | 180 | 40 | 5 | | 毕洪态 | 177 | 26 | 2 | | 漩涡鸣人 | NULL | NULL | NULL | | 胡歌 | 178 | 32 | 1 | | 谢霆锋 | 182 | 33 | 6 | +--------------+------+------+------+ 6 rows in set (0.00 sec)

    在使用select语句备份的同时,最好将表架构也备份一份,因为还原的时候可以用到。

      3、mysqldump+复制binlog:  

      mysqldump:完全备份(部分备份)(逻辑备份工具)
      复制binlog中指定时间范围内的event:增量备份

      mysqldump是mysql自带的备份工具,它是一种逻辑备份工具,也就是说,它会将数据从数据库中读出,转化为对应的sql语句。

      mysqldump能够实现完全备份或部分备份

      使用innodb表类型的表能够使用mysqldump进行热备

      使用myisam表类型的表只能够使用mysqldump进行温备

      如果数据量较小,可以选择使用mysqldump。

      原理:

      通过协议连接到mysql数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的insert语句,还原这些数据时,只要执行这些insert语句即可将对应的数据还原。

      优点:

      可以直接使用文本处理工具处理对应的备份数据,因为备份数据已经被mysqldump转换成了对应的insert语句,所以,我们可以借助文件系统中的文本处理工具对备份数据进行直接处理。

      缺点:

      当数据为浮点类型时,会出现精度丢失

      它的备份过程属于逻辑备份,其备份速度、恢复速度与物理备份工具相比较慢,而且mysqldump备份的过程是串行化的(mydumper可并行备份),不会并行的进行备份;当数据量较大时,其效率较低

      4、lvm2快照+复制binlog:

      lvm2快照:(做快照的时候不能有任何的数据写入)(几乎热备(备份速度快))
      lvm2快照:适用cp或者tar等做物理备份:完全备份
      复制binlog中指定时间范围内的event:增量备份

      5、xtrabackup|mariabackup:

      由Percona提供的支持对InnoDB做热备(物理备份)工具(开源免费的)

      支持完全备份、差异备份、增量备份、部分备份等功能

  • 相关阅读:
    mssql sqlserver 从指定字符串中获取数字的方法
    SpringBoot整合junit
    SpringBoot之RESTful风格
    SpringBoot属性配置
    SpringBoot 基于web应用开发(请求参数获取,静态资源,webjars)
    Spring Boot入门及第一个案例
    解决Zabbix网页端Get value error: cannot connect to [[192.168.238.139]:10050]: [113] No route to host问题
    Linux配置本地yum源
    ELK安装redis 执行make命令时报错解决方法
    CentOS 7 配置网络连接
  • 原文地址:https://www.cnblogs.com/renyz/p/11482249.html
Copyright © 2011-2022 走看看