问题标签 [master-slave]

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 投票
4 回答
11490 浏览

mysql - 如何为主从设置编写 PHP MySQL 类?

我从来没有为我的mysql数据库使用过主/从设置,所以如果我在这里没有意义,请原谅。

我很好奇,假设我想要一个主数据库和 3 个从数据库。我需要编写我的数据库类来连接和添加/更新/删除条目到主数据库还是以某种方式自动化?

同样对于我的 SELECT 查询,我是否需要对其进行编码以随机选择一个随机数据库服务器?

0 投票
1 回答
176 浏览

java - 高复制数据库“最终一致”是否意味着分离的 JDO 对象可能并不总是包含更新的对象图?

我一直在为以前的 App Engine 项目使用主/从数据库,但我的新应用程序被定义为 High Replication Datastore(我不相信在定义后可以更改此设置)。

到目前为止,我一直在做的是detachedCopy在更新后调用一个对象,以便后续更新肯定会与新更新的对象图一起使用。

但是,High Replication Datastore 有一个我不完全理解但担心的特性——即“最终一致”。我从 Google App Engine 组的一些 Python 人员那里听到的是,他们将对“模型”对象执行更新,但由于 High Replication Datastore 直到感觉像它之后才会返回更新的对象图,因此任何后续更新此对象现在可能与底层数据存储不同步。

如果这是正确的,这有点像我detachedCopy在 Datanucleus JDO 中使用的方式 - 在主/从数据库下,我从未遇到过分离对象与 datstore 不一致的情况。这是我现在需要担心的事情吗?有什么方法可以避免 High Replication Datastore 造成的灾难吗?或者如果没有 JDO 解决方法,我应该简单地针对主/从配置运行我的所有应用程序以避免此问题?

0 投票
2 回答
574 浏览

mysql - mysql 复制 - 主从

我已经成功设置了一个主从环境,它肯定工作正常。

我唯一的问题是从表中选择计数,它们不一样,但在从主站 5 分钟后选择,在从站上创建了 50 行,也创建了 50 行(这就是为什么我说我确定工作正常)

掌握:

奴隶:

知道为什么会这样吗?是否有可能当我使用“CHANGE MASTER TO”命令将从属更改为指向主控时,二进制日志文件@主控的位置已经移动了?

0 投票
0 回答
416 浏览

mysql - ORM 和 mysql 复制滞后

我们正在转向主/多从 MySQL 设置,我担心如何在不过多更改应用程序代码的情况下解决数据完整性问题。

我们的应用程序使用 ORM(Doctrine PHP),理论上我们可以扩展它以简单地将 SELECT 语句发送到其中一个从属服务器或主服务器,并将 UPDATE/DELETE 查询发送到主服务器。

由于 ORM 的性质,这将失败的地方是:

  1. 根据来自从站的过时数据进行写入,例如从从站读取最近在主站上更改了其 Y 列但尚未在从站上更改的记录,然后将 X 列的更改与 Y 列的过时数据一起保存在主设备上,从而覆盖之前对 Y 列的更改。
  2. 在最近一次在主机上写入后立即从从机读取(用户刚刚发布表单的场景 - 比如说论坛评论 - 并重新加载页面并且看不到他的评论)

我在想我们应该在我们的应用程序控制器上构建逻辑,让数据层知道是否可以容忍获取过时的数据,什么时候没有(例如,当有写入意图时),什么时候没有,以便数据层可以但是,相应地连接到主设备或从设备;这似乎违背了良好的软件工程实践。例如,控制器应该实现业务逻辑,而不必处理数据应该来自从站还是主站。

我确信这在过去已经处理过了。也许不是使用 Doctrine PHP,而是使用 Hibernate 或其他 ORM 解决方案?

是否有可以分享的一般良好做法或建议?

0 投票
1 回答
1869 浏览

redis - Redis write to master read from slave

We want to use Redis to distribute data to remote servers.

There is one master instance in the HQ and many remote slaves in our subsidiaries connected to the master.

Our applications are running in our subsidiaries. In 99% of the time there are read-only requests made to the slave instance.

But there is also the case of modifying data. Such a request is issued against the master.

Is there a way to ensure that the changes made to the master are replicated to the slave before the next read request?

0 投票
5 回答
42070 浏览

mysql - 查询时出现错误“未知表引擎 'InnoDB'”。重启mysql后

我在服务器 S1 上有 mysql DB(mysql 版本 5.1.41-3ubuntu12.7-log),我在服务器 S2(mysql 版本 5.1.54-1ubuntu4-log)上为这个 DB 创建了主从。
S1 上的数据库正在使用一个数据文件(ibdata)。将数据库转储到 S2 后,我设置了 innodb_file_per_table=1。这使得每个表都有自己的 ibd 文件。现在一切顺利。
但是在 S2 上重新启动 mysql 后,我遇到了这个错误的问题:
Error 'Unknown table engine 'InnoDB'' on query. Default database: MyDB 当我尝试显示引擎时

innodb 未列出。
在错误日志中我可以看到:

