本文目录一览:
- 1、MYSQL备份:启用二进制日志功能的MYSQL增量备份
- 2、MySQL的备份与还原,非常规备份,全量备份,增量备份
- 3、有什么简单的 mysql 增量备份方案
- 4、如何实现Mysql数据库的差异性备份和增量备份?
- 5、win7系统下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语句,然后定时备份那个日志文件,并进行刷新以便生成新的日志文件