首页 > 数据库 >mysql主从复制原理详解32讲

mysql主从复制原理详解32讲

时间:2022-10-27 10:32:24浏览次数:128  
标签:主库 主从复制 slave thread 32 MySQL master mysql


请问Mysql的主从复制原理是什么?如果我要实现主从复制,需要怎么操作呢?(如果有具体教程就最好了)

可以参考这篇文章

下面关于数据库主从复制机制的原理概述,哪个是错误的?

主库的主机关机时,数据只能读不能写,并且从库的主机关机后,数据仍然可读可写,这个不好弄,如果你对lua脚本有所了解,修改mysql-proxy的读写分离脚本或许可以实现。不过主库关机时不能访问,并且从库关机仍可读可写,这个不需要配读写分离,这本来就是主从复制的基本能力,从库只是备用的而已。从库关闭后再开启,slaveIO线程会自动从中断处二进制日志的位置开始复制主机的二进制日志,slaveSQL线程会读取并执行这些二进制日志中的SQL。总之,不需要特别的配置,这是主从复制的基本能力。

本回答由网友推荐

MySQL是什么?

  MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。MySQL关系型数据库于1998年1月发行第一个版本。它使用系统核心提供的多线程机制提供完全的多线程运行模式,提供了面向C、C++、Eiffel、Java、Perl、PHP、Python以及Tcl等编程语言的编程接口(APIs),支持多种字段类型并且提供了完整的操作符支持查询中的SELECT和WHERE操作。

MYSQL有什么优势呢?

MYISAM强调了快速读取操作,这可能就是为什么MYSQL受到了WEB开发如此青睐的主要原因:在WEB开发中你所进行的大量数据操作都是读取操作

MySQL如何实现主从复制过程的示例详解

如何在一台windows主机上实现MySQL的主从复制 先在主数据库中创建新数据库rep_test。 然后编辑主数据库的my.ini文件 在[mysqld]节点中增加如下内容: server-id=1 #指定唯一的ID,1至32,必须的 log-bin=mysql-log-bin #指定二进制日志存放路径...主从复制延迟的监测,我以前的做法是通过比较show slave statusg中的两个变量的差值(read_master_log_pos,exec_master_log_pos),将差值设置为一个自己认为合理的范围,seconds_behind_master 没有适用过,今天做一次解析:

seconds_behind_master 是通过比较 sql thread 接受 events事件的时间戳(timestamp) 与io thread 执行事件 events时间戳的差值--秒数来确定slave 落后于master多少。如果主从机器的时间不同,该时间的计算也是不会受影响的(如果时间发生异常,则这个秒数的就不怎么可靠啦)

如果slave sql thread 或者 slave i/o thread 或者没有连接到master,那么该变量的值为null.

0:表示master slave 复制没有延迟(大部分情况下是这个样子)。

正值:表示slave落后于master的秒数。

在网络很快的情况下,i/o thread 能够很快的从master上获取binlog到slave的 relay-log。这种情况下, seconds_behind_master的值能真正代表slave落后于master的秒数。在网络很差的情况下,i/o thread 同步很慢,slave收到的二进制日志信息,sql thread能够很快的执行。这个时候 seconds_behind_master 是0,这种情况下 slave落后于master很多。

为了排除网络的干扰,我们可以参考percona 的工具 pt-heartbeat.

该工具可以计算出mysql复制或者是postgresql,它可以更新master或者监控复制。它还可以从my.cnf 读取配置。它借助timestmp的比较实现的,首先需要保证主从服务器时间必须要保持一致,通过与相同的一个ntp server同步时钟。它需要在主库上创建一个heartbeat的表,里面的时间戳ts就是当前的时间戳 now(),该结构也会被复制到从库上。表建好以后,会在主库上以后台进程的模式去执行一行更新操作的命令,定期去向表中的插入数据,这 个周期默认为1 秒,同时从库也会在后台执行一个监控命令,与主库保持一致的周期+0.5s(默认0.5s延迟检查)去比较,复制过来记录的ts值与主库上的同一条ts值,差值为0表示无延时,差值越大表示 延时的秒数越多。

mysql主从复制原理?

当数据变化时触发同步指令将变化的数据发送到从数据库由其进行更新

标签:主库,主从复制,slave,thread,32,MySQL,master,mysql
From: https://blog.51cto.com/yetaotao/5800207

相关文章

  • mysql主从复制原理过程
    mysql的主从复制和主主复制的区别最大区别是主从是对主操作数据,从会实时同步数据。反之对从操作,主不会同步数据,还有可能造成数据紊乱,导致主从失效。主主则是无论对那一台操......
  • 数据库mysql主从复制
    mysql主从复制是怎么工作的呢?说说各个线程具体做了什么吧要实现MySQL的Replication,首先必须打开Master端的BinaryLog,因为整个复制过程实际上就是Slave从Master端获取该日志......
  • ImportError: libmysqlclient.so.20: cannot open shared object file: No such file
    报错:Traceback(mostrecentcalllast):File"/usr/local/lib64/python3.6/site-packages/MySQLdb/__init__.py",line18,in<module>from.import_mysqlI......
  • MySQL 命令大全
    非常不错的总结,强烈建议保存下来,需要的时候看一看。基本操作/*Windows服务*/--启动MySQLnetstartmysql--创建Windows服务sccreatemysqlbinPath=my......
  • MySQL之——MySQL5.7以上my.cnf 配置文件详解
    简单配置,低配置服务器配置[client]#客户端设置port=3306socket=/data/mysql/data/mysql.sockdefault-character-set=utf8mb4[mysqld]user=mysql......
  • Mysql DDL 大表 遇到的问题
    一张表yunpan_item大概有十几万的数据,上面有一个FullTextindex。altertableyunpan_itemaddcolumn`data_index`bigintCOMMENT'帖子id'aftersource;......
  • AIR32F103(三) Linux环境基于标准外设库的项目模板
    目录AIR32F103(一)合宙AIR32F103CBT6开发板上手报告AIR32F103(二)Linux环境和LibOpenCM3项目模板AIR32F103(三)Linux环境基于标准外设库的项目模板Linux开发环境......
  • MySQL 8.x 解压版的安装步骤
    点击查看代码[mysql]#设置mysql客户端默认字符集default-character-set=utf8[mysqld]#设置3306端口port=3306#设置mysql的安装目录basedir=D:\mysql-8.0......
  • AIR32F103(二) Linux LibOpenCM3开发环境
    目录AIR32F103(一)合宙AIR32F103CBT6开发板上手报告AIR32F103(二)LinuxLibOpenCM3开发环境Linux开发环境在Linux下和STM32F1xx的开发环境是一样的,可以使用gcc......
  • jdbc入门案例学习,java如何连接mysql,如何和mysql进行连接
    在学习了java基础和mysql以及SQL语法之后,那我们可以开始学习如何程序对数据库的数据进行操作,基本操作就是,查询,新增,更新,删除,四个基本操作,也是全部操作。这节我们将通过jdb......