MySQL是一种开源的关系型数据库,全球范围内广泛应用于各种领域。然而,有时我们不小心删除了MySQL数据库,导致数据的丢失。这时需要采取一些措施来恢复数据库。本文将介绍如何恢复意外删除的MySQL数据库。
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的皋兰网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
1. 环境准备
在恢复意外删除的MySQL数据库之前,我们需要先准备好以下环境:
1)备份文件:MySQL数据库备份文件是恢复数据库的重要依据。如果没有备份文件,那么数据恢复工作就会变得更加困难。建议在日常工作中定期备份MySQL数据库。
2)MySQL安装文件:如果数据恢复需要重新安装MySQL,那么MySQL安装文件就是必要的。可以从MySQL官网下载最新的MySQL安装文件。
3)恢复工具:有很多恢复工具可以用来恢复MySQL数据库,例如MySQLDump、MyISAMCHK和IBDTool等。我们需要根据实际情况选择一个合适的恢复工具。
2. 恢复步骤
接下来,我们将分步骤介绍如何恢复意外删除的MySQL数据库。
步骤1:检查数据备份
我们需要检查备份文件是否存在,并确认备份文件的完整性和可用性。如果有多个备份文件,我们需要选择最近的备份文件。如果备份文件没有问题,我们可以继续进行数据恢复工作。
步骤2:停止MySQL服务
在进行数据恢复之前,我们需要停止MySQL服务。可以使用以下命令来停止MySQL服务:
sudo systemctl stop mysql
步骤3:备份MySQL数据目录
在进行数据恢复之前,我们需要备份MySQL数据目录,以防止发生任何意外情况。可以使用以下命令来备份MySQL数据目录:
sudo cp -R /var/lib/mysql /var/lib/mysql.backup
步骤4:删除原始MySQL数据库
在进行数据恢复之前,我们需要删除原始MySQL数据库,以便重新创建一个新的MySQL数据库。可以使用以下命令来删除原始MySQL数据库:
sudo rm -rf /var/lib/mysql/*
步骤5:恢复MySQL数据库
现在,我们可以开始恢复MySQL数据库。如果使用MySQLDump恢复数据库,可以使用以下命令:
mysql -u [username] -p [database_name]
其中,[username]是用户名,[database_name]是数据库名称,[backup_file].sql是备份文件的名称。执行该命令后,系统会提示输入密码。请输入MySQL用户密码后,恢复工作将自动进行。
如果使用其他恢复工具,可以参考官方文档进行操作。
步骤6:重新启动MySQL服务
数据恢复完成后,我们需要重新启动MySQL服务。可以使用以下命令来启动MySQL服务:
sudo systemctl start mysql
这时,我们可以使用MySQL客户端查看是否已成功恢复数据库。如果恢复成功,我们可以进一步感谢数据备份工作的重要性,并为未来制定更好的数据备份计划。
3.
这是一个简单的MySQL数据库恢复流程。数据恢复过程可能因各种原因而出现意外,但我们可以采取以上步骤来保护数据安全。建议在日常工作中定期备份MySQL数据库,并尽可能使用更多的工具和策略来保护数据。我们也可以将该流程用作参考,根据实际情况进行优化和改进。
相关问题拓展阅读:
MySQL数据库备份与还原
备份和恢复数据
生成SQL脚本戚盯困
在控制台使用mysqldump命令可以用来生成指定数据库的脚本文本,但要注意,脚本文本中只包含数据库的内容,而不会存在创建数据库的语句!所则燃以在恢复数据时,还需要自已手动创建一个数据库之后再去恢复数据。
mysqldump –u用户名 –p密码 数据库名>生成的脚本文件路径
现在可以在C盘下找到mydb1.sql文件了!
注意,mysqldump命令是在Windows控制台下执行,无需登录mysql!!!
执行SQL脚本
执行SQL脚本需要登录mysql,然后进入指定数据库,才可以执行SQL脚本!!!
执行SQL脚本不只是用来恢复数据库,也可以在平时编写SQL脚本,然后使用执行SQL 脚本来操作数据库!大家都知道,在黑屏下编写SQL语句时,就算发现了错误,可能也不能修改了。所以我建议高念大家使用脚本文件来编写SQL代码,然后执行之!
SOURCE C:\mydb1.sql
注意,在执行脚本时需要先行核查当前数据库中的表是否与脚本文件中的语句有冲突!例如在脚本文件中存在create table a的语句,而当前数据库中已经存在了a表,那么就会出错!
还可以通过下面的方式来执行脚本文件:
mysql -uroot -p123 mydb1
mysql –u用户名 –p密码 数据库
这种方式无需登录mysql!
备份数据库困稿
使用mysqldump命令备份数据含尺棚库
还原数据库
1、使用mysql命令还原数据库
将谈则game_backup.sql 还原至 game 数据库:
2、使用source命令还原数据库
如果数据库过大,建议可以使用source命令
前言
MySQL 5.6引入了GTID,每个事务都会产生一个GTID,我们可以通过验证主从GTID来验证主从数据的一致性。
为了叙述简便,定义一个量ALL_GTID: 表示某个数据库实例上 所有存在过的 或 将要存在的事务 的GTID(包括已经被purge掉的事务)。
在讨论数据库可用性的场景中, 当发生主备切换时, 需要进行数据补偿。通过比较主备的ALL_GTID,可以确定需要补偿多少数据:
在实例存活的情况,可以在实例状态中查询ALL_GTID。
在实例崩溃的情况,无法在实例状态中查询ALL_GTID。可以通过查询BINLOG中的Previous-GTIDs计算来获得ALL_GTID。
下面列举与ALL_GTID相关的变量。
与ALL_GTID相关的变量
Previous-GTIDs
Previous-GTIDs格式如下(环境为MySQL5.7,日志手动flush binary logs获得):
查看新轮转出的BINLOG:
下面为mysql-bin.00001中包含的GTID:
请点击输入图片描述
然后再次flush binary logs:
请点击输入图片描述
mysql-bin.00002中是没有任何GTID的。
请点击输入图片描述
综上Previous-GTIDs是本身这个BINLOG文件前面的所有BINLOG的。
请点击输入图片描述
全局变量中的GTID相关的变量
请点击输入图片描述
变量解释:
gtid_executed 代表着server上所有事务执行产生的GTID(包含已经被purge的BINLOG中的GTID或者是手动set gtid_purged的GTID)。
gtid_purged 代表着已经被purge到的GTID。gtid_purged是gtid_executed的子集。
gtid_retrieved 是从机上relay_log中的GTID。
ALL_GTID 的计算
了解了GTID相关的变量之后,可以得到获得实例的All_GTID的的方法:
对象
方法
存活的Master实例 gtid_executed
存活的Slave实例 gtid_executed和gtid_retrieved的并集
非存活Master实例 最后一个BINLOG文件的Previous-GTIDs + 最后一个BINLOG文件中所有的GTID
非存活Slave实例 最后一个BINLOG文戚亏件的Previous-GTIDs + 最后一个BINLOG文件中所有的GTID
在获得非存活实例中的ALL_GTID时,最后一个BINLOG文件中的GTID可能不连续(比如事务同时来自于本实例客户端和复制回放),所以需要扫描最后一个BINLOG文件。
生产中我们使用Xtrabackup来产生一个 从实例 的流程如下:
拉取备份,进行还原
change master to
set @@global.gtid_purged=’xxx’;
set @@global.gtid_purged=’xxx’; 的影响:
将 从实例 的ALL_GTID手工置为xxx, 在通过GTID方式建立复制时不会出错.
将更新Binlog中记录的Previous-GTIDs (由于Binlog不可改变, 将产生新的Binlog, 记录新的Previous-GTIDs).
MySQL 5.7中set gtid_purged的行为变更
问题描述
回顾一下备份恢复的流历渣程:
拉取备份,进行还原
change master to
set @@global.gtid_purged=’xxx’;
现象: 发现有一台MySQL 5.7的Slave服务器恢复后没有产生 正确的Previous-GTIDs。
分析
分析整个过程,解决问题高烂神应该分阶段进行手动模拟发现问题。以下为详细步骤:
手工还原备份
环境
BINLOG数量,Previous-GTIDs状态
Xtrabackup 2.4.2 & MySQL 5.6 1,空
Xtrabackup 2.4.2 & MySQL 5.7 1,空
Xtrabackup 2.2.9 & MySQL 5.6 1,空
Xtrabackup 2.2.9 & MySQL 5.7 1,空
可见: 恢复过程不会轮转BINLOG。
验证change master和set gtid_purged在不同的MySQL版本中执行的差异
环境
BINLOG数量,Previous-GTIDs状态
change master & MySQL 5.6 1,空
change master & MySQL 5.7 1,空
set gtid_purged & MySQL 5.6 2,正常
set gtid_purged & MySQL 5.7 1,空
可见: 执行set gtid_purged时不同版本的MySQL产生了差异
验证
对不同版本MySQL单独执行set @@global.gtid_purged=”;语句。检查结果
环境
进行的操作
BINLOG数量,Previous-GTIDs状态
MySQL 5.7 reset master; set @@global.gtid_purged=”; 1,空
MySQL 5.6 reset master; set @@global.gtid_purged=”; 2,正常
结论
参考:
官方解释: 在5.7版本中,执行SET GTID_PURGED语句后binlog_simple_gtid_recovery会给GTID_PURGED计算出一个错误的值。
由于5.7中新增了存储GTID的表。所以5.7版本中set @@global.gtid_purged=”;语句被改成只修改存放GTID的表。
而5.6版本中会进行BINLOG轮转和向Previous_gtids_log_event中添加GTID。如果5.7需要产生和5.6相同结果的话,可以在SET GTID_PURGED语句后手动执行flush binary logs语句。
mysql删除的数据库怎么还原的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mysql删除的数据库怎么还原,如何恢复意外删除的MySQL数据库?,怎么备份和还原mysql数据库的信息别忘了在本站进行查找喔。
成都创新互联科技有限公司,是一家专注于互联网、IDC服务、应用软件开发、网站建设推广的公司,为客户提供互联网基础服务!
创新互联(www.cdcxhl.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。创新互联成都老牌IDC服务商,专注四川成都IDC机房服务器托管/机柜租用。为您精选优质idc数据中心机房租用、服务器托管、机柜租赁、大带宽租用,可选线路电信、移动、联通等。
名称栏目:如何恢复意外删除的MySQL数据库?(mysql删除的数据库怎么还原)
本文URL:http://www.shufengxianlan.com/qtweb/news15/96465.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联