重要环境的虚机崩溃,数据库没有做过备份.大神紧急抢救出来的只能是系统盘里的数据(var/lib/mysql)记录一下艰辛恢复过程,希望能帮助到大家.
建议:在执行恢复时候,建议现在本地测试一下,环境不同可能效果不同
本实验针对对象:
mariadb数据库(源数据库名称为myDtabases;)
centos系统
数据库是Innodb引擎
准备条件:
1.源数据库的/var/lib/mysql下的数据库名称命名的文件夹及其内容(myDtabases).
2.源数据库/var/lib/mysql下的ibdata1文件
3.目的主机已经安装mariadb数据库
开始恢复:
1.将目的主机上的mariadb停止;
systemctl stop mariadb.service
2.将源数据库myDtabases文件夹拷贝到目的主机/var/lib/mysql下
3.将源数据库ibdata1拷贝到/var/lib/mysql下(替换掉原来的)
4.修改权限
chmod 660 myDtabases/* ibdata1
chown -R mysql:mysql myDtabases ibdata1
chmod +x myDtabases
5.启动目的主机上的mariadb
systemctl start mariadb.service
6.用root用户登录数据库查看是否恢复
坑:
1.当时用的是其他账户登录的数据库,show databases;的时候没有发现myDtabases.最后发现是需要root用户才可以.
2.select * from tableName;时候显示不存在,后来发现是myDtabases没有可执行权限的问题,所以一定要添加目录的可执行权限
针对MyIASM引擎的恢复
网上文档记录只要将myDtabases拷贝到/var/lib/mysql下,并修改权限即可(其他步骤和上面记录的InnoDB引擎恢复一样,不再需要拷贝ibdata1).但是本人没有实验过.
恢复时候,如何区分两种引擎类型
1.进入到/var/lib/mysql
/数据库名称 的文件下,看下表的类型
2.“InnoDB”类型,这种类型的一个表在磁盘上只对应一个“*.frm”文件
3.MyISAM“ 类型,一个表在磁盘上对应“*.frm*" ".MYD,*" ".MYI”文件。