mysql通过idb文件,恢复数据库

您所在的位置:网站首页 cache的文件怎么打开 mysql通过idb文件,恢复数据库

mysql通过idb文件,恢复数据库

2023-09-23 19:25| 来源: 网络整理| 查看: 265

原因: 由于一次未知原因,服务器停机后,导致数据库不能启动,由于刚接手项目,对此数据库的配置不是那么清晰,分析了很多,最后还是没发正常启动。由于发现数据idb文件还在,最后就采取了险招,重新安装mysql,通过mysql的idb文件来恢复数据。

解决:

第一步: 完全卸载mysql数据库 ubantu 彻底卸载mysql sudo apt-get autoremove --purge mysql-server sudo apt-get remove mysql-common sudo rm -rf /etc/mysql/ /var/lib/mysql #清理残留数据 dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P sudo apt autoremove sudo apt autoclean 第二步: 重新安装mysql数据库

Ubantu下安装mysql8可自行百度;参考链接:https://www.linuxidc.com/Linux/2018-11/155408.htm

安装后可能出现: mysql 数据库不允许远程连接: ‘Host’ is not allowed to connect to this mysql server

方法一:修改 host 表 进入mysql数据库,选择mysql mysql> use mysql; 选择 host 表 mysql> select host from user; 更新 host, 然后退出。 mysql> update user set host = '%' where user='root'; 重启数据库, 完成。 service mysqld restart

如果报错:Access denied for user ‘XXX’@’XXX’ (using password: YES) 请参考我的另一篇博文: https://blog.csdn.net/qq_23035335/article/details/100522054

第三步:恢复数据

通过idb文件 恢复mysql数据

首先需要一个跟要恢复的表结构完全一致的表。 (在建表语句末尾加上 ROW_FORMAT=compact 或 ROW_FORMAT=DYNAMIC(mysql8默认);(InnoDB的行记录格式有 Compact, Redundant, Compressed, Dynamic,具体要看自己的mysql用的是哪种)备份的表结构可以从备份库,测试库搞定表结构,可以删掉外键约束,后面执行会方便很多。)然后执行ALTER TABLE 表名 DISCARD TABLESPACE。(ALTER TABLE table_name DISCARD TABLESPACE) (这里一定不能手动删除ibd文件,如果删除了会导致mysql停止后无法重启)把要恢复的ibd文件复制到mysql的data文件夹下。 (默认路径是/var/lib/mysql/数据库名,在执行恢复之前,就应该已经知道了数据存储目录,同时也把所有的idb文件已备份,用于恢复。copy到目标位置后得检查下权限,是不是mysql:mysql,不然执行下面的导入语句时会报错:找不到对应的idb,实际可能是对应的idb文件权限不足)然后执行ALTER TABLE 表名 IMPORT TABLESPACE。(ALTER TABLE table_name IMPORT TABLESPACE)

完成,数据恢复成功,表很多的话可以采取一些批量处理措施,不然工作量会有点大。

附:导出数据库到文件 /usr/bin/mysqldump -u root -密码 --default-character-set=utf8 数据库名> ./database_db.sql



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3