不用我多说都知道在数据库备份操作有多重要,数据是任何一家互联网企业的命脉,为了防止数据库服务器异常宕机,停电,非人为关机等造成数据库数据丢失的情况,我们必须要为数据库做备份操作,这样我们就能及时的恢复数据.数据备份还用于做数据迁移,例如公司新增数据库服务器,想要将旧服务器上的数据迁移到新服务器并且不关闭旧服务器,就必须用到比较高级的数据备份迁移技术.

数据备份方式:物理备份和逻辑备份

实验环境:Linux,mysql5.7

一.物理备份

物理备份就是单纯的拷贝与覆盖,只需要拷贝mysql下的文件即可,操作如下

备份操作:

cp /usr/local/mysql  /备份目录/mysql.bak

tar -zcvf 备份目录/mysql.bak.tar.gz 备份目录/mysql.bak

将mysql.bak.tar.gz拷贝到需要做数据迁移的机器,或者是作为一定时间的备份文件存在本机

恢复操作:

tar -xf 备份目录/mysql.bak.tar.gz

cp 备份目录/mysql.bak /usr/local/mysql

chown -R mysql:mysql /usr/local/mysql             //记住一定要赋权

你也可以手写一个脚本为你定时的做数据备份

]#crontab -e        //每天的凌晨4点30备份

30 4 * * *   /root/dumpdata.sh

]#vim /root/dumpdata.sh

#/bin/bash

filename=mysql.bak-`date +%Y-%m-%d-%H-%M-%S`     //为了防止重名.利用时间区分

cp /usr/local/mysql  /root/$filename

tar -zcvf /root/$filename.tar.gz /root/$filename

二.逻辑备份

用物理备份的公司属实没有多少,想想看几个G还可以忍受,大到上千G,上万G,鬼都不知道要备份多久,还非常浪费内存空间

所以我们一般会使用逻辑备份.逻辑备份是指使用软件技术从数据库中导出数据并写入一个输出文件,该文件的格式一般与原数据库的文件格式不同,只是原数据库中数据内容的一个映像。因此,逻辑 备份文件 只能用来对数据库进行逻辑恢复,即数据导入,而不能按数据库原来的 存储 特征进行物理恢复。

逻辑备份策略:

1)完全备份

2)增量备份

3)差异备份

1.完全备份与完全恢复

使用mysqldump命令,root权限,安装了mysql服务都会有mysqldump命令

完全备份: mysqldump -uroot -p密码 库名  >  目录/xxx.sql

完全恢复: mysql -uroot -p密码 库名  <  目录/xxx.sql

备份时库名表示方式:

所有库:--all-database 或 -A

单个库:数据库名

多个库:数据库名1 数据库名2....数据库名n

单张表:数据库名 表名

实例: 备份所有库与完全恢复

]#mysqldump -uroot -p123456 -A > /fullbak.sql

]#mysql -uroot -p123456 -A < /fullbak.sq

2.增量备份

在了解了完全备份之后,你要思考下一个问题,为什么当我做完全恢复的时候,我要将表里已经存在的数据重新恢复一遍,不能直接将那些后来插入的数据恢复吗?(这里是指以某个完全备份数据为基准,比如100条数据,当我插入101条或之后的数据时,这些就是非重复数据).这样做不仅仅节省备份与恢复时间,还节省空间.这就是增量备份.

想知道增量备份是如何工作的,你必须先了解binlog日志.

[binlog教程] https://blog.csdn.net/ck784101777/article/details/100766138

增量备份的命令其实很简单:

mysqlbinlog binlog日志文件 |  mysql -u root -p密码

你要知道何时使用增量备份,如果你搞懂了增量备份的机制,你应该会有这样的疑问,既然binlog日志记载了所有操作(除查询),那么删除操作也会记录,这样即使做恢复数据也会执行删除操作,如果对于某一些删除操作人为故意造成的,你如何将它恢复到删除之前的状态,你可以利用偏移量来剔除删除操作(--start-pos,--stop-pos),但是你得自己查看文件去做筛选,既麻烦也不明智.

当然你还可以用flush logs刷新日志来替换binlog日志(但是你怎么知道何时去做这个刷新操作,虽然理论上可行),比如你在做删除操作前刷新日志,那么你就可以恢复到删除之前的状态,问题是你怎么知道何时该做刷新操作,或者哪条删除操作是你需要的而哪些删除操作是故意的.

数据库维护一直都是数据库工程师的一大难题,定时的做一次完全备份,每天做一次增量备份总是比较靠谱的选择.

