Ser*_*iGP 2 mysql scala slick slick-3.0
我正在寻找使用典型的主/从mysql架构配置Slick 3的最佳方法.基本上我想将写入发送到mysql服务器并读取到另一个并信任两个服务器是同步的.
我已经知道了[这] [1]但我认为是Slick 2.我已经开始使用Slick官方文档了,我对此主题没有任何看法.
现在,有一个数据库(没有主从)我在application.conf中有这个.
slick {
dbs {
default {
driver = "slick.driver.MySQLDriver$"
db {
driver = "com.mysql.jdbc.Driver"
url = "jdbc:mysql://localhost/new_chat"
user = "new_chat"
password = "new_chat"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在执行这样的查询:
PersistenceUtils.run(conversationMembers += conversationMember)
Run Code Online (Sandbox Code Playgroud)
PersistenceUtils:
def run[R](a: DBIOAction[R, NoStream, Nothing])
(implicit chatContext: ChatContext, ec: ExecutionContext): Future[R] = {
val result = chatContext.db.run(a)
result.onFailure({ case e => logger.error(s"error executing query: ${a.getDumpInfo.mainInfo}", e) })
result
}
Run Code Online (Sandbox Code Playgroud)
有一种方法可以在application.conf中进行配置吗?我不想在dev中使用master/slave,只能在staging和production中使用.我已经阅读了有关ReplicationDriver的内容,但我在Slick doc中看不到任何内容:S
有谁能给我一些线索?:P
谢谢
配置你的jdbc网址如下:
jdbc:mysql:replication://master,slave1,slave2,slave3/<database>
Run Code Online (Sandbox Code Playgroud)
并将驱动程序设置为:
com.mysql.jdbc.ReplicationDriver
Run Code Online (Sandbox Code Playgroud)
完成上述操作后,您所要做的就是将只需要转发到从属计算机的查询标记为只读.因此,所有只读的jdbc连接都被委托给从机,而那些不是只读的jdbc连接被发送给主机.