欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

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

程序员文章站 2022-05-14 22:41:24
...
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