189 8069 5689

mysql数据错误怎么恢复 mysql数据恢复

怎么恢复mysql数据库

mysql数据库恢复方法:

专注于为中小企业提供网站建设、成都做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业任县免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

方法一:

命令恢复数据库:

mysql -u root –password=root密码 数据库名 备份文件.sql

方法二:

第一步:用管理员权限登录并进入后台管理界面,点“数据库-资料恢复”。

第二步:在数据恢复设置中选择“从本地文件”进行恢复,然后通过右边的“浏览”按钮找到之前保存下来的.sql文件。

第三步:点“提交”按钮后将出现询问“分卷数据成功导入数据库,需要自动导入本次其他的备份吗?”一般继续点“确定”按钮即可。之后的数据库文件就完全导入到当前网站了。这时出现再次要求输入管理员帐号的提示。访问网站地址时也会看到所有信息都恢复到备份数据库时的内容了。

小提示:

不管采取哪种方式备份和恢复数据库,一定要注意备份和恢复时使用的版本要相同,甚至是语言种类也要一致,否则会存在乱码的问题。

怎么恢复mysql数据库怎么恢复数据

简单情况下:进入原来mysql安装路径下的data文件夹下,找到相应的库和ibdata1,进行copy,就可回复原来的数据。

复杂情况下:

从另一台机上把MySQL数据库的mysql文件夹拷贝到本地机上,目的是恢复本地机对数据的访问和操作。经过如下几种情况的操作。

1. 在本地重装MySQL(安装目录D:\Program Files\MySQL\MySQL Server 5.0),直接把mysql文件夹拷贝至D:\Program Files\MySQL\MySQL Server 5.0\。结果,失败:数据库连接错误。

2. 卸载后重装MySQL,将D:\Program Files\MySQL\MySQL Server 5.0\下的数据备份,只把mysql\data文件夹全部内容拷贝到D:\Program Files\MySQL\MySQL Server 5.0\data下。结果,失败:数据库连接错误。将备份的数据还完覆盖。结果,失败,还是连接不上数据库。

3. 卸载后重装MySQL,将mysql\data文件夹里的cf1,last文件夹(这两个是原来MySQL里的数据库)拷贝进D:\Program Files\MySQL\MySQL Server 5.0\data。连接成功,在Navicat for MySQL里看到数据库cf1和last,但是不能访问,因为数据全为零。明白了原来data里以数据库命名的文件存储的是数据库的表结构,不是元数据。下一步,把data文件夹里的ibdata1文件(3.4G大,明显存储了元数据)拷贝到D:\Program Files\MySQL\MySQL Server 5.0\data里,代替原来的ibdata1文件。重启电脑,打开Navicat for MySQL,连接成功,数据可以访问操作。

至此,操作终于成功。其实当初在那台机上把数据导出来,而不是现在直接把文件夹mysql复制过来会更容易恢复。但那台机已经重装了系统,也就是说MySQL失效了。

详解MySQL误操作后怎样进行数据恢复

一、开启binlog。

首先查看binlog是否开启

?

1

2

3

4

5

6

7

mysql show variables like "log_bin";

+---------------+-------+

|Variable_name | Value

+---------------+-------+

| log_bin OFF

+---------------+-------+

1 row in set (0.00 sec)

值为OFF,需开启,开启binlog方式如下:

?

1

#vim /etc/my.cnf

在[mysqld]中加入

?

1

2

log-bin = mysql-bin

log-bin = /usr/local/mysql/log/mysql-bin.log

重启mysql服务

?

1

2

#service mysqld stop

#service mysqld start

二、模拟数据写入

建库

?

1

create database backup;

建表

?

1

2

3

4

5

CREATE TABLE `number` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',

