mysql主从复制

mysql主从复制

1. 主从复制的主要功能

  • 1)数据分布

在不同的数据中心实现数据的复制。

  • 2)读取的负载均衡

建立多个从服务器,将读取操作分散到从服务器,降低主服务器压力。

  • 3)数据库备份

复制对备份很有帮助,但是从服务器不是备份,不能完全替代备份。

  • 4)高可用性和故障转移

通过复制建立的从服务器有助于故障转移,减少故障的停机时间和恢复时间。

2. 复制的工作原理

  • 1) 主服务器将更改记录到二进制日志(binlog)中
  • 2) 从服务器把主服务器的二进制日志复制到自己的中继日志(relay log)中
  • 3) 从服务器重做中继日志中日志,把更改应用到自己的数据库上,以达到数据的最终一致性

注意复制是异步实时的,存在主从执行延迟。复制的工作原理如下图所示:
在这里插入图片描述

从服务器有两个线程:

  1. 一个是I/O线程,负责读取主服务器的二进制日志
  2. 一个是sql线程,复制执行中继日志

主从同步并非完全同步,可通过show salve status和show master status命令查看同步状况。
下面是show salve status的主要变量:

Master_Log_File:                      SLAVE中的I/O线程当前正在读取的主服务器二进制日志文件的名称
Read_Master_Log_Pos:        在当前的主服务器二进制日志中,SLAVE中的I/O线程已经同步的偏移量位置
Relay_Log_File:                        SQL线程当前正在读取和执行的中继日志文件的名称
Relay_Log_Pos:                        在当前的中继日志中,SQL线程已读取和执行的位置
Relay_Master_Log_File:      由SQL线程执行的包含多数近期事件的主服务器二进制日志文件的名称
Slave_IO_Running:                 I/O线程是否被启动并成功地连接到主服务器上
Slave_SQL_Running:              SQL线程是否被启动
Seconds_Behind_Master:     从属服务器SQL线程和从属服务器I/O线程之间的时间差距,单位以秒计。

延迟的判断:

  1. 通过主服务器上面的Position-Read_Master_Log_Pos 就可得知I/O线程的延迟。
  2. Seconds_Behind_Master
    其值有这么几种:
    NULL - 表示io_thread或是sql_thread有任何一个发生故障,也就是该线程的Running状态是No,而非Yes.
    0 - 该值为零,是我们极为渴望看到的情况,表示主从复制良好,可以认为lag不存在。
    正值 - 表示主从已经出现延时,数字越大表示从库落后主库越多。
    负值 - 几乎很少见,只是听一些资深的DBA说见过,其实,这是一个BUG值,该参数是不支持负值的,也就是不应该出现。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值