备份和恢复MySQL数据库,无需系统访问

我试图将数据库从一个提供程序移动到另一个提供程序,问题是我没有系统访问任何一端(即没有SSH),所以我不能使用mysqldump。

我已经尝试过使用MySQLpipe理员,备份大约需要45分钟,但是恢复时,它正在以蜗牛的速度运行,估计超过12个小时。 这是一个实时应用程序,所以我需要把停机时间降到最低。

数据库由35个表格组成,这个表格是MyISAM和InnoDB的混合物,整个事情达到约4.4GB。 源数据库和目标数据库都运行在非常强大的服务器上。

任何build议,快速这样做将受到感谢。

谢谢

海量数据加载的一些旧技巧(适用于任何基于SQL的数据库,包括事务,UDF和触发器等高级function):

  1. 如果你的加载机制允许的话,把你的InnoDB表转换成巨大的1000条logging事务。 一次发送logging会产生大量事务性开销,但一次发送1,000条logging会使开销变得微不足道。
  2. 如果您有触发支持,请在加载过程中禁用触发器。
  3. 在加载之前closures约束,并在加载之后应用它们。 这包括索引,删除它们并在数据加载后重build索引。 在批量数据加载过程中维护索引的开销会大大减缓。

较新版本的MySQL允许复制; 您可以随时将数据复制到另一台计算机上,然后在复制完成时将您的应用程序切换到指向新计算机并closures复制。

如果可以,将表格内容放入CSV或tab-delim,并使用“ LOAD DATA ”命令 – 对于批量加载数据,通常比单个插入快得多。

你能够从新的数据库运行原始数据库吗? 如果是这样的话,创build一个脚本(甚至可以将PHP作为一个没有输出的网页运行)从原始服务器吮吸数据,并将其推入新的,从而消除中间系统。