设为首页 收藏本站
查看: 1393|回复: 0

[经验分享] mysql怎么选举出来一个新主

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-1-22 08:52:26 | 显示全部楼层 |阅读模式
一主两从结构中,如果主库挂了,怎么选举出来一个新主
ip 192.168.0.110 3306(主)
ip 192.168.0.110 3307(从)
ip 192.168.0.110 3308(从)

模拟主库挂:
/usr/local/mysql/bin/mysqladmin -uroot -p -S /tmp/mysql3306.sock  shutdown

查看状态
s1:show slave status\G;
s2:show slave status\G;

root@localhost [test]>show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Reconnecting after a failed master event read
                  Master_Host: 192.168.0.110
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 619
               Relay_Log_File: relay-bin.000002
                Relay_Log_Pos: 832
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Connecting
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           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: 619
                  
(1)首先s1和s2同步完成(Seconds_Behind_Master: NULL)
判断io_thread与sql_thread是否执行到同一个位置。
执行完成的依据为:
Master_Log_File == Relay_Master_Log_File  &&
Read_Master_Log_Pos == Exec_Master_Log_Pos

io_thread:
          Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 619
sql_thread:
        Relay_Master_Log_File: mysql-bin.000001
        Exec_Master_Log_Pos: 619

       
假设Master_Log_File==Relay_Master_Log_File但是
        io.Read_Master_Log_Pos >sql.Exec_Master_Log_Pos
说明了什么?
说明relay-log没有应用完。
Slave_SQL_Running: Yes 2-5秒

       
(2)s1和s2 怎么选举出来一个
谁同步靠前,谁当主。
(-)
s1.Relay_Master_Log_File  == s2.Relay_Master_Log_File
s1.Exec_Master_Log_Pos == s2.Exec_Master_Log_Pos   选s1 或者s2都可以

如果s1.Relay_Master_Log_File  == s2.Relay_Master_Log_File 但是
s1.Exec_Master_Log_Pos > s2.Exec_Master_Log_Pos  选s1为主

(二)
同样也可以比较
s1.Master_Log_File==s2.Master_Log_File
s1.Read_Master_Log_Pos==s2.Read_Master_Log_Pos

(3)数据有没有差异怎么办?
出现数据不一致:
1、s1-->读和写全部接管,s2作为故障的从,最后用pt-table-checksum/pt-table-sync修复,在加起来。
  old_master上的日志有没有安全传到slave上面???? MHA可以解决。

(4)GTID环境里面比较下面即可。
Retrieved_Gtid_Set: 6e5d664c-c7e5-11e6-88b1-000c296ae445:3
Executed_Gtid_Set: 6e5d664c-c7e5-11e6-88b1-000c296ae445:1-3

如果s1.GTID>s2.GTID  
选new master为s1;把s2 change 到s1

(5)原来主库怎么办?
变成从库加进去。
主从故障修复 主从一致性检测、修复。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-331819-1-1.html 上篇帖子: 如何用tpcc-mysql工具进行oltp压力测试 下篇帖子: mysql一主一从的结构,怎么最小影响添加一个从库,变成一...
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表