MySql的备份策略
手动备份数据库(全备份)
mysqldump -u用户名 -p密码 数据库名称 [表名1, 表名2] > 文件路径
--比如,将tmp数据库备份到d盘
mysqldump -uroot -proot tmp > d:\mysql\tmp.bak
-- 备份tm数据库的几张表
mysqldump -uroot -proot tmp dept,user > d:\mysql\tmp.bak
-- 使用备份文件恢复数据,在mysql控制台执行
source d:\tmp\tmp.back
增量备份
定义:mysql数据库会以二进制的形式,将用户对数据库的操作记录到问文件中;当需要恢复时,可以使用备份文件恢复数据。
注意:增量备份,会记录增删改操作,不会记录查。
主要记录了:
操作本身
操作时间
position
进行增量备份、恢复
5.1 支持
1 配置 mysql.ini/cnf
文件,启用二进制备份
# 定义二进制日志存储的位置
log-bin=d:/binlog/mylog
生成的日志文件:

mylog.index: 一个索引文件,记录了有哪些增量备份文件
mylog.00000x: 多个日志文件,以 000001, 000002等结尾,该文件是个二进制文件,无法直接查看
使用mysqlbinlog查看备份文件
mysqlbinlog位于mysql bin 目录下。
mysqlbinlog 备份文件路径;

增量备份需要根据位置和时间进行备份恢复。
根据时间恢复:
# 恢复指定时间开始的备份
mysqlbinlog --start-datetime='时间' binlog文件的位置 | mysql -uroot -p
# 恢复指定时间之前的备份
mysqlbinlog --stop-date='时间' binlog文件的位置 | mysql -uroot -p
根据位置恢复:
mysqlbinlog --start-position='位置' binlog文件的位置 | mysql -uroot -p
mysqlbinlog --stop-position='位置' binlog文件的位置 | mysql -uroot -p
需要程序,定时将binlog文件备份到ftp服务器。
清理日志:如果每天都会产生大量的二进制日志,并且这些日志长时间不清理的话,将会对磁盘空间带来很大的浪费。
在 mysql控制台使用
reset master
命令清理日志。增加配置(my.cnfs):
-expire_logs-days
设置日志天数,过期日志将会被删除
如果每周有一次全备份,可以设置日志过期天数为7.
如果出现意外,可以先回复前备份,再恢复期间的增量备份即可。
备份推荐策略:
每周一进行一次全备份
启用增量备份,过期时间设置为>7,最好大一点
如果出现数据库崩溃
如果完全丢失:根据时间 先恢复全备份,再恢复增量备份
最后更新于
这有帮助吗?