我试图删除 ib_logfiles 但这也不起作用。
以前有人遇到过这样的问题吗??任何想法都非常
感谢

0 投票
1 回答
9294 浏览

mysql - MySQL Master-Master 复制和自动增量列问题

我正在使用主-主复制进行一些测试,并且遇到了一些奇怪的问题,我将尝试描述我遵循的过程,以便有人可以重现该问题。

我在 2 个虚拟机上设置了复制,并在每个虚拟机的配置文件中设置了复制:

这些设置应导致自动增量列的算术级数:

Master1 得到奇数,Master2 得到偶数。然后我创建一个测试数据库并添加一个具有以下定义的表:

当然,数据库是在两台服务器上创建的。之后,我执行

在两台服务器上,以便复制开始。为了生成数据,我使用以下过程:

  • 必须插入一条记录才能使流程起飞

    插入 t1(c1,d1) SELECT LPAD('', 50, MD5( RAND() ) ), DATE_ADD( CURDATE(), INTERVAL FLOOR( RAND() * 365) DAY ) ;

  • 然后,您使用 INSERT - SELECT 从同一个表中以 2 n的速率开始插入,n是您执行查询的时间:

    INSERT INTO t1(c1,d1) SELECT LPAD('', 50, MD5( RAND() ) ), DATE_ADD( CURDATE(), INTERVAL FLOOR( RAND() * 365 ) DAY ) FROM t1;

提示:我发现这里描述的这种方法对于为您的表生成随机数据也非常方便。

因此,当我开始在两台服务器上同时执行这些查询时,这总是会导致自动增量列的复制重复键错误。如果有人有任何想法,我将不胜感激!

PS:当然这种查询在生产应用中很少发生,但我相信它仍然证明了一点。

0 投票
2 回答
1593 浏览

mysql - 用于复制的 EBS 卷的快照

我在 EBS 卷上设置了一个带有 MySQL 的 EC2 实例,并设置了另一个充当复制从属的实例。复制设置很好。我的问题是关于拍摄这些卷的快照。我注意到需要为快照过程锁定表,这可能会给用户带来不便。所以,我的想法是不理会主实例,并拍摄充当从属实例的快照。这是一个好主意吗?有没有人有类似的设置并且可以以正确的方式指导我?

此外,拍摄从属实例的快照需要锁定表。这是否意味着复制会中断?

提前致谢。

0 投票
2 回答
27514 浏览

mysql - MySQL 从站不复制

我之前已经为 2 台服务器设置了 MySQL 主/从复制,没有问题,我通常按照这里的 MySQL 网站上的优秀文档进行操作。但是这次我已经设置好了,一切看起来应该可以工作,但是从站没有用来自主站的新数据进行更新。我将显示主服务器和服务器的一些输出。

大师(IP:10.1.1.21)

'107', 'repl', '10.1.1.22:60686', NULL, 'Binlog Dump', '523', '已将所有binlog发送到slave;等待更新 binlog', NULL

'mysql-bin.000280'、'10494'、'joomla'、'mysql'

从机 (IP:10.1.1.22)

'9', '系统用户', '', NULL, '连接', '625', '等待主机发送事件', NULL

'10', '系统用户', '', NULL, '连接', '10', '已读取所有中继日志;等待从 I/O 线程更新它', NULL

'等待主机发送事件','10.1.1.21','repl','3306','60','mysql-bin.000280','14029','tim-Dell-DM061-relay-bin。 000002','14174','mysql-bin.000280','是','是','','','','','','','0','','0 ', '14029', '14338', '无', '', '0', '否', '', '', '', '', '', '0', '否', '0 ', '', '0', ''

我测试它是否工作的方法是在主服务器上创建一个表。我这样做了,这个新表没有传播到从站。我确实检查了中继二进制日志,其中确实有很多更新。这是一个网站数据库,我刚刚检查了它的命中数正在传播到从站,所以它似乎有点工作。

创建表没有传播,而且我尝试将一些数据插入到测试表中,当我对从站进行初始数据同步时,该表存在,这也不会传播到从站。

关于如何进一步调试的任何想法?

谢谢!

编辑:

返回 2列show global variables like 'replicate%':“Variable_name”、“Value”。没有任何数据行。

0 投票
0 回答
533 浏览

c# - WPF 中的主从组合

我是 WPF 的新手,特别是它的数据绑定。

我有一个具有递归结构的表。表结构如下图所示:

我在表单上有两个组合,第一个组合填充了以下查询返回的项目:

在此组合中选择一个项目会导致加载表中 ParentID 等于所选项目 ID 的每一行。以下查询返回填充第二个组合的项目:

我对这个问题的解决方案(如果它可以成为一个解决方案!):

我通过以下查询将数据加载到数据集中,但加载到两个不同的数据表中:

然后我创建一个视图,将子表的 TargetID 与主表的 ID 关联起来:

最后,我将这个 istance 的 DataContext 设置为数据源

this.DataContext = ds;

XAML 代码中的两个组合定义如下:

但是第二个组合框没有填充任何数据。有任何想法吗?