MySQL数据库备份 误操作 数据恢复

(一)MySQL数据备份和恢复
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目录。

假如上面的命令无法备份,下面是最新的备份命令,我在本地测试是ok的:
@echo off
echo.
echo      MySQL数据库备份

echo *****************************
echo.
echo 今天是 %date%
echo 时间是 %time%
echo.
echo *****************************


set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"

md "g:\dbbackup\%Ymd%"

"D:\Program Files (x86)\MySQL\MySQL Server 5.0\bin\mysqldump" --opt -Q -uroot -proot --default-character-set=utf8 test > "g:\dbbackup\%Ymd%\test_bak.sql"

echo.

echo MySQL数据库备份完成,请进行检查。。。

echo.
echo.

pause


假如需要将上述备份的数据进行恢复,可以先创建一个新数据库,然后执行命令
mysql -u root -p test2 < g:/dbbackup/20140216/test_bak.sql

即可恢复上述表数据


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常用的命令和导入导出:
1、从cmd进入mysql。先进入到mysql的bin目录下(否则不能识别mysql命令),然后录入mysql -h locahost -u root -p(回车,不用“;”结束,因为没有进入mysql环境,直接回车即可),即可进入mysql环境,这是如果要执行比如 use test;和select version();时需要用“;”结束。
2、mysqldump备份。命令为“mysqldump -u root -p databasename>d:\\temp\\001.sql”,特别需要注意的是,该命令为mysqldump,在bin目录执行即可,不需要进入mysql环境,进入mysql环境后就是sql预语句了,会报错,更也不需要用“;”结束了。
3、mysql导入。如果数据已经存在,进入mysql环境,执行“drop database db;”删除数据库,然后执行“create database db;”创建db,再在bin下执行"mysql -u root -p db < d:\\temp\\db.sql"即可将数据导入。

你可能感兴趣的:(mysql,cmd,MysqlDump,恢复,备份和导入)