Joh*_*han 1 mysql mysql-replication topology
我有一个中央数据库,其中包含 MySQL 5.1-lastest-stable 中的所有数据。我想在主主关系中连接多个客户。
问题
如何设置中间有 1 个中央服务器和多个客户端数据库的星型拓扑,以便一个客户端中的更改首先传播到中央服务器,然后再从那里传播到所有其他客户端数据库?
数据库信息
我对所有表都使用 inno-db,并且启用了二进制日志。
除此之外,我还学会了如何在数据库之间进行 master-master 操作。
所有表都有主键主整数自动增量。自动增量 offset 和 start 被调整到不同的客户端数据库永远不会有主键冲突。
为什么我想要这个
我有客户端软件(不是网站或 php)连接到笔记本电脑上的本地 MySQL 数据库,这需要同步到中央数据库,以便所有在笔记本电脑上使用该程序的人都能看到其他其他人所做的改变。
我不想直接连接中央数据库,因为如果笔记本电脑和中央数据库之间的互联网连接断开,我的应用程序就会死亡。
在此设置中,应用程序继续运行,在重新建立与中央数据库的连接之前,笔记本电脑不会从其他人那里获取更新。
使用 MyISAM 和 InnoDB 无法实现您提出的建议是有特定原因的。
星形拓扑保证 Master 是宇宙的中心,而不是奴隶。MySQL 复制不是设计为从多个主服务器同时读取。它一次只能从一个 master 读取。所述CHANGE MASTER TO命令从属连接到一个且仅一个,主站。
根据《Understanding MySQL Internals》一书,第 219 页“Multi-Master”副标题下的第 2 段内容如下:
MySQL 复制最初并不是在考虑多主支持的情况下编写的。一个从站本身只能复制一个主站。可以创建一个相当简单的补丁,以允许一个从站从多个主站收集更新而无需解决冲突。这是一次性完成的,但由于多种原因并没有使其进入源代码树的主分支。曾经计划过一个更复杂的补丁来解决一些冲突,但由于多种原因未能开发。它可能会在未来实施。
《高性能 MySQL:优化、备份、复制等》一书在第 364 页(第 8 章:复制拓扑)的顶部有一个框,标题为“MySQL 不支持多主复制”。该框有以下段落:
我们非常特别地使用术语多主复制来描述具有多个主的从属。不管您被告知什么,MySQL(与其他一些数据库服务器不同)目前不支持图 8-6 所示的配置。但是,我们将在本章后面向您展示一些模拟多主复制的方法。
不幸的是,许多人随意使用这个术语来描述整个拓扑中存在多个 master 的任何设置,例如我们在本章后面展示的“树”拓扑。其他人用它来描述我们所谓的 master-master复制,其中服务器互为主从。
这些术语问题会引起很多混乱甚至争论,因此我们认为最好小心使用名称。想象一下,如果 MySQL 增加了对具有两个 master 的 slave 的支持,那么通信将是多么困难!如果您没有为此目的保留“多主复制”,您将使用什么术语来描述?
虽然在副标题“模拟多主复制”下第 373-375 页列出的模拟技术理论上是可能的(使用 BLACKHOLE 存储引擎)并且其他人已成功实施以仅模拟两个主,但它仍然永远无法支持您提出的特定拓扑.
我之前已经回答过这个问题。事实上,我在那里给出的答案一直都是成功完成的。这就是为什么保险推销员可以将笔记本电脑带到一个人的家中,并收集有关申请保险的人的保险数据。销售员最终会连接到中央计算机以下载新客户的应用程序。反过来,中央计算机可以下载最新的精算师信息,以便按比例分配保单将花费申请人。它在将笔记本电脑连接到中央计算机的前提下工作,一次一台笔记本电脑。
| 归档时间: |
|
| 查看次数: |
4788 次 |
| 最近记录: |