我们在生产环境中运行这个 MySQL 数据库,我们需要将数据库移动到另一台具有更多空间的未使用服务器。我们的问题是,我们已经有大量程序使用当前 IP 地址,更改它们将是一场噩梦,而且速度太慢,所以我们考虑将当前的 MySQL 实例设为“前端”,它接收请求并重定向到真正保存真正数据库的“从属”或“后端”。
这一切还伴随着这样的想法,即留出一些时间将现有软件迁移到“从属” MySQL,并将数据库无缝迁移到新服务器。
有人尝试过吗?
答案1
您现有的服务器除了 MySQL 之外还用于其他用途吗?如果是,您可以随时将现有地址分配给新服务器。
除此之外,您还可以使用 NAT 将 MySQL 的端口转发到新主机。例如在 Linux 上:
iptables -t NAT -A PREROUTING -d 10.0.0.1 -p tcp --dport 3306 -j DNAT --to-destination 10.0.0.2
不要忘记启用转发并添加相关的防火墙规则。
答案2
您可以将 datadir 从 mysql 应用程序的其余部分中分离出来,并将 datadir 移动到另一台服务器上的卷。但是,您应该知道,您不能只使用任何网络协议(如 samba)来执行此操作。
据说你可以使用 NFS 来实现这一点,具体取决于你将其带到哪种服务器/SAN/NAS。例如NFS 上的 MySQL 5.1.34(带 NetApp)。
最好的方法可能是使用 iSCSI。不过,您应该弄清楚此选项是否为您提供了足够的 IOPS 来处理数据库。
答案3
看一下 MySQL 代理,链接文本。它也许能实现你想要的。
答案4
stackoverflow 上有一个 windows shell 脚本 (.vbs),可以将 mysql 文件分解并重新组合为文本文件,然后再分解回来。从一开始,它就导出表单、模块、宏和报告。这是链接。这是第一个选定的答案。现在,由于某种原因,原作者选择不导出表和查询或表关系,仅仅是因为它们在 Access 中的存储方式有点不同。此外,该脚本在导出时会删除每个“对象”,因此一个困难是,您无法删除表,除非您删除其关系。有点麻烦。此外,他没有提供 .adp 和 .mdb 文件之间的支持。您必须手动执行此操作。
但是,所有这些都是可能的,因此如果您有链接表,您可以弄清楚如何将它们导出为文本形式。然后导出关系。删除关系,然后删除表。(如果您在任何模块或传递查询中写入了 ip,您也必须对它们执行此操作。)让脚本删除您选择从原始文件导出的所有内容。此后,您的 msaccess 文件基本上会放在一堆文本文件中。从那里开始,它只是对每个文件(通过代码)进行查找/替换的简单情况,然后从每个更改的元素重新编写文件。
这对于编程来说是一个麻烦,但它确实有助于轻松地从生产环境转移到开发环境。
编辑似乎有人做了与我类似的事情,但可能比我的版本更好: http://accesssvn.codeplex.com/ 再次编辑嗯,如果它对你有用那么很好,但是那个程序对我来说不起作用:(而且它是用 C# 编写的:(