- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下 MySQL 实例以及复制设置:
S1 -----> (M1 <--> M2),其中:
M1 - M2 是一个多主复制设置,
S1 - 复制在主 M1 上完成的写入的从站。
现在,我正在尝试使用 channel 故障转移机制来增强设置,如果 M1 出现故障,S1 将开始从 M2 进行复制。目前,我看到的唯一方法是:
(S1机器上的M1故障检测机制),则:
-> S1从本地中继日志文件中获取M1查询的最新时间戳。
-> M2 搜索(使用 mysqlbinlog 实用程序的 bash 脚本)本地 binlog 文件 + binlog 索引 对应于 S1 的最新时间戳
-> S1 终于可以执行“STOP SLAVE”、“CHANGE MASTER TO master_host=M2...master_log_file=...master_log_pos=...”等命令继续复制,但是这次从 M2
是否有更好(且更不容易出错)的方法来做到这一点?
谢谢
编辑:如今,由于可公开访问的 MySQL 集群解决方案通常使用独特的 Xid
binlog 查询标签,这更容易实现。
最佳答案
有一种更简单的方法来检索所需的二进制日志和位置。
仅使用 M2 知道的当前二进制日志和位置是否更有意义?您需要检查 M2 上的 Slave 状态。
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.64.51.130
Master_User: replicant
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000463
Read_Master_Log_Pos: 453865699
Relay_Log_File: relay-bin.001226
Relay_Log_Pos: 453865845
Relay_Master_Log_File: mysql-bin.000463
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB: search_cache
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 453865699
Relay_Log_Space: 453866038
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 106451130
1 row in set (0.00 sec)
mysql>
对于此显示,有五个关键组成部分:
Relay_Log_Space
请注意Relay_Log_Space
。一旦这个数字停止递增,从 Master 导入的每条 SQL 语句都已被读取。不幸的是,由于突然的故障转移,最后一个中继日志可能已损坏或不完整。
复制坐标
另请注意复制坐标(Relay_Master_Log_File, Exec_Master_Log_Pos)
。这就是您正在寻找的职位。但是,与 Relay_Log_Space
一样,它可能仍在递增。事实上,那些复制坐标应该等于其他复制坐标(Master_Log_File,Read_Master_Log_Pos )
。那是你知道一切都被 catch 的时候。如果这对复制坐标永远不会相遇,那么就停止递增的时间而言,您应该更多地依赖 Relay_Log_Space
。
Seconds_Behind_Master
怎么样?您不能使用 Seconds_Behind_Master
的原因很简单。一旦 Master 宕机,只需要一个复制线程(Slave_IO_Running
或 Slave_SQL_Running
)就可以变成No
和 Seconds_Behind_Master
变为 NULL
。
关于MySQL 复制 : failover scenario,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14772801/
我有以下代码: String text = "[\"Scenario 1\", \"Scenario 2\"]" 我需要将 "text" 转换为 Array。我知道我可以替换 [ ] "并执行 spl
我知道 here 中的场景和场景大纲之间的区别。 Scenario states 以更抽象的方式测试的一般点。同时,scenario outline通过几个示例来帮助执行场景。 所以,我们通常会写fe
我在 Cucumber 中有我的特征文件,我正在使用 Given, When, Then 语法 (Gherkin) 在其中编写我的场景,并在步骤定义文件中有相应的步骤。我有一个场景,我正在检查特定数据
我正在尝试运行一些测试作为学习 cucumber 的一部分。但我得到的结果是 0 个场景。在这里,我添加了我编写的代码: 登录功能和- Feature: Application Login S S
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有一个像这样的 XML
我一直在尝试使用 Calabash 来测试一些简单的 iOS 应用程序。我能够在模拟器上运行该应用程序,并且所有步骤都运行良好。现在我想在 iOS 设备上测试它,但我遇到了一些问题。我用所有必要的信息
我有以下 MySQL 实例以及复制设置: S1 -----> (M1 M2),其中: M1 - M2 是一个多主复制设置, S1 - 复制在主 M1 上完成的写入的从站。 现在,我正在尝试使用 ch
我正在使用 Specflow 编写一套模拟月薪的场景,验证每个月的计算付款以及最后的年终数据。 每个月的结果都是累加的,所以后面的每一个场景都依赖于上个月的加减。支付计算通过第三方工具写入数据库,因此
有两个需要的功能:注册时设置密码和更改密码,如果用户忘记了。用户注册时,密码长度必须至少为4个字符;当更改通过时 - 至少 5 个字符。 View 对于注册和更改通行证很常见。显然,还存在 2 个操作
正如主题所述,我很难想象在现实生活中的示例中何时何地使用可恢复异常,以及我们可以通过使用它们获得哪些有效优势。 我能想象的是,一个子系统已连接,比方说通过 RFC 连接到一个 session ,该 s
我正在设计一个游戏,其中一个角色有很多元素,而这些元素可以有多种类型。有一个角色表,以及十二个按类型(例如武器、盔甲和各种其他项目类型)分割的可能项目的不同表。 我想制作一个表来保存这些项目类型的实例
我正在开发一个 Windows 8 Metro 风格的应用程序,在大学的学术项目中使用开发者预览版。我们必须使用 MVVM 模式。 在主页中,我们有一个带有按钮的 Metro 风格主菜单。根据 MVV
目前,我正在使用BDD进行项目,其中涉及一些导入语句,例如 导入 cucumber .api。场景; 但是我找不到合适的依赖项 目前我有依赖 compile 'commons-lang:commons
考虑以下因素: @Given("^this stuff:$") public void this_stuff(List stuffList) throws Throwable { stuffL
我正在寻找如何实现这个场景:我有函数内部的逻辑代码,现在我希望能够在单独的线程中执行此功能。现在我拥有的是这个 .. 的原始实现我简单地初始化线程,在它的启动/运行方法中我保留了函数逻辑。我怎样才能让
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
我有一个相当流行的场景,其中有一个包含进度条和 ListView 的 fragment 。我想在使用 Retrofit 获取数据后填充 ListView。现在,一旦响应返回,就需要使进度条不可见。 存
回答问题前请引用以下程序。在评论中解释了代码。 所以我的问题是赋值运算符重载如何处理 new() 分配内存失败的情况。 例如 Obj1 持有字符串 "GeeksQuiz"。将 Obj2 分配给 Obj
在下面的代码中,我只是想看看我是否能够从每个线程将一个元素插入到数组中。它按预期工作。但后来我想知道,在什么情况下这里会出现竞争条件。我真的需要 volatile 还是信号量?我尝试删除信号量和 vo
我是一名优秀的程序员,十分优秀!