您的位置:

mysql数据库快照增量备份(快照 增量备份)

本文目录一览:

MYSQL备份:启用二进制日志功能的MYSQL增量备份

小量的数据库我们可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,我们就不太可能每天进行一次完整备份了,而且改成每周一次完整备份,每天一次增量备份类似这样的备份策略。增量备份的原理就是使用了mysql的二进制日志,所以我们必须启用二进制日志功能。

一、增量备份

1、比如我们在星期天下午11点做一次完整备份:

mysqldump

--single-transaction

--flush-logs

--master-data=2

--all-databases

fullbackup_sunday_11_PM.sql

在sql文件中我们会看到两行:

Position

to

start

replication

or

point-in-time

recovery

from

CHANGE

MASTER

TO

MASTER_LOG_FILE=’bin-log.000002′,

MASTER_LOG_POS=107;

第二行包含了我们需要的信息,是指备份后所有的更改将会保存到bin-log.000002二进制文件中。

2、然后在星期一下午11点我们来做一次增量备份:

mysqladmin

flush-logs

这时将会产生一个新的二进制日志文件bin-log.000003,bin-log.000002则保存了自星期天下午11点到现在的所有更改,我们只需要把这个文件备份到安全的地方就行了。然后星期二我们又做增量备份,还是执行同样的命令,这时我们保存bin-log.000003文件。

二、恢复备份

比如星期三中午12点出现了故障,这时需要恢复,我们首先导入星期天的完整备份:

mysql

fullbackup_sunday_3_AM.sql

接着我们导入星期一和星期二的增量备份:

mysqlbinlog

bin-log.000002

bin-log.000003

mysql

这时我们已经恢复了所有备份数据,我们还可以找到bin-log.000004,进一步恢复最新的数据。

MySQL的备份与还原,非常规备份,全量备份,增量备份

1:官方百万级别的测试数据库:

官方测试数据库github网址:

下载到目录,解压即可,运行命令:

2:自己创建简单测试数据库:

快速随机生成测试语言的网站:

选择sql和想生成的字段,点击生成Generate!生成即可。

在MySQL输入生成的语句即可。

3:测试备份还原时用到的命令

删库跑路测试(先备份好)

还原后查询库的表数据是否完整。

采用复制整个数据存放目录

1:查看数据库数据存放位置

有两种方法:

1):在数据库中用命令 show variables like 'datadir'; 查看

2):在配置文件中查看,配置了 datadir 目录的可查看。没有配置的默认为 /var/lib/mysql/ 位置

Linux中查看配置文件

2:复制目录或者目录下某个数据库名

3:还原时直接复制文件夹到数据库目录即可

mysqldump又可叫做全量备份。

参数 --databases 同 -B ,单独一个库,也可省略。

1、备份命令mysqldump格式

格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 database 数据库名 文件名.sql

备份testDatabase数据库

2、备份MySQL数据库为带删除表的格式

备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。

3、直接将MySQL数据库压缩备份

备份并压缩

4、备份MySQL数据库某个(些)表

备份testDatabase中的myTable表,不需要用参数 --databases 或者 -B

5、同时备份多个MySQL数据库

同时备份testDatabase和 employees两个库

6、备份服务器上所有数据库

参数 --all-databases 同 -A

7、还原MySQL数据库的命令

1) 不指定数据名还原,默认生成原数据库名称,还原所有数据库。

2) 指定数据名还原,还原指定单个数据库,需在数据库种预先创建一个testDatabase名称。

3) 还原压缩的MySQL数据库

4) 进入数据库用source导入

增量备份是针对于数据库的bin-log日志进行备份的,增量备份是在全量的基础上进行操作的。增量备份主要是靠mysql记录的bin-log日志。

1:查看是否开启bin-log日志

进入mysql输入命令可查看。

显示如下为开启状态,日志文件在/var/lib/mysql/以binlog.00001的格式保存。

如未开启,需要在配置文件种配置

2:查看目前使用的bin-log日志文件

进入mysql查看命令。

显示如下,目前使用的是binlog.000022文件,所有操作都记录在此文件。

查看当前testDatabase的表myTable数据如下,

3:刷新日志,使用新的日志文件(备份)

在命令端执行命令

日志文件从 binlog.000022 变为 binlog.000023

这时相当与已经备份成功,备份文件即为上次的binlog.000022日志文件。

4:删除数量,从日志还原数据

1) 删除ABC行

查询以及没有ABC行列。

2) 恢复数据ABC行

退出mysql,在命令端用mysqlbinlog命令恢复到binlog.000022日志状态。

