我的公司使用的产品使用 MySQL 5.5 作为后端数据库。该产品在安装过程中会自动安装和配置 MySQL。该产品可配置为在热备冗余配置中运行。在这些情况下,在 2 个独立的服务器上执行相同的安装过程,然后在产品初始配置期间选择冗余模式。该产品在内部处理复制数据库数据并保持两个数据库同步的所有过程。 MySQL 知道冗余设置。两台服务器上的 MySQL 安装相同、位置相同、结构相同。该产品没有一种非常优雅/高效的方法来同步大型数据库(例如 300G 大小的 3K 表),在需要时从主服务器到备份服务器,例如从单个服务器创建冗余系统时/已经运行了一段时间的主服务器配置。我的问题如下。
考虑到两台服务器上的 MySQL 安装相同,是否有一种安全/受支持的方法可以将数据库/文件从主服务器手动复制到备份服务器?顺便说一句,这是在生产 视窗 服务器上。我知道我可以从主数据库完全导出数据库,然后将其导入到 BU 服务器上,但这可能需要几个小时。我希望有一种更快的支持方法将文件从一台服务器复制到另一台服务器,但在研究这一点时我看到了冲突的信息。
系统信息 视窗 MySQL 5.5 两台服务器上的安装相同 “C:\ProgramData\MySQL\MySQL Server 5.5\data” 创新数据库 每个表的文件 = true
预先感谢您的任何建议。
I once tried to just copy the Database Folder that contains all the 创新数据库 table files, "C:\ProgramData\MySQL\MySQL Server 5.5\data\Mydbase", from one server to another but mysql would not start up and had errors.
是:关闭两台计算机上的 MySQL Server 服务。然后您可以按照您想要的任何方式移动 datadir 中的文件。但这会在您进行文件传输时导致一些停机时间。
如果必须没有停机时间,也是可以的,但需要更多步骤。
我所做的是使用 Percona XtraBackup 对源实例进行物理备份,但这对您来说并不容易,因为您使用的是 Windows。 XtraBackup 不适用于 Windows。有些人使用技巧在Windows 上的 Docker 容器。
然后以正常方式将 XtraBackup 还原到您的新计算机,并将其配置为源实例的副本。请参阅https://docs.percona.com/percona-xtrabackup/8.0 /howtos/setting_up_replication.html
通过将新实例设为副本,您可以让它根据设置副本时源实例上发生的最新更改进行更新。
然后在某个时刻您决定切换到新实例。然后,将源实例设置为只读模式,以防止客户端应用程序进行任何新的更改。让副本跟上最后的最终更改(如果副本已经跟上更改,则这只需要一秒钟)。现在,您可以更改客户端应用程序以使用副本而不是以前的源。然后使用 RESET SLAVE 取消新实例上的复制配置,因为您最不希望发生的事情是在以前的源上发生任何更多更改并复制到新实例。
如果您尝试此过程,我建议您在测试实例(而不是生产实例)上进行测试,直到您熟悉这些工具为止。
P.S.:除了不支持Windows之外,我不知道当前版本的XtraBackup是否可以与MySQL 5.5一起使用。该版本于 2010 年发布,并于 2018 年终止。因此,我认为您需要研究哪个版本的 XtraBackup 仍然可以读取 MySQL 5.5 实例。您可能必须使用旧版本的 XtraBackup。