【发布时间】:2017-01-05 12:58:02
【问题描述】:
我们正在将我们的许多应用程序迁移到云端 - 但是有一个应用程序需要留在内部,因为它与一些本地硬件接口。
有问题的应用程序是使用 Spring Boot 编写的,并且在 MYSQL 数据库上执行 90% 的读取操作,只有偶尔写入。我已经设置了一个主从 MYSQL 复制,其中内部服务器充当云数据库服务器的复制从属。
如何将 Spring Boot 配置为使用内部数据库进行所有读取操作,同时将写入操作发送到云数据库服务器?
我知道我可以重新构建整个应用程序以使用两个不同的数据源 - 但这看起来需要做很多工作,而这可能是一个不错的方法......?
【问题讨论】:
-
您可以使用 MariaDB 的 MaxScale。那是一个数据库代理。但是,如果您向云端发送查询(INSERT/UPDATE)并直接读取从属服务器,则 INSERT 不会被复制。它可以使用一点点。您还可以设置更多规则。还可以路由 SELECT 中的特殊关键字,以便也从 master 读取,例如 SELECT /*MASTER*/ * FROM ....
-
感谢您推荐 MaxScale。我会仔细看看的。您的意思是发送更新然后立即查询它们是 MaxScale 或主/从复制的问题吗?
-
maxscale 也不是问题。复制从主服务器复制结果到从服务器有点慢。如果您识别出此类查询,您可以标记它并在 maxscale 中创建一个规则,该查询也转到主服务器
标签: mysql spring spring-boot