`updatetime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

写入数据

程序2-1

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#coding:utf8

#python2.7

import MySQLdb

import time

def connect_mysql(db_host="192.168.11.169",user="martin",passwd="martin",db="backup",charset="utf8"):

conn = MySQLdb.connect(host=db_host,user=user,passwd=passwd,db=db,charset=charset)

conn.autocommit(True)

return conn.cursor()

#数据插入

for i in range(0,10):

#time=time.strftime("%Y-%m-%d %H:%M:%S")

sql = 'insert into number(updatetime) values(%s)'

values = [(time.strftime("%Y-%m-%d %H:%M:%S"))]

db1 = connect_mysql()

print db1.executemany(sql,values)

查询数据

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

mysql select * from number;

+-------+------------------------+

| id | updatetime

+--------------------------------+

| 1 | 2016-06-29 23:27:15 |

| 2 | 2016-06-29 23:27:15 |

| 3 | 2016-06-29 23:27:15 |

| 4 | 2016-06-29 23:27:15 |

| 5 | 2016-06-29 23:27:15 |

| 6 | 2016-06-29 23:27:15 |

| 7 | 2016-06-29 23:27:15 |

| 8 | 2016-06-29 23:27:15 |

| 9 | 2016-06-29 23:27:15 |

| 10 | 2016-06-29 23:27:15 |

+-------+------------------------+

10 rows in set (0.00 sec)

三、全量备份

?

1

mysqldump -uroot -p -F --master-data=2 backup |gzip /martin/data/backup_$(date +%F).sql.gz

注:加-F能刷新binlog,方便恢复时操作。

四、模拟写入增量数据

继续执行程序2-1。

查询数据

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

mysql select * from number;

+----+---------------------------+

| id | updatetime |

+----+---------------------------+

| 1 | 2016-06-29 23:27:15 |

| 2 | 2016-06-29 23:27:15 |

| 3 | 2016-06-29 23:27:15 |

| 4 | 2016-06-29 23:27:15 |

| 5 | 2016-06-29 23:27:15 |

| 6 | 2016-06-29 23:27:15 |

| 7 | 2016-06-29 23:27:15 |

| 8 | 2016-06-29 23:27:15 |

| 9 | 2016-06-29 23:27:15 |

| 10 | 2016-06-29 23:27:15 |

| 11 | 2016-06-29 23:31:03 |

| 12 | 2016-06-29 23:31:03 |

| 13 | 2016-06-29 23:31:03 |

| 14 | 2016-06-29 23:31:03 |

| 15 | 2016-06-29 23:31:03 |

| 16 | 2016-06-29 23:31:03 |

| 17 | 2016-06-29 23:31:03 |

| 18 | 2016-06-29 23:31:03 |

| 19 | 2016-06-29 23:31:03 |

| 20 | 2016-06-29 23:31:03 |

+-------+---------------------+

20 rows in set (0.00 sec)

五、增量备份

保留mysql-bin.000002及之后的binlog即可。

六、模拟误操作

?

1

delete from number;

七、再次写入增量数据

执行程序2-1

select * from bumber;

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

+------+------------------------+

| id | updatetime |

+------+------------------------+

| 21 | 2016-06-29 23:41:06 |

| 22 | 2016-06-29 23:41:06 |

| 23 | 2016-06-29 23:41:06 |

| 24 | 2016-06-29 23:41:06 |

| 25 | 2016-06-29 23:41:06 |

| 26 | 2016-06-29 23:41:06 |

| 27 | 2016-06-29 23:41:06 |

| 28 | 2016-06-29 23:41:06 |

| 29 | 2016-06-29 23:41:06 |

| 30 | 2016-06-29 23:41:06 |

+------+------------------------+

10 rows in set (0.00 sec)

八、恢复

此时发现之前的delete操作为误操作,急需恢复,恢复过程如下

给该表加上读锁

?

1

lock table number read;

将全量备份的数据导入

?

1

2

3

4

#cd /martin/data/

#gzip -d number_2016-06-29.sql.gz

#grep -i "change" *.sql

-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=107;

刷新日志

?

1

2

3

4

5

6

#mysqladmin -uroot -p'martin' flush-logs

#cd /usr/local/mysql/log

#ls|grep mysql-bin|grep -v index

mysql-bin.000001

mysql-bin.000002

mysql-bin.000003

可确定mysql-bin.000002为增量数据binlog

导入全量备份

?

1

2

3

4

5

#cd /martin/data/

#mysql -uroot -p backup number_2016-06-29.sql

#cp /usr/local/mysql/log/mysql-bin.000002 /martin/data/

#mysqlbinlog mysql-bin.000002 bin.sql

#vim bin.sql

在bin.sql找到之前的delete语句,删除

?

1

mysql -uroot -p bin.sql

九、确认已恢复数据

登录mysql

?

1

2

#mysql -uroot -p'martin' backup

select * from number;

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

+----+---------------------+

| id | updatetime |

+----+---------------------+

| 1 | 2016-06-29 23:27:15 |

| 2 | 2016-06-29 23:27:15 |

| 3 | 2016-06-29 23:27:15 |

| 4 | 2016-06-29 23:27:15 |

| 5 | 2016-06-29 23:27:15 |

| 6 | 2016-06-29 23:27:15 |

| 7 | 2016-06-29 23:27:15 |

| 8 | 2016-06-29 23:27:15 |

| 9 | 2016-06-29 23:27:15 |

| 10 | 2016-06-29 23:27:15 |

| 11 | 2016-06-29 23:31:03 |

| 12 | 2016-06-29 23:31:03 |

| 13 | 2016-06-29 23:31:03 |

| 14 | 2016-06-29 23:31:03 |

| 15 | 2016-06-29 23:31:03 |

| 16 | 2016-06-29 23:31:03 |

| 17 | 2016-06-29 23:31:03 |

| 18 | 2016-06-29 23:31:03 |

| 19 | 2016-06-29 23:31:03 |

| 20 | 2016-06-29 23:31:03 |

| 21 | 2016-06-29 23:41:06 |

| 22 | 2016-06-29 23:41:06 |

| 23 | 2016-06-29 23:41:06 |

| 24 | 2016-06-29 23:41:06 |

| 25 | 2016-06-29 23:41:06 |

| 26 | 2016-06-29 23:41:06 |

| 27 | 2016-06-29 23:41:06 |

| 28 | 2016-06-29 23:41:06 |

| 29 | 2016-06-29 23:41:06 |

| 30 | 2016-06-29 23:41:06 |

+----+---------------------+

30 rows in set (0.00 sec)

恢复完成

mysql数据库错误删除了怎么恢复数据

如果你要恢复的数据库是包含授权表的mysql数据库,您将需要使用--skip赠款-tables选项来运行服务器恢复整个数据库-否则,服务器会抱怨不能找到授权表。

恢复表后,执行mysqladmin冲水privileges告诉服务器装载授权表,并用它们来启动。

数据库目录到其他地方的原始内容复制。


分享文章:mysql数据错误怎么恢复 mysql数据恢复
文章源于:http://cdxtjz.cn/article/doseiej.html

其他资讯