自带的 mysql dump命令,或者使用第三方的工具,然后把 数据库 里的数据以SQL语句的方式导出成文件的形式。在需要 恢复 数据时,通过使用相关的命令(如:source )将 备份 文件里的SQL语句提取出来重新在 数据库 中执行一遍,从而达到 恢复 数据的目的。使用场景: 数据库 数据量不大的情况可以使用,数据量比较大(超过20G左右)时 备份 速度比较慢,一定程度上还会影响 数据库 本身的性能。 物理 备份 就是利用命令(如cp、tar、scp等)直接将 数据库 的存储数据文件复制一份或多份,分别存放在其它目录,以达到 备份 的效果。 [ mysql d] ##错误日志,用来记录当 Mysql 启动、停止或运行时发生的错误信息,默认已开启 log-error=/usr/local/ mysql /data/ mysql _general.log ##二进制日志【binlog】,用来记录所有更新了数据或者已经潜在更新了的数据的语句,记录了数据的更改,可用于数据 恢复 ,默认已开启 完全 备份 :每次对数据进行完整的 备份 ; 差异 备份 备份 那些自从上次 完全 备份 之后被修改过后的文件; 增量备份 :只有那些在上次 完全 备份 或者 增量备份 后被修改的文件才会被 备份 。... 物理 备份 : 直接复制 数据库 文件,适用于大型 数据库 环境,不受存储引擎的限制,但不能 恢复 到不同的 MySQL 版本。 分为三部分,分别为完整 备份 增量备份 ,差异 备份 完整 备份 每次都将所有数据(不管自第一次 备份 以来有没有修改过),进行一次完整的复制, 备份 后会清除文件的存档属性,方便日后 增量备份 或者差异 备份 进行版本比较。 特点 :占用空间大, 备份 速度慢,但 恢复 时一次 恢复 到位, 恢复 速度快。 如果 数据库 已经安装在raid01 或者raid10上面,那我们的 数据库 是否还需要 备份 答:需要的,因为我们的raid只是为了保证硬件损坏而不会中断业务。但是软件上的故障或者人为删除 数据库 。raid是无法对数据进行还原的。因为你删除了的时候,假如是在raid上面,也会删除掉两份数据。因此 数据库 备份 和raid 是两个不同层次的概念。 mysql 备份 如何进行,以及应该 备份 哪些数据? 备份 类型:我们的 数据库 非常... 数据库 备份 ,完整 备份 增量备份 ,差异 备份 ;percona-xtrabackup的安装及使用,这里使用的是percona-xtrabackup-24.x86_64 版本 物理 备份 又可以分为脱机 备份 (冷 备份 )和联机 备份 (热 备份 ) (1)冷 备份 :是在关闭 数据库 的时候进行的 (2)热 备份 数据库 处于运行状态,这种 备份 方法依赖于 数据库 的日志文件 2. 逻辑 备份 :对 数据库 逻辑 组件(如表等 数据库 对象)的 备份 数据库 备份 策略角度, 备份 可分为 完全 备份 、差异 备份 增量备份 完全 ... 2、与存储引擎无关,因为是从 MySQL 服务器中提取数据而生成的,所以消除了底层数据存储的不同 3、有助于避免数据损坏。若磁盘驱动器有故障而要复制原始文件时,此时将得到一个损坏的 备份 1、  必须有 数据库 服务器完成 逻辑 工作,需要更多地cpu周期 2、 逻辑 备份 还原速度慢:需要 MySQL 加载... 一、 逻辑 备份 物理 备份 的区别 1、 逻辑 备份 备份 的是建表、建库、插入等操作所执行SQL语句 (DDL DML DCL),适用于中小型 数据库 ,效率相对较低。提供三 种级别的 备份 ,表级,库级和全库级 2、 物理 备份 :直接复制 数据库 文件,适用于大型 数据库 环境,不受 存储引擎的限制,但不能 恢复 到不同的 MySQL 版本,有完整 备份 ,增量 备份 ,差异 备份 二、 逻辑 备份 远程 备份 语法: # mysql dump -h 服务器地址 -u用户名 -p密码 数据库 名 > 备份 文件.sql 本地 备份 语法: # my... 逻辑 备份 物理 备份 各有优劣,一般来说, 物理 备份 恢复 速度比较快,占用空间比较大, 逻辑 备份 速度比较慢,占用空间比较一. 前言 逻辑 备份 物理 备份 各有优劣,,一般来说, 物理 备份 恢复 速度比较快,占用空间比较大, 逻辑 备份 速度比较慢,占用空间比较小。 逻辑 备份 恢复 成本高。二. 逻辑 备份 逻辑 备份 备份 sql语句,在 恢复 的时候执行 备份 的sql语句实现 数据库 数据的重现。1) mysql dump mysql dump是采用S... MySQL 物理 备份 逻辑 备份 的主要区别在于 备份 的内容和方式不同。 物理 备份 指的是 备份 数据库 的文件系统,例如使用工具如 mysql dump或xtrabackup来 备份 整个 数据库 的数据文件。这种方式可以 备份 所有 数据库 的所有数据,但 恢复 时需要更长的时间。 逻辑 备份 指的是通过导出 数据库 中的数据来 备份 ,例如使用工具 mysql dump或通过SELECT INTO OUTFILE语句在 数据库 中导出数据。这种方式可... 原因:能够防止由于机械故障以及人为误操作带来的数据丢失;冗余: 数据有多份冗余,但不等 备份 ,只能防止机械故障还来的数据丢失,例如主备模式、 数据库 集群。 备份 必须重视的内容: 备份 内容 databases Binlog my.conf 所有 备份 数据都应放在非 数据库 本地,而且建议有多份副本。 测试环境中做日常 恢复 演练, 恢复 备份 更为重要。 备份 考虑因素: 数据的一致型 服务的可用性 备份 类型: 一、 物理 备份 数据库 操作系统的 物理 文件(如数据文件、日志文件等)的 备份 物理 备份 又可分为脱机 备份 (冷 备份