mysql5.7新装还原老数据
背景
测试环境的数据库,因为之前用户的错误升级操作,将mysql5.7换成了8.4,导致引擎不一致启动失败
恢复方案
找一台全新的机器,首先使用之前总结文章CentOS7安装MySQL5.7将MySQL搭建好,备份好data目录。
将之前机器的data目录进行替换,更改mysql用户授权,尝试启动。
这是一个链接 Markdown语法。
开始操作
重新安装 MySQL 5.7 并恢复原有数据是一个相对复杂的过程,但可以通过以下步骤完成。这些步骤假设您已经备份了原有的数据目录,并且新的 MySQL 安装已经完成。
1: 备份现有数据目录
如果您还没有备份现有的数据目录,现在是时候这样做。备份数据目录可以防止数据丢失。
cp -R /var/lib/mysql /var/lib/mysql_backup
2: 停止 MySQL 服务
确保 MySQL 服务已经停止,以避免数据损坏。
systemctl stop mysqld
3: 删除新的数据目录
删除新安装的 MySQL 的数据目录,以便恢复旧的数据目录。
rm -rf /var/lib/mysql
4: 恢复旧的数据目录
将备份的数据目录恢复到 /var/lib/mysql
mv /var/lib/mysql_backup /var/lib/mysql
5: 修改数据目录的所有权和权限
确保数据目录的所有权和权限正确。
chown -R mysql:mysql /var/lib/mysql
chmod -R 755 /var/lib/mysql
步骤 6: 初始化 MySQL 数据目录
初始化 MySQL 数据目录,以确保数据目录的结构正确。
mysql_install_db --user=mysql
步骤 7: 更新 MySQL 配置文件
确保 MySQL 配置文件(通常位于 /etc/my.cnf 或 /etc/mysql/my.cnf)中的数据目录路径正确。
vim /etc/my.cnf
确保包含以下行:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
[client]
socket=/var/lib/mysql/mysql.sock
8: 启动 MySQL 服务
启动 MySQL 服务并检查其状态。
systemctl start mysqld
systemctl status mysqld
9: 检查数据库恢复情况
登录到 MySQL 并检查数据库是否恢复成功。
mysql -u root -p
进入 MySQL 命令行后,列出所有数据库:
SHOW DATABASES;
10: 恢复个别数据库(可选)
如果您只需要恢复个别数据库,可以使用 mysqldump 和 mysql 命令进行恢复。
导出数据库(如果之前没有备份):
mysqldump -u root -p database_name > /path/to/backup/database_name.sql
导入数据库:
mysql -u root -p database_name < /path/to/backup/database_name.sql
总结
通过以上步骤,您可以成功地重新安装 MySQL 5.7 并恢复原有的数据。