复制ibdata1文件后,MySql不会启动

复制ibdata1文件后,MySql不会启动,mysql,database-backups,Mysql,Database Backups,我们需要将大约70GB的模式从windows服务器上的MySql社区版复制并转储到另一台机器上。对我们来说,执行mysqldump并不理想,因为这是一个生产服务器,转储会降低速度 因此,我们考虑将数据文件复制到新机器上,然后简单地启动MySql。但是 一些实际数据显然在ibdata1文件中,并且在ibdata1中包含数据的表生成表在引擎错误中不存在 所以我们认为我们也应该将ibdata1复制到新机器上。我们做到了。现在,新机器上的MySql无法启动 我们尝试删除ib_logfile0和ib_lo

我们需要将大约70GB的模式从windows服务器上的MySql社区版复制并转储到另一台机器上。对我们来说,执行mysqldump并不理想,因为这是一个生产服务器,转储会降低速度

因此,我们考虑将数据文件复制到新机器上,然后简单地启动MySql。但是

一些实际数据显然在ibdata1文件中,并且在ibdata1中包含数据的表生成表在引擎错误中不存在

所以我们认为我们也应该将ibdata1复制到新机器上。我们做到了。现在,新机器上的MySql无法启动

我们尝试删除ib_logfile0和ib_logfile1并启动服务,但仍然没有成功。它没有开始


你知道怎么解决这个问题吗

这对您的案例非常有用:

Percona XtraBackup是一个开源的热备份实用程序,用于基于MySQL的服务器,在备份过程中不会锁定数据库

更新: 不久前,我花了很多时间尝试与您一样的方法,我甚至在第二台服务器上看到了带有“SHOW TABLES”的_表,但当我从我的_表执行查询选择*时,出现了错误。错误1146 42S02:表my_表不存在,这让我抓狂。见我的老问题:

我现在想到的另一个想法是使用cron作业和mysqldump(使用WHERE子句)逐块处理备份,以避免生产速度减慢


对不起,我的英语不好

正如你发现的那样,你不能只复制数据文件。各个表文件、中心ibdata1和IBU日志文件之间存在依赖关系。MySQL服务器进程中的RAM中也有一些数据。它们必须同步,否则只能复制损坏的数据

安全复制文件的唯一方法是关闭MySQL服务器服务,以便在复制文件时停止对这些文件的所有更改。显然,这比使数据库变慢更糟糕——当数据库关闭时,应用程序完全无法使用它

这就是为什么存在备份工具,以安全地复制数据,并在给定时刻获得一致的数据快照

您可以使用从数据开始转储的那一刻起就应该获得一致的数据视图,而无需锁定数据库或使其慢下来,只需一个额外的线程运行SELECT*FROM。。。。这仅在所有表都是InnoDB的情况下有效,因此它们支持事务。在运行mysqldump时,不能使用任何CREATE、ALTER、DROP、RENAME、TRUNCATE或GRANT/REVOKE命令

另一个答案建议使用Percona XtraBackup,但该软件不提供Windows下载。最接近于此的选项是实验性的,而不是新手推荐的解决方案

许多人使用的另一个选项是使用设置副本MySQL实例,并将其用作备份源。然后,如果备份降低了副本实例的速度,则不会影响使用主实例的应用程序