首页 > 数据库 >MySQL主备

MySQL主备

时间:2023-07-16 14:33:54浏览次数:59  
标签:主库 binlog 备库 server 主备 MySQL row

MySQL主备同步原理
1 备库io_thread通过长连接获取主库的binlog
2 备库sql_thread执行binlog

节点A和B之间互为主备关系,都认为对方是主,切换时不用再修改主备关系。
解决双M binlog循环同步问题
1 A更新的事务,binlog记的是A的server id
2 B同步后生成的binlog的server id也是A的server id
3 A继续同步时,发现server id是自己,不会处理,避免死循环。

把备库设置成只读模式的原因是
1 避免在备库上执行运维操作出现写操作
2 防止切换过程中出现双写而造成主备不一致

只读实例和双M备库区别
只读实例使用异步方式来同步binlog,存在延迟;双M备库使用同步方式,不存在延迟。

binlog有3种格式,分别是statement、row和mixed。其中,mixed是statement和row的混合场景。
statement:binlog记录SQL语句原文,占用空间小。
row:记录操作行的具体信息(包括主键id),不会有主备删除不同行的问题,占用空间大。
mixed:判断SQL语句是否可能引起主备不一致,如果可能,就用row,否则就用statement。

主备延迟
1 主库A执行完成事务,写入binlog,时刻是T1
2 备库B接收完这个binlog,时刻是T2
3 备库B执行完成这个事务,时刻是T3
同一个事务,在备库执行完成的时间和主库执行完成的时间差值。
在备库上执行show slave status,seconds_behind_master表示备库延迟了多少秒。
网络正常时,日志从主库传给备库时间很短,即T2-T1值非常小,主备延迟的主要来源是备库接收完binlog和执行完这个事务之间的时间差。

双M主备切换流程
1 判断备库B当前seconds_behind_master,如果小于某个值(比如5秒)继续下一步,否则持续重试这一步
2 主库A改成只读
3 判断备库B的seconds_behind_master,直到这个值变成0
4 备库B改成可读写
5 业务请求切到备库B

标签:主库,binlog,备库,server,主备,MySQL,row
From: https://www.cnblogs.com/WJQ2017/p/17557833.html

相关文章

  • mysql安装
    安装方式选择:二进制、源码、yum安装(生产选择二进制安装)参考链接:https://www.cnblogs.com/yyxianren/p/11319544.html1.卸载默认安装的mariadb:  yumremovemariadb*-y2.添加mysql用户:  useradd-s/sbin/nologin-Mmysql3.解压tar文件并移动到指定目录,并赋权: ......
  • MySQL索引
    主键索引和普通索引结构上的区别每一个索引在InnoDB里面对应一棵B+树。有一个主键列为ID的表,表中有字段k,在k上有索引。CREATETABLET(  idintPRIMARYKEY,  kintNOTNULL,  namevarchar(16),  INDEX(k))ENGINE=InnoDB;表中R1~R5的(ID,k)值分别为(100,1......
  • MySQL自增值
    InnoDB引擎1自增值的保存机制MySQL5.7及之前的版本自增值保存在了内存里面,MySQL8.0版本才有自增值持久化能力(把自增值的变更记录在了redolog,重启后依靠redolog回复)。每次重启后,把自增值的最大值max(id)+1作为这个表当前的自增值。例如,一个表最大的id是10,AUTO_INCREMENT=11,删......
  • mysql主从复制
    1.MySQL主从复制介绍  主从复制实现的原理:(同步二进制日志文件)  主服务器开启二进制日志功能,当mysql进行操作同时生成一条操作事件日志,  并写入二进制日志文件中,从服务器通过同步二进制日志文件,并在从服务器  重新执行该事件,从而实现主从复制。2.主从服务器配置 ......
  • docker yum mysql
    Docker容器中使用Yum安装MySQL概述Docker是一个流行的容器化平台,它允许我们在独立、可移植的容器中运行应用程序。Yum(YellowdogUpdaterModified)是RedHatLinux和CentOS操作系统中的一个软件包管理器,它可以方便地用于安装、更新和删除软件包。本文将介绍如何在Docker容器中使用......
  • MySQL8 Bug 记录
    配置相关MySQL8安全插件更新导致的兼容性问题mysql8提供了新的功能,这些功能会影响用户创建或更新用户密码,以及使用那些仅支持mysql5登陆方式的客户端工具PasswordValidationOptionsandVariablesAuthenticationPlugins密码验证组件该组件要求用户必须设置符合一定......
  • JAVA面试题----MYSQL
     MYSQL。          mysql使用的引擎是InnoDB,它有四大特性:1插入缓冲2二次写3自适应hash索引(ahi),就不用走B+树了;4预读。使用InnoDB因为它是事务安全的存储引擎,它具备提交,回滚以及崩溃恢复的功能以及保护用户数据。MYSQL的索引分类:1主键索引2,唯一索引3.复合索......
  • 深入理解MySQL数据库索引优化
    在现代应用程序中,数据库是至关重要的组成部分。MySQL作为一种常用的关系型数据库管理系统,索引是其性能优化的关键。本文将深入介绍MySQL数据库索引的概念、类型以及优化技巧,帮助读者更好地理解和利用索引提升数据库查询性能。1.什么是索引?索引是一种数据结构,用于快速定位和访问数......
  • 0.mysql基础sql
    常用的数据库sql语句,数据库相关的技术和理论是成体系的,从基础使用到数据库原理,到性能优化,海量数据处理,但不同的技术角色所需掌握的深度是不同的:如果你是一位普通系统软件开发人员掌握基本sql操作、数据库索引、存储结构等也够用如果你是一位高并发系统的架构设计与开发者,那海量......
  • 腾讯技术官编写的594页MySQL优化手册,竟意外冲上GitHub调优热榜
    前言:当下互联网时代,MySQL受热捧的程度不容置疑,位列全球最流行的开源数据库也当之无愧,它广泛应用的因由不仅是产品本身的优势,更重要的是有无数社区技术爱好者为其默默耕耘。近几年MySQL发展迅速,各分支在性能与架构方面优化都有所突破与发展;与此同时,互联网应用业务也更加复杂,更具有......