bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
接下来是恢复MySQL数据库。原理很简单,跟迁移MySQL没区别,就是将原MySQL文件迁移到新的目录,然后起库。首先在新的虚拟机“71”上面安装跟故障虚拟机中相同版本的MySQL(安装过程略……)。查看原MySQL的参数文件,确定MySQL日志文件和数据文件的目录。
[root@oracletest root]# cat /newmnt/etc/my.cnf
[mysqld]
# basic settings #
...
basedir = /usr/local/mysql
datadir = /opt/mydata/data
tmpdir = /opt/mydata/tmp
log_bin = /opt/mydata/log/binlog/binlog
...
查看原MySQL的数据文件。
[root@oracletest root]# cd /newmnt/opt/mydata/
[root@oracletest mydata]# ll
total 12
drwxr-xr-x 6 995 1000 4096 Feb 11 14:03 data
drwxr-xr-x 4 995 1000 4096 Feb 11 14:03 log
drwxr-xr-x 2 995 1000 4096 Feb 11 14:03 tmp
创建相关目录。
mkdir -p /opt/mydata/data
mkdir -p /opt/mydata/tmp
mkdir -p /opt/mydata/log/binlog
chown -R mysql:mysql /opt/mydata
拷贝MySQL文件到对应的目录。
cp -r /newmnt/etc/my.cnf /etc
cp -r /newmnt/opt/mydata/data /opt/mydata/
cp -r /newmnt/opt/mydata/log/binlog /opt/mydata/log/
chown -R mysql:mysql /opt/mydata # 这一步的目的是由于原始文件在挂到新的机器上时所属用户和所属组会丢失,需要重新更改成mysql组
启动MySQL。
[root@oracletest ~]# service mysql start
Starting MySQL.2021-04-08T11:39:26.437943Z mysqld_safe error: log-error set to '/opt/mydata/log/error.log', however file don't exists. Create writable for user 'mysql'.
The server quit without updating PID file (/opt/mydata/data[FAILED]est.pid).
报错,提示没有error.log,那就创建一个,再启动MySQL。
[root@oracletest ~]# touch /opt/mydata/log/error.log
[root@oracletest ~]# chown -R mysql:mysql /opt/mydata/log/error.log
[root@oracletest ~]# service mysql start
Starting MySQL.. [ OK ]
可以看到数据库的表也找回来了!
四、总结
只要没有删除数据库的数据文件,即使系统起不来了,我们仍然可以将系统的盘拆下来挂到新的机器上,将数据拷贝出来。
养成备份的习惯,正式、仿真、开发、测试环境都需要。