问题标签 [multi-master-replication]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1599 浏览

python - 使用 Django webapp 和 MySQL 进行多主数据库复制

我正在扩展 webapp 并提供一些数据库冗余以防止故障并在需要更新时保持服务器正常运行。该应用程序仍在开发中,因此我选择了一个简单的多主机冗余和两个独立的数据库服务器来尝试实现这一目标。每个服务器都将拥有 Django 代码并托管自己的数据库,并且数据库应尽可能紧密地镜像(在几秒钟内更新)。

我试图弄清楚如何使用 Django 和 MySQL 在数据库之间设置多主(主-主)复制。有很多关于仅使用 MySQL 设置它的文档(使用各种配置),但我找不到任何可以从 Django 方面进行这项工作的文档。

据我了解,我需要通过在 Django 设置中添加两个数据库条目(每个 master 一个)来解决这个问题,然后编写一个数据库路由器,该路由器将指定从哪个数据库读取和从哪个数据库写入。在这种情况下,两个数据库都应该接受读取和写入,并且写入/更新应该被镜像到另一个数据库。路由器中的逻辑可以简单地使用循环技术来决定使用哪个数据库。从那里开始,进一步的配置来设置实际的复制应该通过 MySQL 配置来完成。

这种方法听起来是否正确,有没有人有过让它发挥作用的经验?

0 投票
2 回答
11431 浏览

load-balancing - 使用 HAProxy for Postgresql 9.4 进行负载平衡

我已经在 4 个节点(虚拟机)之间使用 BDR(双向复制)设置了 PostgreSQL 的多主复制。

现在我想为高可用性放置一个负载均衡器。为此,我在另一台虚拟机上安装并配置了“HAProxy”,该虚拟机正在侦听 5432/tcp 进行连接。haproxy配置如下:

HAProxy服务器的ip地址是192.168.123.5

我在我的应用程序中使用了 HAproxy 服务器的 IP 地址来连接数据库(必须将连接重定向到实际的数据库服务器)。但当时我收到以下错误:

连接到服务器时出错:服务器意外关闭了连接。这可能意味着服务器在处理请求之前或期间异常终止。

请注意,我已尝试使用 2 方式解决问题。第一次我禁用了所有服务器(HAProxy 和所有 postgres 服务器)上的防火墙,并且我尝试用以下内容替换配置:

或者

或者

但在我的情况下一切都不起作用。

请帮我解决问题。在这种情况下我做错了什么?

提前致谢!

0 投票
1 回答
227 浏览

mysql - MySQL 自定义复制

我有一个奇怪的场景,我似乎找不到让它工作的最佳方法。

我有一个库存应用程序存储在 Linode 服务器上。这个应用程序处理不同的公司。每个公司都有自己的数据库。

所有公司在不同地点都有多家商店。所有商店都需要使用相同的应用程序,同时必须同步数据。

我需要复制数据,但所有商店/应用程序都需要能够同时写入/读取和复制。问题是他们中的大多数人几个小时都没有互联网连接。他们与世界完全脱节(只是局域网)。

传统的 MySQL 复制无法正常工作,因为它需要 Internet 连接才能保持运行。

我该怎么办???

拥有自己的软件解决方案可以在更高级别上复制数据是个好主意吗?如果是,我应该遵循任何最佳实践吗?

我也不能使用 mysql auto_increment step 和 offset 来生成 ID,因为一些客户不断开设越来越多的商店。我是否需要为每个实体生成自己的 GUID,以确保 id 不会通过为商店唯一 ID (STOREID-UNIQUEID) 加上前缀而发生冲突?

0 投票
1 回答
187 浏览

marklogic - MarkLogic 多主复制

我们正在与地理分布的全球编辑团队合作,MarkLogic 已被选为基础数据存储。

为了支持零停机时间和快速响应时间,我们希望设置具有多主复制的分布式数据存储。我们想知道 MarkLogic 是为这种多主复制配置提供开箱即用的还是通过任何其他机制提供的?

0 投票
1 回答
549 浏览

redis - 在 Redis 多主配置中同步数据

我是 Redis 的新手,我想知道是否有人可以帮助我了解它是否是正确的工具。这是我的场景:

我有许多不同的节点,每个人都表现得像一个主节点并接受客户端连接来读取和写入一些地理数据数据和传入记录的时间戳。每个主节点都可以托管在无人机上,根据网络条件,无人机只能随机联系并可以与其他人通信;当这种情况发生时,他们应该根据他们的年龄同步他们的数据(只有那些比指定时间更近的数据)。

Redis有什么方法可以实现这一点,还是我必须在应用程序级别实现这个功能?我尝试了主/从配置但没有成功,我想知道 Redis 集群是否能满足我的需求。

