标签: mysql-replication

什么可以防止 mysql master-master 设置中的循环?

我有两台服务器作为双主服务器运行 mysql(每台服务器都是主服务器,每台服务器都从属于另一个)。在对峰值负载期间可能出现的问题进行故障排除时,我开始想知道 mysql 如何防止这种关系中的命令“循环”。

我的具体问题是:

如果 A 从属于 B,而 B 从属于 A,什么会阻止在 A 上执行并通过它们的 master(A)->slave(B) 关系传播到 B 的 SQL 命令进一步传播回A 通过 master(B)->slave(A) 关系?

我的猜测是,除了命令本身之外,还为传递的命令提供了某种唯一标识,以便 A 知道它以前执行过该命令(大概使用了该server-id选项)。但是,我今天的 google-fu 太弱了,无法了解其背后的工作原理。

以下是这与我的问题的关系。每 5 分钟我就会看到Read_Master_Log_Pos和之间的滞后Exec_Master_Log_Pos。我理解这个的基本原因 - 我相信应用程序被配置为以五分钟的时间间隔在数据库上转储大量数据(实际上,在绘制值之间的 15 秒增量时,我推测有一个常数每 5 分钟跑一次,每 15 分钟设置更多,每 30 分钟设置更多)。

但我真正担心的是,两个奴隶都表现出同样的延迟。我对这个应用程序设计的理解是,除非该服务器不可用,否则将始终使用“活动”(从应用程序的角度,而不是从 mysql 的角度)数据库服务器,在这种情况下,应用程序将尝试使用“备用”数据库服务器。如果这是真的,为什么我会在两个从站上看到读取/执行延迟?如果它不是真的,我是否对应用程序架构有根本的误解,或者“活动”服务器是否被过度使用,以至于即使服务器从未“停机”,应用程序也会自行故障转移?(最后两个不是科幻问题,只是我正在努力回答的问题)

我读到 mysql 主/从关系中的主站相当简单,因为它将所有内容发送给从站,由从站决定执行哪些命令(如果有)。如果是这种情况,也许我在备用服务器的从属服务器上看到的延迟是由于所有那些已经执行的命令被拉下并且必须评估这些命令是否已经被执行造成的。

mysql mysql-replication

2
推荐指数
1
解决办法
2708
查看次数

MySQL复制Slave_IO_Running:否

我有两台服务器,我试图在它们之间复制一个数据库。我在 sourceforge 上找到了一个设置指南,我遵循了它,从那时起我尝试了各种其他设置,但无论我做什么,当我启动从站时,“Slave_IO_Running”设置始终为“否”......

我不知道为什么或要看什么,任何建议都会受到赞赏。

从站设置是:

将主更改为 MASTER_HOST='myserver.mydomain.net'、MASTER_USER='slave_user'、'MASTER_PASSWORD='mypassword'、'MASTER_LOG_FILE='mysql-bin.000011'、MASTER_LOG_POS=1368363

(今天的最后数据,尝试再次进行设置。我从新转储中删除并重新创建了从站上的数据库,并尝试重做设置。)

我已经为 %、localhost 和从属计算机的特定 IP 设置了 Slave_user,但似乎没有任何效果...

预先感谢您的任何意见或建议

mysql mysql-replication

2
推荐指数
1
解决办法
4万
查看次数

MySQL 是否可以设置特定于数据库的主二进制日志?

我的 MySQL 服务器上的每个 MySQL 数据库是否可以拥有唯一的二进制日志?我已经进行了一些谷歌搜索,似乎找不到任何解决方案。一定有办法的!!

mysql mysql-replication

2
推荐指数
1
解决办法
3839
查看次数

Broken Slave(MySQL 复制)

昨晚,其中一位开发人员在主机上运行了错误的 mySQL 语句(查询插入具有重复主键的行)。突然,复制到它的从站停止了。Slave 开始将它写入 mysql_relay_logs,在我们可以监控和修复它之前,磁盘空间不足。

Master 配置为保存最近 3 天的 bin_logs,所以我们仍然没有完全丢失复制。现在有人可以帮我解决这个烂摊子吗?

我的主人状态:

