- 浏览: 514887 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (563)
- 工作经验 (12)
- 数据库 (13)
- Servlet (10)
- Struts2 (1)
- Spring (25)
- Eclipse (5)
- Hibernate (5)
- Eclips (8)
- HTTP (7)
- J2EE (21)
- EHcache (1)
- HTML (11)
- 工具插件使用 (20)
- JPA (2)
- 杂谈 (17)
- 数据结构与算法 (3)
- Cloud Foundry (1)
- 安全 (10)
- J2SE (57)
- SQL (9)
- DB2 (6)
- 操作系统 (2)
- 设计模式 (1)
- 版本代码管理工具 (13)
- 面试 (10)
- 代码规范 (3)
- Tomcat (12)
- Ajax (5)
- 异常总结 (11)
- REST (2)
- 云 (2)
- RMI (3)
- SOA (1)
- Oracle (12)
- Javascript (20)
- jquery (7)
- JSP自定义标签 (2)
- 电脑知识 (5)
- 浏览器 (3)
- 正则表达式 (3)
- 建站解决问题 (38)
- 数据库设计 (3)
- git (16)
- log4j (1)
- 每天100行代码 (1)
- socket (0)
- java设计模式 耿祥义著 (0)
- Maven (14)
- ibatis (7)
- bug整理 (2)
- 邮件服务器 (8)
- Linux (32)
- TCP/IP协议 (5)
- java多线程并发 (7)
- IO (1)
- 网页小工具 (2)
- Flash (2)
- 爬虫 (1)
- CSS (6)
- JSON (1)
- 触发器 (1)
- java并发 (12)
- ajaxfileupload (1)
- js验证 (1)
- discuz (2)
- Mysql (14)
- jvm (2)
- MyBatis (10)
- POI (1)
- 金融 (1)
- VMWare (0)
- Redis (4)
- 性能测试 (2)
- PostgreSQL (1)
- 分布式 (2)
- Easy UI (1)
- C (1)
- 加密 (6)
- Node.js (1)
- 事务 (2)
- zookeeper (3)
- Spring MVC (2)
- 动态代理 (3)
- 日志 (2)
- 微信公众号 (2)
- IDEA (1)
- 保存他人遇到的问题 (1)
- webservice (11)
- memcached (3)
- nginx (6)
- 抓包 (1)
- java规范 (1)
- dubbo (3)
- xwiki (1)
- quartz (2)
- 数字证书 (1)
- spi (1)
- 学习编程 (6)
- dom4j (1)
- 计算机系统知识 (2)
- JAVA系统知识 (1)
- rpcf (1)
- 单元测试 (2)
- php (1)
- 内存泄漏cpu100%outofmemery (5)
- zero_copy (2)
- mac (3)
- hive (3)
- 分享资料整理 (0)
- 计算机网络 (1)
- 编写操作系统 (1)
- springboot (1)
最新评论
-
masuweng:
亦论一次OutOfMemoryError的定位与解错 -
变脸小伙:
引用[color=red][/color]百度推广中运用的技术 ...
Spring 3 mvc中返回pdf,json,xml等不同的view -
Vanillva:
不同之处是什么??
Mybatis中的like查询 -
thrillerzw:
转了。做个有理想的程序员
有理想的程序员必须知道的15件事 -
liujunhui1988:
觉得很有概括力
15 个必须知道的 Java 面试问题(2年工作经验)
主从复制原理
主从延迟原因
主从延迟解决办法
参考资料
主从复制原理
mysql主库对所有DDL和 DML产生binlog(binlog顺序写),从库的Slave_IO_Running线程到主库取日志,Slave_SQL_Running执行DDL和DML。
主从延迟原因
当主库的TPS并发较高时,产生的DDL数量超过slave一个sql线程所能承受的范围,那么延时就产生了。具体来说,一个DDL卡主了,需要 执行10分钟,那么所有之后的DDL会等待这个DDL执行完才会继续执行,这就导致了延时。有一个直觉上的疑问是:一个DDL需要执行10分钟,主库从库执行DDL需要相同的时间,为什么从库会延时呢?答案是master可以并发,Slave_SQL_Running线程却不可以。主从复制都是单线程的操作。
主从延迟解决办法
1、 多线程。
具体有两个阶段:
第一阶段:MySQL 5.6版本引入并发复制(schema级别),基于schema级别的并发复制核心思想:“不同schema下的表并发提交时的数据不会相互影响,即slave节点可以用对relay log中不同的schema各分配一个类似SQL功能的线程,来重放relay log中主库已经提交的事务,保持数据与主库一致”。可见MySQL5.6版本的并发复制,一个schema分配一个类似SQL线程的功能。
第二阶段:实际生产中往往大多数或者全部的业务数据表都放在同一个schema下,在这种场景即使slave_parallel_workers>0设置也无法并发执行relay log中记录的主库提交数据。 高并发的情况下,由于slave无法并发执行同个schema下的业务数据表,依然会造成主备延迟的情况。MySQL 5.7 引入Enhanced Muti-threaded slaves,当slave配置slave_parallel_workers>0并且global.slave_parallel_type=‘LOGICAL_CLOCK’,可支持一个schema下,slave_parallel_workers个的worker线程并发执行relay log中主库提交的事务。要实现以上功能,需要在master机器标记binary log中的提交的事务哪些是可以并发执行。
2、降低从库安全性,加快速度。
将从库的sync_binlog设置为0
将从库的innodb_flush_log_at_trx_commit设置为2
sync_binlog 配置说明:
sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。
sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。
在MySQL中系统默认的设置是sync_binlog=0,也就是不做任何强制性的磁盘刷新指令,这时候的性能是最好的,但是风险也是最大的。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。而当设置为“1”的时候,是最安全但是性能损耗最大的设置。因为当设置为1的时候,即使系统Crash,也最多丢失binlog_cache中未完成的一个事务,对实际数据没有任何实质性影响。
从以往经验和相关测试来看,对于高并发事务的系统来说,“sync_binlog”设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多。
innodb_flush_log_at_trx_commit 配置说明:
默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。特别是使用电 池供电缓存(Battery backed up cache)时。设成2对于很多运用,特别是从MyISAM表转过来的是可以的,它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬 盘,所以你一般不会丢失超过1-2秒的更新。设成0会更快一点,但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统 挂了时才可能丢数据。
参考资料
https://yq.aliyun.com/articles/88925
http://www.cnblogs.com/cnmenglang/p/6393769.html
http://www.cnblogs.com/breg/p/3631921.html
发表评论
-
python脚本连接mysql
2018-02-24 12:18 528文件db #!/usr/bin/python #codi ... -
Shell脚本中执行sql语句操作mysql的5种方法
2018-01-22 21:41 1449源:http://www.jb51.net/article/5 ... -
MySQL Explain详解
2018-01-02 16:42 409源:https://www.cnblogs.com/x ... -
mysql repeatable-read 一次利用间隙锁解决幻读案例
2017-09-18 19:21 549源:http://fucheng.blog.51cto.com ... -
Mysql经mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案
2016-07-06 17:16 2174源:http://www.jb51.net/artic ... -
新安装mysql 第三方工具连接不上问题
2015-08-24 00:25 817源:http://blog.csdn.net/dongdong ... -
CentOS源码编译安装MySQL 5.5.15
2014-11-17 01:38 680源:https://www.centos.bz/2011/09 ... -
Mysql中limit的用法详解
2014-07-17 16:58 822源:http://blog.csdn.net/zhqingyu ... -
mysql重连,连接丢失:The Last Packet Successfully Received From the Server
2014-07-15 18:48 2017源:http://nkcoder.github.io/ 评: ... -
Lock wait timeout exceeded
2014-04-23 15:28 943源:http://my.oschina.net/jiaoya/ ... -
Fedora 8下的MySQL源码安装手记
2014-03-18 15:00 424源:http://blog.sina.com.cn/s/blo ... -
MySQL数据库添加一个字段
2014-03-14 11:14 657源:http://hi.baidu.com/pianxicun ... -
mysql查询 分组后前 N条数据
2014-01-17 16:04 1528源:http://www.jb51.net/article/3 ...
相关推荐
凌晨对线上一张表添加索引,表数据量太大(1亿+数据,数据量50G以上),造成主从延迟几个小时,各个依赖从库的系统无法查询数据,最终影响业务。 现在就梳理下主从延迟的原理。 二、原理 根据 MySQL 官方文档 MySQL ...
在MySQL数据库系统中,主从延迟是一个常见的问题,特别是在版本升级过程中可能会更加突出。本文将深入探讨MySQL 5.6升级至5.7时遇到的主从延迟问题及其排查过程。 首先,我们要理解主从延迟的基本概念。在MySQL的...
然而,在这种模式下,由于网络延迟、系统负载等原因,主从库间可能存在数据同步延迟,这会给读写分离架构带来数据一致性问题。 处理读写分离时主从复制的数据延迟问题,关键在于识别延迟并制定合适的策略来应对。在...
然而,主从复制过程中可能会出现延迟问题,导致数据一致性受到影响。本文将详细探讨MySQL主从复制的实现原理和延迟问题。 首先,MySQL主从复制的核心在于三个关键进程:主服务器上的IO进程和从服务器上的SQL进程与...
主从状态监控是确保数据一致性的重要手段,Mycat通过定期检查主从延迟来确定是否健康。如果主从延迟过大,可能会影响数据的一致性,此时需要调整复制策略或者排查延迟原因。修复这个bug可能包括改进监控算法,提供更...
- 监控主从延迟:确保从服务器能及时同步主服务器的更新,避免数据不一致。 - 错误处理和故障切换:当主服务器出现问题时,可以迅速将从服务器提升为主服务器,但需注意数据完整性检查。 - 定期备份:即使有了主从...
MySQL主从同步是一种常见的数据库高可用性和读写分离策略,但在实践中可能会遇到主从延迟的问题。主从延迟主要由以下几个原因造成: 1. **单线程处理**:在早期版本的MySQL中,从服务器只有一个IO线程用于读取主...
- 注意主从延迟问题,确保业务逻辑能处理这种延迟可能导致的数据不一致。 - 在进行大规模数据操作时,如批量插入或更新,尽量在低峰时段进行,减少对主库的影响。 这个实例源码可能包含了创建数据库、设置主从...
- 监控主从延迟:`SHOW SLAVE STATUS\G`中的`Seconds_Behind_Master`字段。 - 定期检查主从数据一致性,确保无丢失或错误。 - 考虑使用GTID(Global Transaction Identifier)进行更精确的主从同步,避免因日志...
Seconds_Behind_Master 参数的值可以判断主从延迟的程度。 大数据量优化 对于大数据量的表,优化是非常重要的。以下是一些优化策略: * 表字段优化:not null,因为 null 值很难查询优化且占用额外的索引空间,...
46. Tomcat你做过哪些优化 47. nginx的session不同步怎么办 48. nginx的常用模块有哪些?...67. 主从延迟产生的原因及解决方案? 68. 判断主从延迟的方法 69. MySQL忘记root密码如何找回 70. MySQL的数据备份方式等...
【主从延迟】指的是从库相对于主库的更新存在滞后,这可能是由于各种因素造成的,例如网络问题、硬件性能、数据库配置或SQL语句的执行效率等。在本例中,延迟大约为7.5小时,由大约50个binlog文件的差距引起。 ...
3. **监控与报警**:实时监控主从延迟,一旦超过预设阈值,及时进行报警和处理,避免业务受影响。 4. **读取策略调整**:采用“最近一次成功读”(Read-Committed)或“可重复读”(Repeatable Read)隔离级别,...
产生主从延迟的原因? 5.使用索引查询一定能提高查询的性能吗?为什么? 6.什么是最左前缀原则?什么是最左匹配原则? 7.什么是临时表,何时删除临时表? 8.使用 union 和 union all 时需要注意些什么?
**原理**:通过调整复制机制来减少因主从延迟导致的数据不一致现象。具体做法是在主库接收到写请求后,并不立即返回成功响应,而是等待数据同步至至少一个从库后才确认写操作完成并返回结果。 **优势**: - **简化...