在实例在线时移动 MySQL 数据库

在实例在线时移动 MySQL 数据库

我有一个包含多个数据库的 MySQL 实例,其中一个是存档数据库(虽然使用 INNODB 而不是 ARCHIVE 存储引擎),在正常运行中不会被查询或写入。

数据文件系统已满,我想将存档数据库的数据目录移至其他文件系统(然后显然将其符号链接回来)。如果在移动过程中没有 SQL 语句尝试查询或更新数据,我可以在 MySQL 实例和其他数据库保持在线并使用的情况下安全地执行此操作吗?

我计划将数据库目录 rsync 到新的文件系统,然后将原始文件系统上的旧目录重命名为其他名称并创建新的符号链接。lsof 报告 MySQL 确实打开了 .ibd 文件,因此大概必须重新打开它们。

答案1

对于传输来说,最好的选择是设置一个触发器,这样当在旧数据库中创建某些内容时,就会在新数据库中模仿它。

然后,您可以启动并更改数据库客户端指向的位置,而不必担心数据过时。

答案2

我使用 MYISAM 存储引擎做到了,但我认为使用 INNODB 也会是一样的:

mysql“热复制”和符号链接

相关内容