c mysql异常处理_mysql 异常处理记录

操作系统:Windows Server 2012 Datacenter

转换目录:

1、先转到盘符,如 cd c:\

2、再转到目录,如 cd "Program Files (x86)\MySQL\MySQL Server 5.1\bin" ,注意,一定要加双引号

进入mysql

启动 net start mysql

停止 net stop mysql

其中启动数据库异常可以根据错误码查找

本次启动异常出现1067

解决办法

1、将“C:\ProgramData\MySQL\MySQL Server 5.1\data”目录下面的三个文件删除,一定要先备份再删除(ibdata1是存放类型InnoDB ,与myisam 区别可以找度娘):

ibdata1 ib_logfile0 ib_logfile1

2、重启mysql即可

进入bin目录下面运行 mysql.exe,其他exe文件一样操作方式

./mysql -uroot -p

到这里进入后,show tables正常,能显示表

但是无法select 结果,提示类似异常“MySQL Server Error:Table 'test.pw_forums' doesn't exist ( 1146 )... ”

解决办法

1、将备份的ibdata1尝试恢复,重启mysql

2、若上面不行,尝试从其他地方将表结构与数据重新导入

3、以上都不行,只能将数据库删除,重新创建库与表(此办法是没办法的办法,缺点是历史数据丢失)

数据库备份:

1、编写批处理命令:

文件内容如下 :

@echo off

echo.

echo      MySQL数据库备份

echo *****************************

echo.

echo 今天是 %date%

echo 时间是 %time%;

echo.

echo *****************************

set "Ymd=%date:~6,4%%date:~3,2%%date:~,2%"

set "tm=%time:~,2%%time:~3,2%%time:~6,2%"

if not exist "C:\数据备份\%Ymd%" md "C:\数据备份\%Ymd%"

"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqldump" --opt -Q 库名 -uroot -p密码 > "C:\数据备份\%Ymd%\备份名%tm%.sql"

echo.

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

echo.

echo.

exit

=========结束=====

注意:日期格式为 20/10/2014 时间格式为 12:12:10.15

2、Windows Server 2012添加自动任务计划来定时处理备份操作批处理。

还原测试;

用命令进入数据库:

1、cd 进入mysql bin目录  ./mysql -uroot -p123456

2、create database test_test;

3、use test_test 进入相应库,然后导入命令,mysql>source d:\wcnc_db.sql

4、之后可以正常命令查看表结构及数据。

另一种方式:

MySQL数据库恢复(使用mysqlbinlog命令)

binlog是通过记录二进制文件方式来备份数据,然后在从二进制文件将数据恢复到某一时段或某一操作点。

1:开启binlog日志记录

修改mysql配置文件mysql.ini,在[mysqld]节点下添加

# log-bin

log-bin = E:/log/logbin.log

路径中不要包含中文和空格。重启mysql服务。通过命令行停止和启动mysql服务

c:\>net stop mysql;

c:\>net start mysql;

进入命令行进入mysql并查看二进制日志是否已经启动

Sql代码

mysql>show variables like 'log_%';

日志成功开启后,会在E:/log/目录下创建logbin.index和logbin.000001两个文件。logbin.000001就是数据库的备份文件,以后就可以通过此文件对数据库进行恢复操作。

2:查看备份的二进制文件

Sql代码

c:\mysql\bin\>mysqlbinlog e:/log/logbin.000001

日后记录的操作多了,命令行方式基本就用不上了。可以使用将日志导出文件的方式来查看日志内容

2.1 导出

txt代码

c:\mysql\bin\>mysqlbinlog e:/log/logbin.000001 > e:/log/log.txt

">": 导入到文件中; ">>": 追加到文件中

如果有多个日志文件

Sql代码

c:\mysql\bin\> mysqlbinlog e:/log/logbin.000001 > e:/log/log.sql

c:\mysql\bin\> mysqlbinlog e:/log/logbin.000002 >> e:/log/log.sq

2.2 按指定位置导出:

Sql代码

c:\mysql\bin\>mysqlbinlog --start-position=185 --stop-position=338 e:/log/logbin.000001 > e:/log/log3.txt

2.3 按指定时间导出:

Xml代码

:\mysql\bin\>mysqlbinlog --start-datetime="2010-01-07 11:25:56" --stop-datetime="2010-01-07 13:23:50" e:/log/logbin.000001 > e:/log/log_by_date22.txt

3:从备份恢复数据库

做了一次更新操作,之后日志的内容如下:

3.1 恢复:

Sql代码

c:\mysql\bin\>mysqlbinlog e:/log/logbin.000001 | mysql -u root -p

3.2 按指定位置恢复:

Sql代码

c:\mysql\bin\>mysqlbinlog --start-position=185 --stop-position=338 e:/log/logbin.000001 | mysql -u root -p

3.3 按指定时间恢复:

Xml代码

c:\mysql\bin\>mysqlbinlog --start-datetime="2010-01-07 11:25:56" --stop-datetime="2010-01-07 13:23:50" e:/log/logbin.000001 | mysql -u root -p

3.4 通过导出的脚本文件恢复

Sql代码

c:\mysql\bin\>mysql -e "source e:/log/log.sql"

4.其他常用操作

4.1 查看所有日志文件

Sql代码

mysql>show master logs;

4.2 当前使用的binlog文件

Sql代码

mysql>show binlog events \g;

4.3 产生一个新的binlog日志文件

Sql代码

mysql>flush logs;

4.4 删除所有二进制日志,并从新开始记录(注意:reset master命令会删除所有的二进制日志)

Sql代码

mysql > flush logs;

mysql > reset master;

4.5 快速备份数据到sql文件

Sql代码

c:\mysql\bin>mysqldump -u root -p --opt --quick interactive > e:/log/mysqldump.sql

为了方便查看,把从脚本恢复的命令在写一次

Sql代码

c:\mysql\bin\>mysql -e "source e:/log/mysqldump.sql"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值