我希望在Kubernetes上为我们的MariaDB数据库设置一个写代理。我们目前存在的问题是,在我们的3主galera集群设置上,我们只有一个写主。因此,即使我们有正确的荚复制,如果我们的第一个节点下降,那么我们的另外两个主程序就会失败,因为它们无法被写入。
我看到这是使用ProxySQL或MaxScale编写代理的一种可能选择,但我不确定是否正确地读取了它们的用途。我是否有正确的想法在Kubernetes上部署这两个应用程序/服务中的任何一个来解决我的问题?我能写信给集群中的任何一位大师吗?
发布于 2022-08-29 08:00:42
只要您使用MaxScale路由器和galeramon监视器,readwritesplit将负责选择要写入的服务器。
下面是一个用于MaxScale的示例配置,它对读取进行负载平衡,但将写入发送到一个节点:
[maxscale]
threads=auto
[node1]
type=server
address=node1-address
port=3306
[node2]
type=server
address=node2-address
port=3306
[node3]
type=server
address=node3-address
port=3306
[Galera-Cluster]
type=monitor
module=galeramon
servers=node1,node2,node3
user=my-user
password=my-password
[RW-Split-Router]
type=service
router=readwritesplit
cluster=Galera-Cluster
user=my-user
password=my-password
[RW-Split-Listener]
type=listener
service=RW-Split-Router
protocol=mariadbclient
port=4006之所以一次只在一个节点上写,是因为在多个Galera节点上这样做不会提高写性能,并且在提交事务时会导致冲突(应用程序似乎很少处理这些冲突)。
https://stackoverflow.com/questions/73225123
复制相似问题