我们有这个MySQL数据库在生产环境中工作,我们需要将数据库移动到另一个具有更多空间的未使用的服务器。 我们的问题是,我们已经有了大量的程序处理当前的IP地址,并且改变这一切将会是一场噩梦,而且太慢了,所以我们想要使当前的MySQL实例成为一个“前端”并redirect到一个真正拥有真实数据库的“奴隶”或“后端”。
这一切都是为了让有一些时间将现有软件迁移到“从属”MySQL并将数据库无缝迁移到新的服务器。
任何人都试过他们的手?
您现有的服务器是否用于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
不要忘记启用转发并添加相关的防火墙规则。
您可以从数据库的其余部分拆分数据,并将数据块移动到另一台服务器的卷上。 但是,你应该知道,你不能只使用任何networking协议,如桑巴。
假设你可以通过使用NFS来完成这个工作,具体取决于你所使用的服务器/ SAN / NAStypes。 在NetApp上查看NFS 5.1.34的例子。
可能最好的方法是使用iSCSI。 但是,您应该弄清楚这个选项是否能够为您提供足够的IOPS来处理数据库。
看看MySQL代理, 链接文本 。 它可能会完成你想要的。
如果你有一个副本,你可以dynamic地移动IP,因为MySQL不绑定到接口。 你将很难find一个解决scheme,而不会影响单个服务器。
您可能能够复制模式并制定迁移计划,其中包括稍后合并数据集。
在stackoverflow上有一个windows shell脚本(.vbs),用于分解和重新构build一个mysql文件到文本文件中并返回。 从开始它导出窗体,模块,macros和报告。 这里是一个链接到这里。 这是第一个select的答案。 现在由于某种原因,原作者select不导出表和查询或表关系,只是因为它们被Access存储的方式不同。 除此之外,脚本在导出时会删除每个“对象”,所以一个难题就是在删除它的关系之前,不能删除表。 有点麻烦。 他也没有提供.adp和.mdb文件之间的支持。 你必须手动做到这一点。
所有这一切都是可能的,所以如果你有链接表,你可以找出如何将它们导出为文本格式。 然后导出关系。 删除关系,然后删除表。 (如果您已经在任何模块或传递查询中编写了ip,则您也必须对其执行此操作。)让脚本删除您select从原始文件导出的所有内容。 在那之后,你将基本上把你的msaccess文件放在一堆文本文件中。 从那里开始,只是一个简单的例子,通过代码对每个文件进行查找/replace,然后从每个更改的元素中重新组合文件。
编程是一件令人失望的事情,但它确实有助于从生产转移到开发环境,而没有汗水。
编辑似乎有人做了一些类似于我做的,但可能比我的版本更好: http: //accesssvn.codeplex.com/再次编辑嗯,如果它为你工作,那么伟大,但该程序是不是为我工作:(再加上它在C#:(