mysql小白系列_10 mysql主从复制原理
1.如何解决主从复制延迟的问题?
(1)主从复制原理
- 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.主库设置
双1
,sync_binlog=1 innodb_flush_log_at_trx_commit=1
- 3.从库上可以设置为
双0
- 4.
slave_net_timeout
slave读取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
Read_Master_Log_Pos
==Exec_Master_Log_Pos
,则认为是同步的主库
show master status\G
的Position
与从库的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--
mysql小白系列_10 mysql主从复制原理的更多相关文章
- mysql小白系列_02 mysql源码安装标准化
问题: 1.为什么数据目录和日志目录需要分开? 2.如何标准化配置多实例?(例如:一台物理主机上部署3306与3307两个实例) 3.详细描述MySQL编译安装的过程(截图安装步骤) 1.为什么数据目 ...
- mysql小白系列_09 mysql性能优化关键点
一 服务器参数调优,有哪些关键点? 1. 应用访问优化 优化方法 性能提升效果 优化成本 说明 减少数据访问能不访问就不访问-减少磁盘IO 1~1000 低 缓存服务器缓存mysql数据,Redis. ...
- mysql小白系列_11 MHA
一.MHA是什么?能干什么的 (1)以Perl语言写的一套Mysql故障切换方案,一个脚本管理工具 (2)保障数据库的高可用性 (3)修复多个slave之间的差异日志,最终使所有的slave保持数据一 ...
- mysql小白系列_05 日常操作
mysql启动/关闭 my.cnf的调用顺序 [root@docker02 bin]# ./mysql --help Default options are read from the followi ...
- mysql小白系列_08 zabbix添加自定义监控项items和触发器
监控mysql存活 1.配置agent自定义参数 vi /usr/local/zabbix/etc/zabbix_agentd.conf Include=/usr/local/zabbix/etc/z ...
- mysql小白系列_08 zabbix3.2.6概念及部署
一 zabbix功能简介 1.zabbix三大监控组件 zabbix server web gui database zabbix_server zabbix proxy agent client 2 ...
- mysql小白系列_06 备份与恢复
1.使用mydumper工具全库备份. 1)源码编译安装 2)全库备份 2.误操作truncate table gyj_t1;利用mysqldump的备份和binlog日志对表gyj_t1做完全恢复. ...
- python操作mysql数据库系列-操作MySql数据库(二)
接口测试框架层级目录结构示意图: page目录下面的mysqlTest.py:存放的是mysql的操作代码 utils目录下面的helper.py:存放的是公共的配置方法 log目录log.md:存放 ...
- mysql小白系列_01 原理
1.什么是MVCC?有什么作用? Multi-Version Concurrency Conrol 多版本并发控为解决数据库并发读写可能会出现不一致数据的情况,需要实现数据库的并发访问控制,写时复制产 ...
随机推荐
- 2019-2020-1 20199326《Linux内核原理与分析》第八周作业
可执行程序工作原理## 编译链接的过程### 示例程序hello.c #include<stdio.h> void main() { printf("Hello world\n& ...
- java中ThreadPool的介绍和使用
文章目录 Thread Pool简介 Executors, Executor 和 ExecutorService ThreadPoolExecutor ScheduledThreadPoolExecu ...
- PIL库的学习总结及生成GIF
一.PIL库的概述 PIL(Python Image Library)库是Python语言的第三方库,需要通过pip工具安装. 打开cmd,输入 pip install pillow PIL库支持图像 ...
- 徐州I
#include<bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=a;i<=b;++i) #defi ...
- IDEA 之 常用快捷键
1. 编辑 No. 快捷键 功能描述 01 Ctrl+Space 补全代码 02 Ctrl+Shift+Space 补全代码,添加分号结束符 03 Ctrl+q 展示某个类或方法的API说明文档 04 ...
- Android Studio快捷键动态演示
Android Studio出来很久了,大部分已经转过来了,相对于Eclipse又是毋庸置疑,更好的使用快捷键必定达到事半功倍的效果. 友情提示:某些电脑按F1-F12键需要先按住FN,比如我的Mac ...
- 深入研究Clang(十) Clang Static Analyzer简介
Clang Static Analyzer 官网地址:http://clang-analyzer.llvm.org/ Clang Static Analyer是一个源码分析工具,它可以发现C.C++和 ...
- log4net进阶手札(二):基本用法
本节将主要在WebSite中,对保存日志在文本文件的基本用法来进行介绍,并结合WebForm的初始化方式区别进行说明,解决方案如下图所示: 一.WebSite应用第1步:配置Web.Config文件, ...
- DeepWalk论文精读:(1)解决问题&相关工作
模块1 1. 研究背景 随着互联网的发展,社交网络逐渐复杂化.多元化.在一个社交网络中,充斥着不同类型的用户,用户间产生各式各样的互动联系,形成大小不一的社群.为了对社交网络进行研究分析,需要将网络中 ...
- Binary Index Tree
0 引言 Leetcode307 这道题给一个可变数组,求从\(i\)到\(j\)的元素之和. 一个naive的做法是,每次查询都从\(i\)累加到\(j\): class NumArray { pu ...