我用谷歌搜索,但我发现的答案对我没有好处

https://serverfault.com/questions/717406/redis-multi-master-replication

在不同机器上使用 Redis Replication(多主机)

0 投票
1 回答
619 浏览

mysql - 多主(n >=3 个节点)范式

我正在为 MySQL 数据库寻找一种多主配置,它比使用循环方式更安全/有效。

总体布局:

  • 中央数据库 (A)
  • 外围数据库 (BZ)

交互要求(A<-->(BZ)):

  • 所有外围数据库都需要对中央数据库进行读/写访问。
  • 对中央数据库所做的所有更改(无论是来自服务器本身还是中继的外围更改)都必须传播到所有外围数据库。
  • 外围数据库不应与其他外围数据库有任何关系。
  • 它们应该只是中央数据库的主从。
  • 每个外围数据库都应该能够与缺少当前 Internet 连接的主机服务器一起操作,并在重新连接时将所有更改中继到中央数据库。

集中的数据大多是静态的。添加的外围数据库更改主要是销售记录,不一定需要立即到达节点。在合并 bin 日志时,所有表都在使用auto_increment_incrementauto_increment_offset处理任何覆盖错误。

目前,有一个循环系统,但这绝对不是理想的。我不希望外围节点相互依赖,或者必须编写脚本来重新分配备份主数据库,以在停机期间保持链接处于活动状态。我希望在中央数据库和每个单独的外围数据库之间进行主主设置。

如果您觉得完全不同的范式是合适的,请随意推荐。与每个外围服务器在同一网络上运行的软件需要最佳速度和故障保护,以应对本地互联网中断,所有更改最终都会以某种方式传递到其他外围数据库。

如果您可以推荐其他数据库软件,例如 MariaDB 或 PostgreSQL,并支持我想要的,请随时使用他们的框架发布解决方案。只要数据库是关系型的,我很可能会设法移植。

0 投票
1 回答
251 浏览

database - 是否有具有可自定义复制级别的多主数据库?

我需要一个多主数据库来让来自不同大陆的用户交谈。每个用户将他的数据写入他的本地主数据库,并将数据复制到其他县/大陆的其他主数据库。问题是我无法在所有数据中心存储所有用户数据的所有副本。我需要一个数据库/解决方案之类的东西,它可以让我设置复制级别。
我需要能够从任何节点读取任何数据,但将数据存储在多个节点上(在 3 个节点上,但不是在所有节点上)。

有解决办法吗?也许是数据库和应用程序之间的代理或聪明的集群?任何想法或提示都会很愉快

0 投票
1 回答
76 浏览

database - 当 OrientDB 主节点是最新的时,是否可以得到通知?

我的意思是当我们有一个具有 3 个主节点的多主集群时,在我们添加一个新的主节点(第四个节点)之后,我们必须以某种方式通知它何时是最新的,或者可能每 5 秒询问一次以找出答案如果它是最新的。
有可能实现吗?

0 投票
1 回答
76 浏览

cluster-computing - 是否所有 OrientDB 主节点都具有相同的数据?

当我们将它们动态添加到 OrientDB 集群中时,所有主节点是否都会更新它们的状态?我的意思是,如果我们已经有一个正在运行的包含一些数据的主节点,我们能否确定这些数据将被复制到一个新的主节点?

0 投票
2 回答
412 浏览

replication - OpenDJ 多主复制失败(挂起在初始化注册信息步骤):: javax.naming.AuthenticationException

我正在使用 OpenDJ-2.4.6 和 Oracle JDK 7.80,我想在我的两台服务器上运行多主复制,这些服务器的操作系统是 Amazon Linux。

OpenDJ 设置运行良好;我也可以启动服务器而不会出现任何错误。

当我按如下方式运行“ dsreplication ”脚本时:

./dsreplication enable --host1 server1.example,com --port1 4444 --bindDN1 "cn=Directory Manager" --bindPassword1 "Passw0rd" --replicationPort1 1388 --host2 server2.example,com --port2 4444 --bindDN2 "cn=Directory Manager" --bindPassword2 "Passw0rd" --replicationPort2 1388 --adminUID admin --adminPassword "Passw0rd" --baseDN "dc=example,dc=com"

脚本挂在以下步骤:

在检查日志时,那里没有报告错误。

但是,当我运行以下命令时:

它引发以下错误:

显示的信息可能不完整,因为在读取现有服务器的配置时遇到以下错误: server2.example.com:4444 上的错误:连接到服务器时发生错误。详细信息:javax.naming.AuthenticationException:[LDAP:错误代码 49 - 无效凭据] 服务器上的错误:4444:连接到服务器时出错。详细信息:javax.naming.AuthenticationException:[LDAP:错误代码 49 - 无效凭据]

请帮我。

提前致谢。