mysql 从data中恢复数据库全过程解决方案

背景

因为数据库没有备份,ubuntu系统崩溃,无法进入系统启动mysql进行备份,但是可以通过pe进入服务器,mysql data文件是完整的,将data文件夹拷贝出,并尝试通过data进行数据恢复

准备

1.建立虚拟机

  • 下载和服务器器一样的系统,这里用到ubuntu1604,下载地址:
    http://releases.ubuntu.com/16.04/
    选择对应版本
    在这里插入图片描述
  • 建立虚拟机
    安装好virtualbox后,新建虚拟机,选择镜像,启动即可
    在这里插入图片描述

2.安装mysql

  • 安装mysql
    下载mysql对应版本
wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb

安装下载的发行包

sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb

一路选择ok
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
开始安装

sudo apt-get update

在这里插入图片描述

sudo apt-get install mysql-server

在这里插入图片描述
注:
其中两个弹窗
第一个是确认密码(设置数据库密码)
另一个是选择加密方式,工具较新选第一个,较老选第二个
下载时间略长稍作等待,到这就安装完成啦

  • 开启远程连接
    在这里插入图片描述
    当使用 grant 权限列表 on 数据库 to ‘用户名’@’访问主机’ identified by ‘密码’; 时会出现”……near ‘identified by ‘密码” at line 1”这个错误
    msyql8 版本已经将创建账户和赋予权限的方式分开了

解决办法:
分两步走
创建账户:create user ‘用户名’@’访问主机’ identified by ‘密码’;
赋予权限:grant 权限列表 on 数据库 to ‘用户名’@’访问主机’ ;(修改权限时在后面加with grant option)

create user root@'%' identified by '123456';
grant all privileges on *.* to root@'%' with grant option;
flush privileges;
  • 此时发现外网还是没法访问,需要关闭防火墙
ufw disable

navicate连接,可以正常访问
在这里插入图片描述

  • 重装
    查看当前安装版本
mysql --version

如果版本不对,进行卸载重装

sudo apt-get autoremove --purge mysql-server-8.0
sudo apt-get remove mysql-server
sudo apt-get autoremove mysql-server
sudo apt-get remove mysql-commo

迁移data文件

1.备份

迁移之前,先将新mysql的存储库进行备份,默认存储位置是/var/lib/mysql
将mysql整体备份

在这里插入图片描述

2.将要恢复的数据库挂载到虚拟机

注意是固定分配,自动挂载
在这里插入图片描述

3.覆盖

先停止mysql服务

service mysql stop

从备份库向目标库恢复数据,每个文件夹代表一个数据库
在这里插入图片描述

复制
可以一次复制多个数据库

cp -r xc_db xc_devops xc_iot xc_media xc_iot xc_media xc_pwn xc_tree /var/lib/mysql

重新启动mysql,发现什么都不显示
在这里插入图片描述

还需要复制配置文档,主要有这几个
ibdata1,ib_logfile0,ib_logfile1,ib_buffer_pool,auto.cnf, mysql.ibd
修改my.cnf,加入innodb_force_recovery=6

启动,报错
在这里插入图片描述
排除,发现复制前五个文件,mysql能正常启动。但不显示表,复制到mysql.ibd时,报错,mysql无法启动
在这里插入图片描述
重启 mysq,数据完美恢复
(一定要大小版本一致,如8.0.12,,必须一模一样)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值