mysql> SHOW MASTER STATUS\G
*************************** 1. row ***************************
File: mysql-bin.000017
Position: 30844254
Binlog_Do_DB: 
Binlog_Ignore_DB: 
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

从站状态:mysql

> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
             Slave_IO_State: 
                Master_Host: 192.168.140.110
                Master_User: replication_user
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: mysql-bin.000014
        Read_Master_Log_Pos: 61132382
             Relay_Log_File: mysqld-relay-bin.000037
              Relay_Log_Pos: 1405976
      Relay_Master_Log_File: mysql-bin.000014
           Slave_IO_Running: No
          Slave_SQL_Running: No
            Replicate_Do_DB: 
        Replicate_Ignore_DB: 
         Replicate_Do_Table: 
     Replicate_Ignore_Table: 
    Replicate_Wild_Do_Table: 
Replicate_Wild_Ignore_Table: 
                 Last_Errno: 1062
                 Last_Error: Error 'Duplicate entry '13676-1-2' for key 1' on …
Run Code Online (Sandbox Code Playgroud)

mysql mysql-replication mysql5

2
推荐指数
1
解决办法
1993
查看次数

我在哪里可以找到有关 my.cnf 指令的文档?

我正在浏览如何在 mysql 中设置基本的主/从复制。 http://crazytoon.com/2008/01/29/mysql-how-do-you-set-up-masterslave-replication-in-mysql-centos-rhel-fedora/

但是,当我在 [mysqld] 选项下对某些指令(如“relay-log”或“server-id”)进行谷歌搜索时,我找不到解释每个指令的页面。

有没有我可以去注释所有可以在 my.cnf 中使用的指令以及它们做什么的地方?

mysql mysql-replication

2
推荐指数
1
解决办法
6547
查看次数

将 mysql 从 linux box 移动到本地 Vista box 的最简单方法是什么?

我对 mysql 还很陌生……温柔点。我正在尝试将 mysql db 从 linux 盒移动到我进行所有开发的 windows 盒。

有人可以告诉或参考我,如何一步一步地做到这一点?

谢谢

mysql mysql-replication

1
推荐指数
1
解决办法
2509
查看次数

星型拓扑中的 MySQL

我有一个中央数据库,其中包含 MySQL 5.1-lastest-stable 中的所有数据。我想在主主关系中连接多个客户。

问题
如何设置中间有 1 个中央服务器和多个客户端数据库的星型拓扑,以便一个客户端中的更改首先传播到中央服务器,然后再从那里传播到所有其他客户端数据库?

数据库信息
我对所有表都使用 inno-db,并且启用了二进制日志。
除此之外,我还学会了如何在数据库之间进行 master-master 操作。
所有表都有主键主整数自动增量。自动增量 offset 和 start 被调整到不同的客户端数据库永远不会有主键冲突。

为什么我想要这个
我有客户端软件(不是网站或 php)连接到笔记本电脑上的本地 MySQL 数据库,这需要同步到中央数据库,以便所有在笔记本电脑上使用该程序的人都能看到其他其他人所做的改变。
我不想直接连接中央数据库,因为如果笔记本电脑和中央数据库之间的互联网连接断开,我的应用程序就会死亡。
在此设置中,应用程序继续运行,在重新建立与中央数据库的连接之前,笔记本电脑不会从其他人那里获取更新。

mysql mysql-replication topology

1
推荐指数
1
解决办法
4788
查看次数

mysql大师大师大师

我有 n 个服务器,我计划使用 master-master 配置设置 n 个主服务器。什么架构将是最好的架构?我还需要处理自动增量表的事情......

说,如果我的服务器是 A, B ,C 和 D 。将 B 的主人指向 A、C 和 B 的主人、D 的主人作为 C、A 的主人作为 D 是否可以安全?这会导致任何数据一致性问题。还有其他更好的方法吗??

mysql linux mysql-replication

1
推荐指数
1
解决办法
259
查看次数

Seconds_behind_master 值在 MySQL 复制从站中不断增加

我们有一个MySQL 5.0.77主从复制。在过去的几周里,复制没有正常运行,它给了Duplicate entry error 1062. 该Set Global Skip-counter选项没有帮助,因此我不得不error no.1062通过将其添加到/etc/my.cnf文件中来跳过该选项,然后它报告了某个特定数据库中不存在表的错误。

