众所周知,数据对于一个产品来说是非常重要的,特别是已上线的产品,为了产品的健壮性,首先保证数据的安全。防止数据被恶意删除等情况的出现。所以,我们定时对数据库数据进行备份;
一.什么是全量备份与增量备份?
全量备份:指对某一个时间点上的所有数据或应用进行的一个完全拷贝。实际应用中就是用一盘磁带对整个系统进行全量备份,包括其中的系统和所有数据。这种备份方式最大的好处就是只要用一盘磁带,就可以恢复丢失的数据。因此大大加快了系统或数据的恢复时间。然而它的不足之处在于,各个全备份磁带中的备份数据存在大量的重复信息;另外,由于每次需要备份的数据量相当大,因此备份所需时间较长。
增量备份:针对于上一次备份(无论是哪种备份):备份上一次备份后(包含全量备份、差异备份、增量备份),所有发生变化的文件。(增量备份过程中,只备份有标记的选中的文件和文件夹,它清除标记,既:备份后标记文件,换言之,清除存档属性);就是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加和者被修改的文件,这就意味着,第一次增量备份的对象是进行全备后所产生的增加和修改的文件;第二次增量备份的对象是进行第一次增量备份后所产生的增加和修改的文件,如此类推。这种备份方式最显著的优点就是:没有重复的备份数据,因此备份的数据量不大,备份所需的时间很短。但增量备份的数据恢复是比较麻烦的。您必须具有上一次全备份和所有增量备份磁带(一旦丢失或损坏其中的一盘磁带,就会造成恢复的失败),并且它们必须沿着从全备份到依次增量备份的时间顺序逐个反推恢复,因此这就极大地延长了恢复时间。
二,开始进行mysql备份操作
1.增量备份
在进行增量备份之前,我们需要先打开mysql的binlog功能;
原理
mysql binlog 的功能,会记录所有的用户的操作,可以依靠这个,配合全备份,将数据库回滚到某一个特殊的时刻。hhh
简单来说,比如我们每周做一次全备份,每天做一次增量备份,当数据库发生问题的时候,我们就可以先将数据库回滚到上一周我们的全备份的时间,然后再通过每天的增量备份(其实就是模拟所有的数据库操作,全部执行一遍),将数据恢复到我们想要的时间点。
知道它的原理之后,我们先来打开mysql的binlog功能,
mysql 的 binlog 功能需要在配置文件中打开,在 my.cnf 或者 mysqld.cnf 中添加以下几行:
[mysqld]
skip-name-resolve
port = 3306
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
lower_case_table_name=1
max_allowed_packet=16M
datadir=/pro/mysql/data
以下是需要添加的内容
#binlog setting,
log-bin=/pro/mysql/mysql-bin
server-id=12345
# 需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可