进入数据库再次查看数据,ABC已经恢复。

增量备份完成。

有什么简单的 mysql 增量备份方案

1.在 /etc/my.cnf 下面设置开启bin-log

编辑

vim /etc/my.cnf

[mysqld]

binlog_format = MIXED //binlog日志格式

log_bin =目录/mysql-bin.log //binlog日志名

expire_logs_days = 7 //binlog过期清理时间

#max_binlog_size 100m //binlog每个日志文件大小 最大值和默认是1个G

binlog-do-db=game #需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可

binlog-do-db=platform #

#binlog-ignore-db=不需要备份的数据库,如果备份多个数据库,重复设置这个选项即可

2.创建远程登陆数据库帐号

grant all privileges on game.* to 'jack'@'192.168.10.56' identified by 'admin'

grant all privileges on platform.* to 'jack'@'192.168.10.56' identified by 'admin'

3.将服务器上的数据,导入一份进远程服务器中

mysqldump -ujack -padmin -h192.168.10.38 备份数据库地址(/home/mysql/db/mysql.sql);

4.写Linux 计划任务:

vim /etc/crontab

在底部加入

0 3 * * * root sh /home/wwwroot/sh/mysqlbackup.sh #每天3点以root帐号的权限执行目录下的sh

重启服务

如何实现Mysql数据库的差异性备份和增量备份?

Ø  首先,我们需要开启MySQL服务器的二进制日志功能,其实现方法有很多种,最常用的是在MySQL的配置文件的mysqld项中加入log-bin=[filepath]项;也可以使用mysqld –log-bin=[filepath]重新启动MySQL服务器。

Ø  其次,使用mysqldump对数据库进行完全备份,它可以实现对数据据的联机,非阻塞的热备份,不会影响其他进程对数据库的读写操作。(参考指令:mysqldump -uroot --password=123 --single-transaction --flush-logs --master-data=2 --all-databases --delete-master-logs d:/mysql5.0/full_%date:~0,10%_1500_PM.sql)

Ø  第三,使用flush logs指令刷新创建新的二进制日志。可以通过mysqladmin flush logs或者flush logs语句实现。最方便有效的方法是将它做成批处理文件,然后让操作系统定期执行。

Ø  使用mysql *.sql进行完全备份的恢复。

Ø  使用mysqlbinlog logs-bin.[0-9]* | mysql进行增量备份的恢复。一般的,假设我们周日下午三点进行了完全备份并生成备份文件full_backup_20100415_3_PM.sql,周一周二中午一点进行了两次增量备份,分别生成增量备份文件inc_backup_1_PM.0007和inc_backup_1_PM.0008,周三上午10:00数据库发生崩溃,需要进行数据库恢复,此时正在记录的二进制日志为inc_backup_1_PM.0009,我们还需要恢复其中记录的操作。具体的恢复操作为:

mysql full_backup_20100415_3_PM.sql

mysqlbinlog inc_backup_1_PM.0007 inc_backup_1_PM.0008 inc_backup_1_PM.0009

u  具体应用(结合T8项目)

根据上述分析,我们在T8项目使用MySQL增量备份,也需要三个步骤:

Ø  首选修改MySQL启动配置文件my.cnf,在其中的mysqld项中增加log-bin选项,重新启动MySQL 服务器以开启二进制日志功能,在生成文件/usr/data/mysql/ t8server-bin.index和t8server-bin..000001。如图所示:

Ø  编写完全备份可执行文件脚本:

Ø  编写增量备份可执行文件脚本:

Ø  执行full_backup_20100417_1_pm,生成/usr/data/mysql/full_backup_20100417_1_pm. sql文件。

Ø  执行inc_backup_1_pm,生成/usr/data/mysql/t8server-bin..000002。

其中full_backup_20100417_1_pm. sql和t8server-bin..000002分别是完全备份和增量备份文件。

要进行备份文件的恢复,只需执行命令:

u  总结

MySQL提供了很方便的完全+增量备份实现方法,我们只需调用系统内置的方法或者作出一些细微的配置就可以对MySQL数据库进行备份和恢复。对于MyISAM数据库和InnoDB数据库,都可以通过mysqldump实现数据库的完全逻辑备份,通过启动二进制日志(binary logs),可以记录一个时间段内对数据库的所有可能更新的操作,从而通过flush logs创建新的日志而实现增量备份。

win7系统下mysql如何增量备份

增量备份其实就是开启二进制日志,保留每个操作的sql语句,然后定时备份那个日志文件,并进行刷新以便生成新的日志文件