视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
mysql备份:完全备份和增量备份_MySQL
2020-11-09 18:46:30 责编:小采
文档


bitsCN.com

mysql备份:完全备份和增量备份

完全备份:

在cmd下进入该mysql目录下bin目录,mysqldump.exe来执行备份。mysqldump -uroot -p911004 数据库或则数据表>路劲/文件名。在mysql控制台上,恢复时用source 路径/备份文件名

完整备份一般一段时间进行一次,且在网站访问量最小的时候,这样常借助批处理文件定时备份。主要是写一个批处理文件在里面写上处理程序的绝对路径然后把要处理的东西写在后面,即完全备份数据库C:/myenv/mysql5.5.27/bin/mysqldump -u root -proot temp dept > d:/temp.dept.bak。然后在控制面板上,创建任务。任务指定该批处理文件的执行时间。但是执行一次该文件产生的备份都会覆盖上一次的文件。需要一个动态指定的名字,借助php可以实现,那么这次在批处理文件里面写的是php.exe /php文件路径/*.php。在php文件里面,可以根据时间生成文件的名字,写备份语句,让exec函数执行。在创建计划让每个一段时间执行一次文件。

php文件:

date_default_timezone_set('PRC');

$bakfilename=date("YmdHis",time());

$command="C:/myenv/mysql5.5.27/bin/mysqldump-u root -proot temp dept > d://{$bakfilename}";

exec($command);

增量备份:

对ddl和dml语句进行二进制备份。且5.0无法增量备份,5.1后可以。

如果要实现增量备份需要在my.ini文件中配置备份路径即[mysqld]下的log-bin='d:/log/mylog'

重启mysql服务器,增量备份就启动了。

会在指定目录下生成两个文件mylog.index记录索引,mylog.000001就是记录二进制的详细信息。

如果要查看必须使用mysqlbinlog工具查看。在cmd中进入mysql目录下的bin中 使用msyqlbinlog

后面加上mylog.000001,可以看到所有ddl和dml操作,且每一个操作都有具体的位置和时间点的记录。

根据这些信息,可以恢复操作,

主要可以通过时间和位置两种方式恢复:

mysqlbinlog --stop-datetime="2013-01-14 18:20:21" d:/log/mylog.000001 | mysql -uroot -p911004

从开始到这个时间点

mysqlbinlog --start-datetime="2013-01-14 18:20:21" d:/log/mylog.000001 | mysql -uroot -p911004

从这个时间点到最后

mysqlbinlog --start-datetime="2013-01-14 18:20:21" --stop-datetime="2013-01-14 18:20:21" d:/log/mylog.000001 | mysql -uroot -p911004

恢复这一个时间段的数据。

mysqlbinlog --stop-position=“N” d:/log/mylog.000001 | mysql -uroot -p911004

从开始到这个地方

mysqlbinlog --start-position="2013-01-14 18:20:21" d:/log/mylog.000001 | mysql -uroot -p911004

从这个地方到最后

mysqlbinlog --start-position="2013-01-14 18:20:21" --stop-position="2013-01-14 18:20:21" d:/log/mylog.000001 | mysql -uroot -p911004

恢复这一个地方段的数据。随着时间的推移,二进制文件里面的数据越来越大,所以要定期的做一些清理工作。

1.reset master 可以删除列于索引文件中的所有二进制日志,

把二进制日志索引文件重新设置为空,并创建一个新的二进制日志文件

2.PURGE {MASTER | BINARY} LOGS TO 'log_name'

PURGE {MASTER | BINARY} LOGS BEFORE 'date'

用于删除列于在指定的日志或日期之前的日志索引中的所有二进制日志。

这些日志也会从记录在日志索引文件中的清单中被删除,这样被给定的日志成为第一个。

3.设置my.ini中的参数[mysqld]下的-EXPIRE_LOGS_DAYS。此参数是设置日志的过期天数,过期的日志将会被自动删除,

一般一周做一次全备份,之后增量备份,且过期时间大于7天。如果全奔溃了,先全恢复,在增量恢复。如果误操作可以看增量日志进行增量恢复。

bitsCN.com

下载本文
显示全文
专题