mysql小白系列_10 mysql主从复制原理

1.如何解决主从复制延迟的问题?

(1)主从复制原理

http://www.cnblogs.com/jenvid/p/8410922.html

  • 1.salve执行slave start,salve服务IO线程会通过授权的用户连接上master,并请求master从指定的文件和位置之后发送bin-log日志内容
  • 2.master服务器接收到来自slave服务器的IO线程请求后,master服务器上的IO线程根据slave服务器发送的指定bin-log日志之后的内容,然后返回给slave的IO线程,返回的信息中出了bin-log日志内容wait,还有本次返回日志内容后在master服务器端新的binlog文件名已经在binlog中的下一个指定更新位
  • 3.slave的IO线程接收到信息后,将接收到的日志内容依次添加到salve端的relay-log文件的最末端,并将读取到的master端的bin-log的文件名和位置记录到master-info文件中,以便下一次读取的时候能够清楚的告诉master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”、
  • 4.slave的SQL线程检测到relay-log中新增了内容后,会马上解析relay-log的内容成为master端真实执行时候的那些可执行的内容,并在自身执行。
(2)产生延迟的原因
  • 1.主从复制是单线程操作,异步进行
  • 2.master的binlog是顺序读写,效率高、吞吐量高,DDL/DML是并发操作的
  • 3.slave的relay-log实施的时候,DML和DLL是随机操作且Slave_SQL_Running是单线程的,如果还有lock争用,成本就更高了
  • 4.master TPS并发高峰时,产生的DDL数量超过slave一个sql线程所能承受的范围,延迟就产生了
  • 5.max_allowed_packet主从不一致
  • 6.自增ID起始位置不一样
  • 7.主高从低版本不一致,新特性不兼容
(3)解决延迟问题
  • 1.主库DDL快速执行DDL操作
  • 2.主库设置双1sync_binlog=1 innodb_flush_log_at_trx_commit=1
  • 3.从库上可以设置为双0
  • 4.slave_net_timeoutslave读取log数据失败后,等待多久重新建立连接并获取数据
  • 5.master-connect-retry重新建立主从连接时,如果连接失败,重试的等待时间
  • 6.从库使用更好的硬件
  • 7.专用slave服务器,专用读服务器,专用备份服务器
  • 8.使用semi_sync插件进行半同步,损失性能

2.如何判断主从复制是否同步?

(1)show slave status\G
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
        Seconds_Behind_Master: 0

Seconds_Behind_Master是通过比较sql_thread执行的event的timestamp和io_thread复制好的 event的timestamp(简写为ts)进行比较的差值

(2)如果Relay_master_Log_File == Master_Log_File
  1. Read_Master_Log_Pos == Exec_Master_Log_Pos,则认为是同步的
  2. 主库show master status\GPosition与从库的Read_Master_Log_Pos相等,也是同步的
(3)使用第三方工具

mk-heartbeat,Maatkit

3.以下参数设为1怎么理解?

set global sql_slave_skip_counter=1;

https://dev.mysql.com/doc/refman/5.6/en/set-global-sql-slave-skip-counter.html

  • (1)从库需要跳过某个无法执行的命令,在slave stop的状态下设置global sql_slave_skip_counter=N,跳过接下来的N个事件

一个event group包含多个有序的events

一个insert包含三个event,begin/insert/commit

对于事务性的表,一个event group代表一个事务

对于非事务性的表,一个event group代表一个单独的SQL语句

  • (2)N=1,会跳过若干个event,直到当前所在事务结束
  • (3)N>1,则每跳过一个event都要N--

http://dinglin.iteye.com/blog/1236330

原文地址:https://www.cnblogs.com/jenvid/p/8495397.html

时间: 2024-10-01 03:23:38

mysql小白系列_10 mysql主从复制原理的相关文章

mysql小白系列_09 mysql性能优化关键点

