问题标签 [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.
mysql - 从代码连接到 MySQL 主-主设置
对于一个新网站,我们必须连接到 MySQL master-master 设置。这是一个使用 NHibernate 的 .NET 网站,但同样适用于 Java 或任何其他语言。我们选择此设置是因为我们希望网站在数据库出现故障时继续工作。我们不喜欢停机时间。
也许我完全误解了主-主设置的工作原理(在 MySQL 中),但在我看来,你像往常一样连接到数据库,但在幕后,MySQL 在两者之间复制数据数据库。如果您进行写入,它可以转到 master 1 或 master 2,您通常不会知道(除了自动增量 id 会返回不同的值)。如果 master A 以某种方式失败,master B 仍然可以工作,因此不会停机,master A 将被忽略,直到它再次上升,数据被复制,如果一切正常,master A 将再次回到现场。
如果这是正确的,如果我上面的漫无边际是错误的,请纠正我,您是否需要做一些特别的事情以防万一大师倒下?如果我连接到 192.168.1.50(即 master A),如果 master A 宕机会怎样?MySQL 会以某种方式自动将我连接到 192.168.1.51(master B),以便我的站点继续工作吗?
如果我不正确,那么 MySQL 主主复制如何工作?我是否必须告诉每个查询应该在哪个主机上执行?这是没有意义的,对,因为如果主 A 出现故障,那么我对主 A 的所有查询仍然会失败,并且主-主设置对我没有任何帮助。
所以基本上,我认为我的问题实际上是:
我是否仍然连接到单个 MySQL 主机(我正在使用 NHibernate,但这并不重要),我是否指定单个连接字符串,MySQL 是否知道有两个主机,或者我的代码是否以这种方式更改我需要为两个主服务器指定连接字符串(如何?),做一些特殊的魔法来平衡两个服务器之间的查询,等等。
我还缺少什么吗?谢谢!
mysql - MySQL 多集群复制
我需要使用 4 个 MySQL 服务器创建多组复制。经过研究,我发现了两种方法:
1)环形连接。... Server_1 -> Server_2 -> Server_3 -> Server_4 -> Server_1 ...
有人在生产模式下使用过它们吗?哪种方式更好?也许还有其他方法可以创建 MySQL 多组复制?
谢谢你的建议!
cassandra - 直接无法路由的数据中心之间的多主 Cassandra
我们有三个设施,分别称为 Main、Remote1 和 Remote2,它们都有应用程序的本地用户。用户目前在 Main 中使用 SQL db,我们正在寻求转移到 Cassandra。我们希望所有数据中心的写入都命中本地 Cassandra 节点,而不仅仅是 Main 中的节点。主数据中心的服务器可以与 Remote1 和 Remote2 中的服务器通信,但 Remote1 和 Remote2 之间没有路由或 DNS 可见性。
是否可以设置具有三个数据中心的 Cassandra,其中某些节点无法与其他节点直接通信?是否可以将来自 Remote1 的写入传播到 Main,然后将它们推送到 Remote2?
mysql - 将正常的mysql复制到集群
令人惊讶的是,我在互联网上找不到任何与此相关的内容。我们目前有一个主从从 mysql 设置。出于可扩展性的原因,我们正在考虑迁移到 mysql 集群。如果我们可以让集群成为当前主节点的从节点并暂时在集群之外运行开发环境,那就太好了。如果我们可以在当前主服务器和集群之间建立主主关系,那就更好了。
我们担心的是我们的数据必须保持最新,因此无法进行这种复制将意味着停机。如果这种复制是不可能的,那么进行过渡的最平滑的方法是什么。我们目前正在运行 mariaDB。
git - git多主设置?
我的任务是配置以下设置。
目前,我们有一个开源项目的内部规范回购。我们有一个 post-receive 挂钩,可以将任何更新推送到公开的远程存储库。
Joe Public 可以从公共回购中提取。
除了 post-receive 钩子,没有人推送到远程仓库
我们有很多用户在内部处理代码,我真的不想弄乱他们已经在工作的工作流程。
内部用户从内部规范 repo 中检查代码并提交相同的代码。
外部开发人员必须提交补丁,然后内部用户将为他们提交(审查后)。
此时,我们要开始允许一些外部开发人员对存储库进行提交访问。
这意味着使远程回购规范。
这也意味着改变用户的工作流程。除非这里的集体可以提出我在 git 方面缺少的东西。
当前工作流程的快速图表。
内部用户。
从内部仓库克隆。-> 带代码的猴子 -> 推送到内部仓库 -> 接收后挂钩推送到远程仓库。
外部用户。
从外部仓库克隆。-> 带代码的猴子 -> 通过邮件列表提交补丁 -> 内部用户将代码推送到内部仓库 -> 接收后挂钩推送到远程仓库。
理想的新工作流程!
内部用户。
从内部仓库克隆。-> 在提供克隆之前,pre-receive hook 确保我们有一个来自远程的更新镜像 -> monkey with code -> push to internal repo -> pre-receive hook 代理提交到远程 repo 并同步 2.
外部用户。
从远程仓库克隆。-> 带代码的猴子 -> 推送到远程仓库。
这有点像多主设置。您可以将代码推送到任一存储库并从任一存储库中提取代码。
其他一些注意事项。
内部仓库可以从远程仓库推送和拉取。远程仓库无法访问内部仓库。
你怎么看?
mysql - 异步写入多个 MySQL 数据库
我正在使用 AWS RDS,因此区域之间的数据库复制是不可能的。
我的应用程序用 PHP 编写并部署在所有区域,我正在寻找一种快速可靠的方法来实现这一目标。
我要建立 MySQL 连接:
SET @@auto_increment_increment= NUMBER_OF_WRITEABLE_DATABASES;
SET @@auto_increment_offset = REGION_ID ;
所以AI pk在所有地区都是独一无二的。
我目前的计划是保留一个查询日志表,其中包含字段 => id、queries、status、user_id。它将所有插入、更新、删除查询记录到同一页面加载的查询字段中。
状态码:
状态 0 => 未执行
状态 1 => 在所有区域上成功执行
状态 2 => 失败
状态 3 => 失败,受影响的行不匹配
示例行:
id=>1 个查询=> INSERT INTO PROFILES VALUES (1,{USER_ID},'Username','Email')##SEPERATOR##AFFECTED_COUNT UPDATE USERS SET last_modified='2012-12...' where id={USER_ID }##SEPERATOR##AFFECTED_COUNT 状态=0 user_id=>{USER_ID}
并且将有一个守护进程读取 status != 1 的记录,并将在所有区域上处理它们而不提交,一旦所有区域都运行没有错误,它将提交或回滚以防出错。
这就是我的想法并打算使用。
我的问题是该场景是否有更体面/经过测试的方法,或者我的方法有任何问题。
提前致谢
mysql - MySQL 多主复制
我们有一些 (10-) MySQL 服务器节点,我们希望它们能够以一种方式进行复制,即使其中一个节点出现故障,其余节点也不会受到影响。
我知道 MySQL 提供主/从(对我们不利)和多主复制。
- MySQL 多主复制是否像网格一样工作?我的意思是所有节点都可以从所有其他节点更新?
- 即使在多主复制(MySQL)中,每个节点也只能从一个主节点获取数据,这是真的吗???
那么如果原生 MySQL 复制功能不能满足我们的要求,你知道有什么工具可以做到这一点吗?我们的首选是内置的 MySql 复制。
mysql - 如何在 CentOS 6 中为 MariaDB Galera 集群配置多主复制
我一直在搜索有关如何在 MariaDB 中配置多主复制的文档,但我找不到任何文档。我曾经尝试过一些 MySQL 配置,但它们没有用。Wsrep 在我的两个节点中都处于打开状态,但是当我将第二个节点连接到施主时,重新启动 mysql 时出现错误。我正在使用 CentOS 6.4 操作系统。有人可以提供 MariaDB-Galera 集群多主复制的文档吗?
mysql - 中国到 AWS 多主复制
我目前支持的系统位于中国的数据中心内,但由于防火墙,在中国以外的地方性能很差。我们正在 AWS 中建立数据中心,需要复制数据。我们的应用程序是为旅行者设计的,因此用户可以在几小时内轻松访问中国境内和境外一次的系统。要求:
- 近实时(但非实时)数据一致性
- 处理分区的能力,其中网络可能一次关闭几分钟
- 处理高延迟的能力,例如 300-500ms
- 处理失败请求的能力,其中一定比例的请求将挂起或被丢弃
- 免费或几乎免费
- 能够进行相对灵活的查询(例如按不同字段排序,部分关键字搜索,如 LIKE 子句等)
我们目前在 Cassandra 上,它将处理除此列表中的最后一项之外的所有内容。我们的很多数据并不适合 Cassandra 的格式,而是在我们完全理解 Cassandra 的数据模型之前就以这种方式构建的。所以为了支持最后一个需求,我们有两个想法:
- 在每个数据中心添加 MySQL 服务器,使用某种排队机制与 Cassandra 数据同步,数据消费者只对这些服务器进行只读查询。
- 将数据迁移到 MySQL 或 PostGres,跨数据中心搭建 Multi-Master 异步集群。
我有两个问题:
- 对于那些有跨低质量 WAN 设置多主复制经验的人,以下哪种方法更好?如果两者都不是,你是如何解决你的问题的?
- MySQL、PostGres、MariaDB 或任何其他免费数据库或 3rd 方扩展是否能很好地支持这种情况?
database - Heroku 多区域支持
Heroku 是否为其实施提供多区域支持?我对多个 AWS 区域中的主-主数据库设置特别感兴趣。
谢谢