mysql - 使用 MySQL 在 Slick 3 中做主/从的最佳方法

标签 mysql scala slick slick-3.0

我正在寻找使用典型的主/从 mysql 架构配置 Slick 3 的最佳方法。基本上我想将写入发送到一个 mysql 服务器并读取到另一个服务器并相信这两个服务器是同步的。

我已经阅读了 [this][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"
      }
    }
  }
}

我正在执行这样的查询:

PersistenceUtils.run(conversationMembers += conversationMember)

持久化工具:

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
  }

有一种方法可以通过在 application.conf 中进行配置来做到这一点吗?我不希望开发中的主/从,只希望在暂存和生产中。我读过有关 ReplicationDriver 的内容,但我在 Slick 文档中没有看到任何内容 :S

谁能给我一些线索? :P

谢谢

最佳答案

像下面这样配置你的 jdbc url:

jdbc:mysql:replication://master,slave1,slave2,slave3/<database>

并将驱动程序设置为:

com.mysql.jdbc.ReplicationDriver

完成上述操作后,您所要做的就是将需要转到从机的查询标记为只读。因此,所有只读的 jdbc 连接都被委托(delegate)给从属机器,而不只读的连接被发送给主控机。

关于mysql - 使用 MySQL 在 Slick 3 中做主/从的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34878334/

相关文章:

Python:无法将列表值插入 mysql 列

scala - 为什么 scala 无法从 2 个函数推断通配符类型?

scala - 如何将 AND 添加到连接 SLICK

mysql - 在mysql中对一个简单的follower表进行分区

php - 在 date_sub 函数中使用间隔时,我们可以使用月和日组合的间隔吗?

php - 运行 100 多个 MySQL 更新查询。优化提示请:)

java - 如何在Java代码中使用JavaMongoRDD的管道提供多阶段?

javascript - Scala 或 Python 构建 Comet 服务器来支持 PHP 应用程序?

mysql - 通过slick scala向数据库添加记录

scala - Slick 3.0.0 中如果不存在则插入