使用 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 连接都被委托给从属机器,而不只读的连接被发送给主机。
我正在寻找使用典型 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 连接都被委托给从属机器,而不只读的连接被发送给主机。