单表 多个表转移
最近要表数据转移到演示环境奈何表比较大 Navicat导出老是罢工,线上mysqldump 会锁表。
数据端mysql版本8.0.22 恢复端mysql 8.0.17 大版本差不太多 即可,操作时未截图,现在拿数据恢复到本地给大家演示一下
1. 把要恢复的表ibd 打一下tar包,压缩一下 减少传输时间。(替换ibd无需重启mysql)
2.要恢复的库,需要创建一下表,会自动生成ibd,(表自己创这里就不做展示了)执行以下命令 删除生成的ibd文件
执行:ALTER TABLE table_name DISCARD TABLESPACE;
3.把要恢复的表解压完成后,给解压的ibd赋权mysql
chown -R mysql:mysql serviceorproductinfo.ibd
4.改完权限打命令 恢复表空间
ALTER TABLE table_name IMPORT TABLESPACE;
到这一步数据已经恢复咯!
下面说一下碰到的错误,网上查出来两种意思的
ERROR 1812 (HY000): Tablespace is missing for table
覆盖的文件没改权限
ERROR 1015 (HY000): Can't lock file (errno: 165 - Table is read only)
配置文件innodb_force_recovery。
整库恢复
这里不做具体描述,记录以下当时恢复的操作哈
环境:数据库A 和数据库B mysql date位置,bin位置一致。
1.拷贝A 数据整个data 到B,先把B停掉,完成替换在重启B,即可。