然后我取了一个mysqldump那个数据库并在上周末在 Slave 中恢复。然后Slave IO_ThreadSlave_SQL两者都开始正常运行,看起来复制又回到了正轨。该Seconds_behind_master值非常高,然后在过去 4 天开始下降。

今天查看slave复制状态,发现seconds_behind_master从早上开始就一直在增加。我停止了slave IO_Thread一次,然后 seconds_behind_master 变成了 Null。然后在我开始后IO_thread,价值变得相同并不断增加。

我看到一个进程正在从早上system user gss-app Connect 9535736 copy to tmp table ALTER TABLEqueue_clicks ADD INDEX(puid运行 )

请帮我解决这个问题。谢谢。

#mysql> show slave status\G;
`*************************** 1. row ***************************
             Slave_IO_State: Waiting for master to send event
                Master_Host: 203.x.x.x
                Master_User: …
Run Code Online (Sandbox Code Playgroud)

mysql-replication

1
推荐指数
1
解决办法
1万
查看次数

如何使 AWS RDS MySQL Read“副本”具有不同的架构?

我不想使用 AWS CLI/UI创建只读副本,而是想创建一个具有“足够接近”架构的数据库实例并将其设置为副本。

我需要进行架构更改(排序规则更改),但无法在 MySQL 中实时完成。我想通过使用架构更改创建一个读取“副本”来进行此更改,然后提升只读“副本”。

问题在于 AWS RDS MySQL 只读副本机制要求两个架构准确无误。

我知道在MySQL中一般可以做到这一点(虽然我不知道具体情况);我想完全在 AWS RDS 框架内完成此操作。

mysql-replication amazon-web-services amazon-rds

1
推荐指数
1
解决办法
3879
查看次数

我应该使用公共 IP 还是私有 IP 来连接同一 VPC 中的服务器?

我在 AWS 上有 2 个 Linux 服务器。两台服务器都在默认 vpc(aws 默认 vpc)中。这两个服务器都有自己的弹性 IP。我还有一个位于同一个 vpc 内的 webServer。

我想在这两台服务器上运行一个复制的 MySQL,所以一台服务器是主服务器,另一台是从服务器。

我需要为每个MySQL服务器提供一个ip地址,所以在my.cnf中,有一个设置: bind-address

我应该使用公共 IP 还是私有 IP 作为绑定地址?(所有需要访问 MySQL 服务器的计算机都在同一个 vpc 中)。

注意两台服务器都在同一个安全组中,我已经打开了安全组内的所有端口。

mysql mysql-replication amazon-web-services amazon-vpc

1
推荐指数
1
解决办法
204
查看次数

在专用服务器中实现完全冗余的最佳方法是什么?

我一直在阅读有关完全冗余的内容,以实现在专用服务器上运行的关键任务应用程序(处理财务数据)的几乎(如果不是 100%)正常运行时间,但我仍然无法理解如何做到这一点。

1) 假设我当前的服务器上运行着多个 Web 应用程序(包含大量且频繁的文件和数据库更新)。根据我的阅读,我需要获得另一台专用服务器(作为备份服务器),我可以在其中镜像所有文件和数据库数据,并且如果我的主服务器因任何原因出现故障,我的备份服务器将立即承担负载。从主服务器到备份服务器的传输是通过 DNS 完成的。它是否正确?还有比这更好的实现冗余的方法吗?

2)如果我们按照#1 中提到的操作,如果主服务器再次上线会发生什么情况?主服务器如何赶上备份服务器上所做的所有更改?

3)是否有我可以阅读的明确指南,了解我可以做到这一点的最佳方式?我已经通过 Google 进行了搜索,但我遇到的大多数情况对我们来说不起作用,因为我们的网络应用程序至少不能关闭超过 5 分钟,而且我们不能丢失 5 分钟的数据。

4)有没有可以为我们做这件事的服务?由于我们已经拥有一个现有的专用服务器,因此该服务必须围绕现有的工作环境运行。但我更希望自己能够学习如何做到这一点。

如果你们能在这里指出正确的方向,我将不胜感激。

linux mysql-replication redundancy dedicated-server

-3
推荐指数
1
解决办法
576
查看次数