mysql 数据库通过拷贝文件恢复(物理恢复)

本文详细介绍了如何将MySQL数据库从一台服务器迁移到另一台,包括全库或单库拷贝、删除特定文件、重建表结构及数据恢复的步骤。通过执行SQL语句和操作.ibd文件,实现了数据的完整迁移。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1、把data内数据库(MySQL5.7.26/data)拷贝到另外一台服务器

一个文件夹是一个数据库,看是全部拷贝还是单个拷贝都可以

3599d869479746a28ad13c5bf8442351.png

2、 删除数据库下的.ibd(数据文件)和.frm(结构文件), db.opt不要删除(db.opt每个数据库文件只有一个)

f4856101511548c9b9c8c393c61cc1a8.png

 3、执行建表sql,新建一样的表结构(新的要还原的数据库)

把原数据库表结构导出一份,导入到新数据库

68d18692db41472c917a2a7fe55277a2.png

4、执行下面语句删除数据库.ibd文件,从原数据库中拷贝.ibd过来;

单表操作
删除
ALTER TABLE table_name DISCARD TABLESPACE;

ALTER TABLE 要生成的表名 DISCARD TABLESPACE;

删除成功后,复制对应表.ibd文件到数据库在执行恢复

恢复
ALTER TABLE 表名 IMPORT TABLESPACE;

下面是批量操作

4.1、获得所有表方法(cdj_shop是数据库,TABLE_NAME 是数据库表)

select TABLE_NAME from information_schema.COLUMNS where TABLE_SCHEMA="cdj_shop" GROUP BY TABLE_NAME;

238d46eefa8248c6943cd925da70eff7.png

 4.2、拼接(删除数据库.ibd文件语句)

插入,恢复数据 ALTER TABLE 表名 IMPORT TABLESPACE;
复制去数据库执行

e114b30c2c494724b283e8d22242ee92.png

 .ibd数据文件已全部删除

21a2bfa976fe4c7fb31e465911c7f105.png

 

拷贝.ibd数据文件过来,搜索出来全部拷贝过去

cf948044993d40a59f5e2c72e3f838e5.png

 

复制去数据库执行导入,恢复

d7d9212b0876475cb4758c98d03624c2.png

完成后,数据全部恢复上来了

d69323f08bf8477584d666594bbbee5c.png

 

 

### MySQL 数据库备份与恢复的方法教程 #### 一、为何要进行数据库备份 为了防止数据丢失,保障业务连续性和数据安全性,定期备份数据库至关重要[^2]。 #### 二、使用 `mysqldump` 工具进行逻辑备份 `mysqldump` 是一种用于创建 SQL 脚本文件的工具,该脚本包含了重建整个数据库所需的信息。此方式适用于较小规模的数据集以及需要跨版本迁移的情况。 执行如下命令可以完成一次完整的数据库导出操作: ```bash mysqldump -u root -p mydatabase > /path/to/mydatabase_backup.sql ``` 上述指令会提示输入密码并生成一个名为 `mydatabase_backup.sql` 的文件,其中保存着所有表结构定义语句及记录插入语句[^1]。 对于较大容量的数据库来说,建议采用压缩功能来减少磁盘空间占用率: ```bash mysqldump -u root -p mydatabase | gzip > /path/to/mydatabase_backup.sql.gz ``` 当需要还原这些被压缩过的备份时,则需先解压再导入: ```bash gunzip </path/to/mydatabase_backup.sql.gz| mysql -u root -p mydatabase ``` #### 三、物理备份方案概述 除了基于SQL级别的逻辑备份外,还可以考虑直接复制MySQL服务器内部存储引擎所使用的实际文件作为另一种形式——即所谓的“冷备”。不过这种方法通常只适合于特定场景下的离线维护工作,并且要求目标环境具有完全相同的配置参数设置[^4]。 更推荐的方式是在不影响在线服务的前提下利用LVM快照技术或其他第三方软件产品实现热备效果;但具体实施细节取决于操作系统平台和个人偏好等因素,在这里不做过多展开讨论。 #### 四、从备份中恢复数据 假设已经拥有了之前提到的各种类型的备份副本之一,那么可以根据实际情况选择相应的恢复手段: - 对于由 `mysqldump` 创建的标准SQL转储文件而言,只需简单地将其重定向给客户端程序处理即可达成目的: ```bash mysql -u root -p mydatabase < /path/to/mydatabase_backup.sql ``` - 如果是未经修改就直接拷贝过来的数据目录,则应当确保源路径下不存在同名实例后再按照官方文档指示逐步替换原有内容[^3]。 总之,无论是哪种途径都务必提前做好充分准备,包括但不限于确认权限授予情况、测试连接稳定性等基础事项,以免造成不必要的麻烦。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大得369

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值