一 服务器参数调优,有哪些关键点? 1. 应用访问优化 优化方法 性能提升效果 优化成本 说明 减少数据访问能不访问就不访问-减少磁盘IO 1~1000 低 缓存服务器缓存mysql数据,Redis.memorycache 返回更少的数据较少网络传输和磁盘IO 1~100 低 光折射损耗,请求距离/光速=响应时间 减少交互次数 较少网络传输 1~20 低 存储过程(缺乏扩展性),但很少使用,因此应用层实现 IOPS的一些数据 SAS的IOPS 100-200,顺序读写吞吐量大,通常放置顺序写的l

MySQL系列之E-1------MySQL主从复制原理

主从复制是异步复制,可以通过google的一个插件实现半同步 E.1 主从复制原理 1.建立主从复制的用户名和密码 2.将master上主库需要进行复制的库"锁库" 3.通过mysqldump备份master上主库,"解锁",在slave端进行恢复 4.更改配置文件 5.在丛库上执行change master to 6.开启复制

MySQL笔记系列:MySQL架构

MySQL逻辑架构 连接管理与安全性: 1.MySQL会为每一个客户端连接分配一个线程,这个连接的查询只会在这个单独的线程执行.服务器会负责缓存线程,因此不需要为每一个新建立的连接创建或则销毁线程. 2.当客户端连接到MySQL服务器时,服务器将对其进行身份认证.认证基于用户名.主机信息和密码,也可以基于SSL的方式进行连接.一旦客户端连接成功,服务器会继续验证该客户端是否具有执行某个特定查询的权限. 优化与执行: 1.MySQL会解析.查询,并创建内部数据结构,然后对其进行各种优化,包括重写查

mysql小白系列_04 datablock

1.为什么创建一个InnoDB表只分配了96K而不是1M? 2.解析第2行记录格式?(用下面的表定义和数据做测试) mysql> create table gyj_t3 (id int,name1 varchar(10),name2 varchar(10),name3 varchar(10),name4 varchar(10),name5 varchar(10)); Query OK, 0 rows affected (0.11 sec) mysql> insert into gyj_t3 (

python操作mysql数据库系列-安装MySql数据库

1.首先下载mysql我选择的版本是5.7.19 基于64位的windows操作系统.mysql的下载地址传送门:https://dev.mysql.com/downloads/mysql/  这里面有不同操作系统的安装包大家有需要都可以自行去下载. 具体安装如下: 1.把 mysql-8.10-winx64zip 压缩文件解压到 D:\application\mysql 目录下: 2.在  D:\application\mysql目录下新建 my.ini 配置文件: 3.用文本编辑器或其他编辑

【MySQL主从复制原理及搭建全过程】

目录 准备工作 主从复制原理 开始搭建主从复制 本文将使用mariaDB数据库实现主从复制,其步骤与MySQL数据库无差异. MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可. 开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避免这个风险. MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的替代品. Red Hat Enterprise Linux/Ce

MySQL主从复制原理深入解析与练习

MySQL主从复制画图描述: MySQL主从复制原理上图详解: ① 用户做crud操作,写入数据库,更新结果记录到binlog中: ② 主从同步是主找从的,从库IO发起请求,主库的主进程看从库的master change中给的参数是否合法,如果合法主进程交给IO进程进行3操作,否则拒绝: ③ 主库根据master的位置点,从这个位置点的binlog日志一直到binlog最后,将其准备发送给从库: ④ 将找到的binlog日志发给从库,并且还会发送新的日志点: ⑤ 从库收到binlog日志,将其写

mysql之主从复制原理

参考官方文档: http://dev.mysql.com/doc/refman/5.6/en/replication-implementation.html 找个时间写一下. mysql之主从复制原理,布布扣,bubuko.com

MySQL主从复制原理和实践

mysql主从复制 mysql支持单向 双向 链式级联 实时 异步复制,在复制过程中,一台服务器充当主服务器(Master),而一个或多个其他服务器充当从服务器(Slave) mysql主从复制的应用场景 1.主从服务器互为备份 2.主从服务器读写分离分担网站压力 读写分离 中大型公司:通过程序(php,java) 测试环境:代理软件(mysql-proxy,amoeba) 门户网站:分布式dbproxy(读写分离,hash负载均衡,健康检查) 主从同步实践操作(多实例环境) 1.主库上面设置s