mysql删除数据库没有备份怎么恢复

mysql删除数据库没有备份怎么恢复,第1张

打开mysql的bin log功能:

对于mysql也是支持增量备份,但要打开mysql的bin log功能。

我们修改mysql的配置文件。linux是/etc/mycnf,windows是mysql的安装目录/myini

我们在[mysqld]下面加上log-bin一行代码,如下面。

[mysqld]

log-bin=mysql-bin

复制代码

加完后重起mysql即可。

某客户更新数据的时候,误删了数据库的内容,因为数据库做了主从,但是没有做备份(备份很重要啊!)幸好开启了bin-log,之后只好把整个日志的记录拿回来本地进行恢复。

之后自己也做了一个简单的测试,对数据进行恢复,具体如下:

1、新建一个表

CREATE TABLE `lynn``sn_test` ( `name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL , `age` INT( 3 ) NOT NULL ) ENGINE = MYISAM;

2、插入多条数据

INSERT INTO `lynn``sn_test` (`name`, `age`) VALUES ('lynn1', '1');

INSERT INTO `lynn``sn_test` (`name`, `age`) VALUES ('lynn2', '2');

INSERT INTO `lynn``sn_test` (`name`, `age`) VALUES ('lynn3', '3');

INSERT INTO `lynn``sn_test` (`name`, `age`) VALUES ('lynn4', '4');

3、查看数据并删除

mysql> select from sn_test;

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

| name | age |

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

| lynn1 | 1 |

| lynn2 | 2 |

| lynn3 | 3 |

| lynn4 | 4 |

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

4 rows in set (000 sec)

mysql> delete from sn_test;

Query OK, 4 rows affected (000 sec)

mysql> select from sn_test;

Empty set (000 sec)

4、mysqlbinlog恢复数据

mysqlbinlog mysql-bin000006 > 1sql

查看1txt里面数据插入的纪录,把删除之前的数据进行恢复

mysqlbinlog mysql-bin000006 --start-position=2471 --stop-position=2876 | mysql -uroot -p123

重新登录,查看数据,OK,已经成功恢复了

对于数据库 *** 作,应该注意如下问题:

1、要常备份(全备,增量备份),出了问题可以最快恢复数据;

2、 *** 作数据库前,要把需要 *** 作的数据库或者表dump出来;

3、需要把bin-log打开,就算没有做上面的两步,也可以通过日志恢复数据

因为磁盘空间不足,我的一个虚拟机服务器崩溃了。结果数据库服务器进程无法启动,数据也就无法导出。只能想办法从数据库原始文件 ibdata 和 frm 文件中恢复数据库。

因为没有经验,好不容易才找到了恢复方法。特此记录,以备后用。

磁盘空间不足之后,mysqld 进程无法启动,提示“Can't connect to local MySQL server through socket '/var/lib/mysql/mysqlsock' (2)”。这真是让人无比头大,数据库根本连接不上。

目录 Contents

1 保存原始数据库文件

2 恢复方法

3

参考资料:

1 保存原始数据库文件¶

好在数据库原始文件还在。在我的系统环境和配置情况下,这些文件位于 /var/lib/mysql/ 文件夹下面。假设数据库名是 test,则这些文件表现为:

--mysql

|--test

|--1frm

|--2frm

|

|--mysql

|

|--ib_logfile0

|--ib_logfile1

|--ibdata1

|

这些就是原始数据库文件,可以用来恢复数据库。将这些文件额外保存一份,以防万一。

2 恢复方法¶

我的原始虚拟机完全没有磁盘空间而无法启动数据库服务器进程。虽然试着删除一些不需要的文件,但是数据库却始终无法连接。于是我新建了一个几乎一样的虚拟机(当然磁盘加大了),试图将这些数据库文件导入并恢复数据库。

在经历了很多错误之后,终于找到了正确的方法:

安装完成新服务器之后,通过命令行新建了与原来一样的数据库:数据库名称、用户名、密码都一样。如果有多个数据库需要恢复,就都给建好。(跟配置新服务器一样,参见安装和配置 MYSQL 数据库服务器。)

停止 mysqld 进程

service mysqld stop

将备份的原始数据库文件中的所有 frm 文件(保持原来的目录结构)和 ibdata1 文件复制到新服务器的数据库文件目录中(如果新服务器 *** 作系统和配置环境一样,那么目录结构也一样),其它文件不要。

使用 -innodb_force_recovery=6参数启动数据库服务器进程,这里是

/etc/initd/mysqld start -defaults-file=/etc/mycnf -standalone -console -innodb_force_recovery=6

OK,数据库恢复完成。

SQL2000数据库的备份概念

SQL

SERVER

2000有四种类型是:数据库、事务日志、差异、文件和文件组

数据库备份是创建完事数据库的复本。它并非将所有的页都复制到备份集,而只将实际包含数据的页复制到备份集。数据页和事务日志页均复制到备份集。

数据库备份用于重新创建数据库,使其恢复到BACKUP语句完成时的状态。如果数据库只存在数据库备份,那么数据库只能恢复到服务器或数据库发生故障前最后一次数据库备份时的状态。

事务日志备份仅制作日志文件的复本。日志文件备份本身不能用于还原数据库。日志文件用于在数据库还原后将数据库恢复到原始故障点。

例如,某站点在星期天晚上执行数据库备份,而在其它每个晚上执行日志备份。如果数据库的某个数据磁盘在星期二2:30丢失,则该站点可以:

1备份当前事务日志

2还原从星期天晚上开始的数据库备份

3还原从星期一晚上开始的日志备份,以将数据库前滚。

4还原故障之后的日志备份。这将使数据库前滚到故障发生的那一刻。

事务日志恢复需要从数据库备份的那一刻到磁盘丢失那一刻之间所进行的一边串不间断的事务日志备份。

差异备份只追寻数据库中自上一次数据库备份之后修改过的所有页的复本。差异日志主要用于使用频繁的系统,一旦这类系统中的数据库发生故障,必须尽快使其重新联机。差异备份比完事数据库备份小,因此对正在运行的系统影响较小。

例如,某个站点在星期天晚上执行完事数据库备份。在白天每隔4小时制作一个事务日志备份集,并用当天的备份重写头一天的备份。每晚则进行差异备份。如果数据库的某个数据磁盘在星期四上午9:12出现故障,则该站点可以:

1备份当前事务日志。

2还原从星期天晚上开始的数据库备份。

3还原从星期三晚上开始的差异备份,将数据库前滚到这一时刻。

4还原从早上4点到8点的事务日志备份,以将数据库前滚到早上8点。

5还原故障之后的日志备份,这将使数据库前滚到故障发生的那一刻。

SQL2000支持备份或还原数据库中的个别文件或文件组。这是一种相对较完善的备份和还原过程,通常用在具有较高可用性要求的超大型数据库中。如果可用的备份时间不足以支持完事数据库备份,则可以在不同的时间备份数据库的子集。

例如,某站点需要花三小时备份数据库,并且每天只能用两个小时执行备份。该站点可在一个晚上备份一半文件或文件级,并在第二个晚上备份另一半。如果包含数据库文件或文件组的磁盘出现故障,那么该站点可以只还原丢失的文件或文件组。

该站点还必须进行事务日志备份,并且在备份文件或文件组之后必须还原所胡事务日志备份。还可以从完事数据库备份集中还原文件和文件组。这将回忆恢复速度,因为在第一步只还原已损坏的文件或文件组,而不是整个数据库。

以上就是关于mysql删除数据库没有备份怎么恢复全部的内容,包括:mysql删除数据库没有备份怎么恢复、如何用ibdata1文件恢复数据库、数据库的备份与恢复等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9312681.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存