1 MySQL数据库的备份机制,写了一个.bat文件,每天定时自动备份:
echo on
FOR /F "TOKENS=1* DELIMS= " %%A IN ('DATE/T') DO SET CDATE=%%B
FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%B
FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%B
FOR /F "TOKENS=2,3 DELIMS=/ " %%A IN ('echo %CDATE%') DO SET yyyy=%%B
SET date=%yyyy%%mm%%dd%
SET filename=dbname%date%.sql
mysqldump -uroot -proot --default-character-set=utf8 --hex-blob test > E:\db\%filename%
将该命令添加到任务计划即可。查看bat是否有效只要双击即可,前提是e盘下有db目录。
2 关于误操作和数据恢复,一定要有安全意识,MySQL数据的找回,一定要在配置bin-log,否则数据丢失将无法恢复:
在MySQL的my.ini(或my.cnf,视操作系统不同而不同)添加:
[mysqld]
log-bin=binlogname(名字随便取)
然后需要重启MySQL服务才能生效
可以通过命令“show binlog events;”查看配置是否成功
通过mysqlbinlog恢复MySQL数据的两种方法:
(1)时间date
通过cmd运行到binlog所在的目录,再录入:
mysqlbinlog --stop-date="2011-02-27 12:12:59" jbms_binlog.000001 | mysql -uroot -proot (回车)
恢复到2011-02-27 12:12:59之前的数据,如果是start-date,即从该时间点后的开始算起
(2)位置position:
先将binlog日志转换成txt:
mysqlbinlog --start-date="2011-02-27 13:10:12" --stop-date="2011-02-27 13:47:21" jbms_binlog.000002 > temp/002.txt
功能是将时间段内的日志文件转换成txt,注意binlog和temp文件夹是同一目录下。
查看生成的txt文件,获取编辑位置和时间等数据,然后通过命令:
mysqlbinlog --stop-position="98" jbms_binlog.000002 | mysql -uroot -proot
即可恢复位置为“98”处操作的数据,其中stop也可以换成start。
注意:如果通过drop table name;将表删除,要想恢复数据,必须建立一个表名、字段和数据类型相一致的空表,否则数据无法恢复,报表不存的错误。
关于我们
技术分享
技术分享
MySQL数据库备份 误操作 数据恢复
现在下载,可享30天免费试用