本文目录一览:
- 1、MySQL+workbench+local+instance误删怎么找回?
- 2、MySQL误删数据后切勿跑路
- 3、把mysql数据库删了,请问可以恢复吗
- 4、不小心删掉了mysql数据库怎么办
- 5、MySQL 数据库被删了怎么办
- 6、mysql数据没有备份误删了怎么恢复
MySQL+workbench+local+instance误删怎么找回?
恢复整个数据库首先,如果要恢复的数据库是含有授权表的mysql数据库,将需要使用--skip-grant-tables选项运行服务器。否则,服务器将抱怨无法找到授权表。在恢复表之后,执行mysqladmin flush-privileges 来告诉服务器加载授权表,并用它们启动。将原数据库目录的内容拷贝到其他的地方。例如,您可能会在稍后用它们进行崩溃表的事后分析检查(post-mortem examination)。用最新的备份文件重新加载数据库。如果您打算使用由mysqldump 加载的文件,则需要将它们作为mysql的输入。如果打算使用从数据库中直接拷贝的文件(如,用tar 或c p),则将它们直接拷贝回到该数据库目录中。但是,在这种情况下,应该在拷贝这些文件之前关闭服务器,然后再重新启动它。用更新日志重做在进行备份后又修改了数据库表的查询。对于所有可用的更新日志,可使用它作为mysql的输入。指定--one-database 选项,使mysql只对想要恢复的数据库执行查询。如果您知道需要使用所有的更新日志文件,可在包含日志的目录中使用下列命令:% ls-t-r-l update.(0-9)* | xargs cat | mysql--one-database db_namels 命令产生更新日志文件的单列列表,更新日志文件根据服务器生成的顺序进行排序(要知道,如果您修改了其中的任何文件,排序的顺序都将改变,这将导致更新日志按错误的顺序使用)。您很可能必须使用某些更新日志。例如,如果自备份以来所产生的日志命名为update.392、pdate.393 等等,可以重新运行它们中的命令:% mysql--one-database db_name updata.392% mysql--one-database db_name updata.393…如果正在运行恢复并打算使用更新日志恢复由于失策的DROP DATA BASE、DROPTABLE或DELETE 语句而丢失的信息,应确保先从更新日志中删除这些语句。恢复单个的表恢复单个表是很困难的。如果有通过mysqldump 生成的备份文件并且它恰好不包含您想要的表数据,则需要抽取相关的行并用它们作为mysql的输入,这部分较容易。困难的是抽取应用于该表的更新日志的片段。您会发现: mysql_find_rows 实用程序对这方面有帮助,它可以从更新日志中抽取多行查询。另一种可能性是用另一个服务器恢复整个数据库,然后将所要的该表的文件拷贝到原始数据库中。这实际很容易!在将文件拷贝回数据库目录时,应确保原始数据库的服务器关闭。
MySQL误删数据后切勿跑路
误删数据的几种操作
如何事前预防误删数据?
误删行数据恢复
误删行数据恢复可以使用 Flashback工具 。
Flashback恢复数据的原理是通过修改binlog内容,拿回原库进行回放,前提是 binlog_format=row和binlog_row_image=FULL 。
在使用Flashback进行恢复的时候, 不建议在主库上进行操作 ,比较安全的做法是恢复出一个备份,或者找一个从库作为临时库,在这个临时库上执行操作,然后再将确认过的临时库的数据恢复到主库。
误删库/表
drop table或者truncate table误删数据表 无法通过Flashback工具恢复 ,因为binlog_format的格式即使是ROW模式,在binlog中记录的也只是一条drop table或者truncate语句,因此无法进行恢复。
此时恢复的方式需要 全量备份加增量日志的方式进行恢复 ,因此要求数据有定期的全量备份,并且实时备份binlog。
假如某人在中午12点误删除了一个库里的某张表,恢复数据的流程如下:
mysqlbinlog恢复数据慢的原因?
如何更快的恢复误删的表?
在用备份恢复出临时实例以后,将这个临时实例设置成线上备库的从库:
假设此时备库的binlog已经被删除,那么需要去binlog备份系统找到删掉的日志文件拷贝到日志目录下,假设文件名是master.000001,打开日志目录下的binlog的index文件,在开头加入master.000001,让备库重新识别此日志文件
延迟复制备库
以上恢复都具有时间不可控性,如果采用上述步骤进行恢复,建议开发成工具(甚至可以做自己的DBA自动化平台),并大量测试后进行使用,避免手动误操作带来更大的问题。
一般的主备复制存在的问题是,假设主库上的表被删除,这个命令很快会被发给所有从库,进而导致从库的数据表也被一起误删除。
延迟复制备库 是可以持续保持与主库有N秒延迟的备库 。
假设这里N=3600,那么表示只要在1个小时以内发现了误删除,就可以的到备库上执行stop slave,再通过之前讲到的方法,跳过误操作的命令(比如将误删除的GTID加到实例集合中),就可以恢复出需要的数据。
rm误删
只要你的集群是高可用,如果rm删除了某个节点(只要不是恶意删除所有节点),HA系统会自动开始工作,选出一个新的主库,从而保证集群工作。
把mysql数据库删了,请问可以恢复吗
1.如果有备份,恢复备份数据就可以。
2.如果在企业管理器里删除了数据库,如果有备份,恢复备份数据就可以。
3. 如果你是在程序里卸载sql程序,数据就在sql安装目录里,附加数据库就可以了。
4.如果备份数据都没有,可以找个硬盘数据恢复公司。
不小心删掉了mysql数据库怎么办
mysql数据库不小心还原了需要按照以下步骤恢复。
1、先确认mysql有没有启用bin日志 ,就是看下mysql.ini(my.cnf)里的log-bin=mysql-bin, 可以 自定义一个目录和前缀名,比如/data/log/mylog这样。
2、然后在数据库文件存放的data目录就能看到mysql-bin.00000x这样的文件,这就是二进制日志了,可以导出成txt格式的,里面其实就是对数据库的各种操作sql语句。
3、导出txt文件:
e:\wamp\bin\mysql\mysql5.6.12\binmysqlbinlog
--database=testdatabase
e:\wamp\bin\mysql\mysql5.6.12\data\mysql-bin.000312
c:\\test1.txt
这是windows下的导出,linux也是类似的。
database=数据库名
从最早的日志还始还原
linux下可以很方便的 mysql-bin.000*
可以加参数开始时间和结束时间,就是你执行那条sql语句的时间
start-datetime="2014-12-04
11:25:56"
--stop-datetime="2014-12-04
13:23:50"
4、恢复数据:
e:\wamp\bin\mysql\mysql5.6.12\binmysqlbinlog
--database=yundongchao
e:\wamp\bin\mysql\mysql5.6.12\data\mysql-bin.000179
|
mysql
-u
root
-p
------------------------------------------------
MySQL 数据库被删了怎么办
如果有备份,找到备份文件,复制到MySQL数据库目录中,重启服务即可。
如果没有备份,尽快停止MySQL和其它会写磁盘的软件,然后用数据恢复软件尝试恢复数据库目录下的已删除文件。恢复成功后重新启动MySQL服务。
mysql数据没有备份误删了怎么恢复
打开mysql的bin log功能:
对于mysql也是支持增量备份,但要打开mysql的bin log功能。
我们修改mysql的配置文件。linux是/etc/my.cnf,windows是mysql的安装目录/my.ini
我们在[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 (0.00 sec)
mysql delete from sn_test;
Query OK, 4 rows affected (0.00 sec)
mysql select * from sn_test;
Empty set (0.00 sec)
4、mysqlbinlog恢复数据
mysqlbinlog mysql-bin.000006 1.sql
查看1.txt里面数据插入的纪录,把删除之前的数据进行恢复
mysqlbinlog mysql-bin.000006 --start-position=2471 --stop-position=2876 | mysql -uroot -p123
重新登录,查看数据,OK,已经成功恢复了
对于数据库操作,应该注意如下问题:
1、要常备份(全备,增量备份),出了问题可以最快恢复数据;
2、操作数据库前,要把需要操作的数据库或者表dump出来;
3、需要把bin-log打开,就算没有做上面的两步,也可以通过日志恢复数据