我想在我的MySQL服务器上有两个数据库:
然而,为了保持每个人的脚本,查询浏览器设置和其他任何东西从DB上使用切换到另一个我想每个人都连接到DEV_DB,然后使用像MySQL代理运行一个lua脚本知道当前活动的数据库是DEV_DB_A并将查询路由到那里。 如果我们将数据库的新版本还原到DEV_DB_B或进行一些更改(例如对表进行分区),则可以通过更改一个Lua脚本而不是更新任何地方的引用来轻松切换到DEV_DB_B。
我曾经希望我能够在mysql数据目录内build立符号链接,但是这并不起作用,所以好像MySQL Proxy是一个合理的方法。
作为Lua和MySQL Proxy的新手,我想知道是否有其他人以这种方式解决了这个问题,以及它是如何工作的。
使用MySQL代理实际上是一种尝试解决MySQL中缺失的RENAME DATABASEfunction的方法。 该function存在于某个时间点,但在certificate不可靠时被删除 。
最后我解决了这个问题,可以通过为每个表发布RENAME TABLE DEV_DB_A.table1到DEV_DB_B.table1语句来解决。 我发现的唯一问题是RENAMEing表中有触发器失败, 如在MySQL网站上所述 。
为了更容易,我写了一个小python脚本来为我做这个工作。 当我看到这是其他人的问题时,我添加了一些基本的错误检查和选项,使其更易于使用,并将其发布给github上的其他人。
用MySQL代理来抽象数据库是有好处的。 主要是查询操作而不改变应用程序。 尽pipe如此,高可用性和冗余解决scheme往往更好地解决与其他技术。
根据你的描述,这听起来像你希望能够dynamic地移动数据库设备而不用改变应用程序。 要做到这一点,它可以像为您的数据库专用一个IP别名(VIP)一样简单。 MySQL不绑定到接口,这使得IP重定位可以透明地完成MySQL和你的应用程序。
如果您有其他要求,请进一步描述,我可能会为您提供其他select。