使用 MySQL 在 Slick 3 中执行 master/slave 的最佳方法

Best way to do master/slave in Slick 3 with MySQL

我正在寻找使用典型 master/slave 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)

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
  }

application.conf中的配置有办法做到这一点吗?我不想在开发中使用 master/slave,只希望在暂存和生产中使用。我读过有关 ReplicationDriver 的内容,但我在 Slick 文档中没有看到任何内容:S

谁能给我一些线索? :P

谢谢

配置您的 jdbc url 如下:

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

并将驱动程序设置为:

com.mysql.jdbc.ReplicationDriver

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