MySQL是一种开源的关系型数据库管理系统,广泛应用于企业级应用中。然而,由于各种原因,MySQL表中的数据有时会被误删除或损坏。在这种情况下,恢复数据是至关重要的。
盘州网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。成都创新互联成立于2013年到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联。
本文将介绍如何使用Linux系统来恢复MySQL表中的数据。以下是具体步骤:
步骤一:查看MySQL的重要文件
在Linux系统中,MySQL的文件存储在“/var/lib/mysql/”目录下。检查该目录中的“ibdata1”,“ib_logfile0”和“ib_logfile1”三个文件是否存在。这些文件保存了MySQL表的数据和日志信息。
步骤二:停止MySQL服务
在恢复数据之前,需先停止MySQL服务。使用以下命令来停止MySQL服务:
sudo systemctl stop mysql
步骤三:备份MySQL表
在恢复数据之前,更好先备份MySQL表以防止数据丢失。使用以下命令来备份MySQL表:
sudo mysqldump -u username -p database_name table_name > table_name.sql
上述命令将备份指定的表并将其保存到“table_name.sql”文件中。其中,“username”是MySQL用户的用户名,“database_name”是要备份的数据库名称,“table_name”是要备份的表名称。
步骤四:删除损坏的数据文件
在“/var/lib/mysql/”目录中,先将损坏的文件备份一下,然后将其删除。
步骤五:恢复数据
MySQL的数据会保存在“/var/lib/mysql/”目录下的“ibdata1”,“ib_logfile0”和“ib_logfile1”文件中。通过以下步骤,可以尝试使用这些文件来恢复MySQL表的数据:
1. 使用以下命令启动MySQL服务:
sudo systemctl start mysql
2. 使用以下命令进入MySQL:
mysql -u username -p
3. 创建一个空白数据库:
create database new_database_name;
4. 选择新数据库:
use new_database_name;
5. 导入备份的数据:
source /path/to/table_name.sql;
6. 导入数据后,使用以下命令恢复表数据:
REPR TABLE table_name USE_FRM;
7. 退出MySQL:
exit;
恢复MySQL表中的数据可能需要一些时间,因此请耐心等待。
步骤六:验证数据恢复
在恢复数据后,请使用以下命令验证数据是否正确:
sudo mysql -u username -p database_name -e “SELECT * FROM table_name;”
该命令将显示表中的所有数据。
结论
MySQL表中的数据很重要,因此在任何时候都应定期备份并确保其安全。但是,如果数据不幸丢失或损坏,使用上述步骤可以使用Linux系统来恢复MySQL表中的数据。但请注意,在使用这些步骤之前,请确保备份了数据,以防止丢失数据。
相关问题拓展阅读:
恢复整个数据库首先,如果要恢复的数据库是含有授权表的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
个人建议,mysql 备份和还原 我一般 用Navicat 快速 简单, 定时备份的话 采用 linux 定时器
前言
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语句。
使用MYSQ的备份程序和shell编凳茄程, 能做到完美的数据伍喊备份和还原的哦, 能否看看wo 的网名的 啊?—–>一定腔粗野能解决的 !!
linux mysql表内容恢复数据的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux mysql表内容恢复数据,如何使用Linux恢复MySQL表中的数据,怎样备份/还原MySQL数据库 之 MySQL Workbench,我用的是阿里云linux服务器,数据库是MySQL,怎样用备份数据,恢复数据库呢备份文件里有frm myd myi的信息别忘了在本站进行查找喔。
香港服务器选创新互联,2H2G首月10元开通。
创新互联(www.cdcxhl.com)互联网服务提供商,拥有超过10年的服务器租用、服务器托管、云服务器、虚拟主机、网站系统开发经验。专业提供云主机、虚拟主机、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。
本文题目:如何使用Linux恢复MySQL表中的数据(linuxmysql表内容恢复数据)
URL分享:http://www.shufengxianlan.com/qtweb/news28/105128.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联