我正在尝试为 InnoDB 表中有 4 亿多行的 MySQL 8 DB 找到备份/恢复过程。MySQLdump 需要几天时间,因此我现在正在尝试:
- 在 DB 文件夹上挂载 LVM 卷
- 创建 LVM 快照
- 从快照在其他服务器上恢复
文件都在那里,但是 MySQL 无法启动:
2021-07-04T15:48:14.415660Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2021-07-04T15:48:14.637407Z 1 [ERROR] [MY-012209] [InnoDB] Multiple files found for the same tablespace ID:
2021-07-04T15:48:14.637473Z 1 [ERROR] [MY-012202] [InnoDB] Tablespace ID: 196 = ['test/SUM_stats_cat_d.ibd', 'website/wp_actionscheduler_actions.ibd']
显然,要复制的不仅仅是数据库的简单文件夹。本地服务器还保存着其他数据库,这些数据库似乎与导入存在冲突。
有办法解决这个问题吗?如果没有,那么更好的备份/恢复策略是什么?
答案1
我认为 LVM 需要在磁盘空闲时建立——它涉及划分设备的一部分。
LVM 处理整个磁盘分区,而不仅仅是目录树。
在创建快照并在另一台服务器上使用它之间,您必须将其复制到另一台服务器。
我更喜欢在制作快照时停止 mysqld,但理论上这不是必需的。
就速度而言,LVM 是迄今为止最快的。