IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mysql主从~延时复制 -> 正文阅读

[大数据]mysql主从~延时复制

主从延时原因

1)主库方面原因:binlog写入不及时,sync_binlog=1
2)默认情况下dump_t是串行传输binlog,在并发事务量大时或者大事物情况下,由于dump_thread是串行工作的,导致日志传输较慢。
3)如果从库是单sql线程导致,不管日志有多少,只能一次执行一个事务

解决方案gtid使用group commit方式,可以支持dump_thread并行

4)慢语句
5)从库的个数,每个从库都要对应一个dump_thread
6)网络延时

从库方面原因

1)5.6有了gtid,可以实现多sql_thread,但是只能基于不同的库的事务进行并发回放(database)
2)5.7有了增强gtid,增加了seq_no,增加了新型的并发sql线程模式(logical_clock),Mts技术
3)主从硬件差异太大
4)从库和主库的索引不一致
5) 版本差异
6)SQL线程导致的主从延时
6.1:从库默认只有一个sql线程,只能串行回放事务
6.2:如果主库发生了大事务,会阻塞后续所有的事务的运行

2.3.4主从延时监控
在这里插入图片描述
在这里插入图片描述

从库抓取的binlog:

Master_Log_File: logbin.000005
Read_Master_Log_Pos: 154
从库回放的realylog
Relay_Log_File: mysql_s1-relay-bin.000004
Relay_Log_Pos: 361
Exec_Master_Log_Pos: 154
Relay_Log_Space: 778
查看从库和主库的日志对应关系
mysql> show relaylog events in ‘mysql_s1-relay-bin.000004’;

在这里插入图片描述
group_commit
mysql> show variables like “%group_commit%”;
在这里插入图片描述

binlog_group_commit_sync_delay: 等待多少微妙后才进行组提交
binlog_group_commit_sync_no_delay_count: 如果队列中的事务数达到N个,就忽视binlog_group_commit_sync_delay的设置,直接开始刷盘

延时复制

在传统复制的基础上
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> change master to master_delay=60;
Query OK, 0 rows affected (0.01 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status\G;

在这里插入图片描述

延时从库应用场景

1)延时从库能处理逻辑故障

##延时从库的恢复思路

1)监控到数据库的逻辑故障
2)停止从库sql线程,记录已经回放的位置点(截取日志七点)
mysql> stop slave sql_thread;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G;
在这里插入图片描述

截取reaylog,起点

Show slave status\G;
Relay_Log_File, Relay_Log_Pos
终点:错误之前的位置点
Show relaylog events in ‘’

进行截取

4)模拟sql线程回访日志
从库source
恢复业务:
一. 就一个从库的话,从库替代主库
二. 导出故障库,还原到主库

演练

从库:
mysql> change master to master_delay=3600;
Query OK, 0 rows affected (0.01 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
主库:
mysql> create database test;
Query OK, 1 row affected (0.00 sec)

mysql> create database delay;
Query OK, 1 row affected (0.00 sec)

mysql> use delay;
Database changed
mysql> create table t1(id int);
Query OK, 0 rows affected (0.01 sec)

mysql> insert into t1 values (1),(2);
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> drop database delay;
Query OK, 1 row affected (0.05 sec)
从库:
mysql> stop slave sql_thread;
Query OK, 0 rows affected (0.01 sec)

mysql> show slave status\G;
在这里插入图片描述
找到relay的截取终点
mysql> show relaylog events in ‘mysql_s1-relay-bin.000002’;

在这里插入图片描述
[root@mysql_s1 data]# mysqlbinlog --start-position=317 --stop-position=968 mysql_s1-relay-bin.000002 > /tmp/relay.sql
从库:
mysql> set sql_log_bin=0;
Query OK, 0 rows affected (0.01 sec)

mysql> source /tmp/relay.sql
mysql> set sql_log_bin=1;
在这里插入图片描述
数据回来了
在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:22:24  更:2022-10-22 21:26:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/4 6:17:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码