如果我有一台mysql服务器,我将使用mysqljs/mysql进行连接,如下所示:
var mysql = require('mysql');
var con = mysql.createConnection({
host: mysql.local,
port: "3306",
database: "my_db",
user: "my_user",
password: "my_password",
charset : "utf8mb4"
});
一切正常。
但是假设我更改了这个设置,使其使用集群(通过ndbcluster或galera),这样就有几个不同的主机可供编写和读取。
什么 host
应该在节点应用程序中使用吗?
如果这个主机坏了怎么办?我的节点应用程序如何连接到备份主机之一?
我试着找到答案,但什么也找不到。
2条答案
按热度按时间yzxexxkh1#
好的,我找到了一个简单的解决方案,效果很好。
我选择galera作为解决方案。您可以在此处阅读一篇精彩的演练:https://www.digitalocean.com/community/tutorials/how-to-configure-a-galera-cluster-with-mysql-5-6-on-ubuntu-16-04
然后我使用下面的代码进行db查询。注意,我仍在使用mysqljs/mysql:
注意:在此设置中,如果一个或多个数据库节点宕机,则查询将路由到活动的节点。当失败的节点重新启动时,它们丢失的任何数据都将从一个活动服务器同步。
wlsrxk512#
好的,我现在理解你的问题了,事实上有些问题可能更适合serverfault,但我会在这里向你介绍开发人员的观点,如果你在设置基础设施时遇到问题,请在那里提问。:)
因此,what host和what happens问题在一定程度上取决于您设置了哪些集群技术以及如何设置它,但是以galera为例,集群位于某种负载均衡器之后。galera支持自己的一个,或haproxy,或一个叫pen的。这就是你将应用程序指向的主机。
在部署负载平衡器时,实际上应该部署两个或多个负载平衡器,并将它们配置为动态故障切换。digital ocean在web服务器前为haproxy提供了一个很好的教程,但原理是一样的。