MySQL 8.0 能彻底解决困扰运维的复制延迟问题! 发表于 2021-05-26 | 分类于 mysql | 暂无评论 MySQL 并行复制演进及 MySQL 8.0 中基于 WriteSet 的优化 --雁南归 MySQL 8.0 可以说是MySQL发展历史上里程碑式的一个版本,包括了多个重大更新,目前 Generally Available 版本已经已经发布,正式版本即将发布,在此将介绍8.0版本中引入的一个重要的新特性————基于 WriteSet 的并行复制方案,此方案号称是彻底解决困扰MySQL运维人员多年的复制延迟问题。 说到并行复制,这里简单的回顾一下各个版本的MySQL复制的演进,以帮助理解8.0版本中对并行复制MTS的优化。 ### MySQL 主从复制模型 MySQL的主从架构依赖于 MySQL Binlog 功能, Master节点上产生Binlog并将Binlog写入到Binlog文件中。Slave节点上启动两个线程:一个IO线程,从MySQL上捞取Binlog日志并写入到本地的RelayLog日志;另一个SQL线程,不断的从RelayLog日志中读取日志,并解析执行。这样通过在主机和从机上增加几个文件的顺序读写操作,就可以保证所有在主机上执行过的SQL语句都在从机上一摸一样的执行过一遍。而复制延迟,指的就是一个事务在Master执行完成以后,要多久以后才能在Slave上执行完成。 由于对Binlog文件以及RelayLog文件的读写均为顺序操作,在生产环境中,Slave上的IO线程对Binlog文件的Dump操作是很少产生延迟的。 实际上,从MySQL 5.5 开始,MySQL官方提供了半同步复制插件,每个事务的Binlog需要保证传输到Slave写入 RelayLog 后才能提交,这种架构在主从之间提供了数据完整性,保证了主机在发生故障后从机可以拥有完整的数据副本。因此,复制延迟通常发生在SQL线程执行的过程中。从架构图上可以看到,最早的主从复制模型中,只有一个线程负责执行 Relaylog,也就是说所有在主机上的操作,在从机上是串行回放的。 这就带来一个问题,如果主上写入压力比较大,那么从上的回放速度很有可能会一直跟不上主。(除此之外,MySQL的架构决定了Binlog只有在Commit阶段才会写入Binlog文件并Dump给从机,这也导致主从事务必然有执行延迟,这个问题在大事务中体现的特别明显,不过这个问题就不在本文的讨论范围内了) 既然主从延迟的问题是单线程回放RelayLog太慢,那么减少主从延迟的方案自然就是提高从机上回放RelayLog 的并行度。 阅读全文 »
农业银行绑定微信公众号 设置余额动账提醒 发表于 2021-01-10 | 分类于 生活实用 | 暂无评论 ### 1.关注公众号 微信搜索"中国农业银行"关注即可 ### 2.绑定账号 农业银行公众号--微金融--我的账号--微信银行--输入手机号 问题1: 微信银行?好吧这里意思是微信上的农业银行 问题2: 输入手机号下一步,提示"该手机号已绑定为安全手机号不能再次注册" **?!** 阅读全文 »
python 获取自然周 周一 周日 发表于 2021-01-07 | 分类于 Python | 暂无评论 ### 1.获取本周周一 ```python #!/usr/bin/env python # -*- coding:utf-8 -*- import time from datetime import datetime, timedelta today = time.strftime("%Y%m%d", time.localtime()) today = datetime.strptime(str(today), "%Y%m%d") print(datetime.strftime(today - timedelta(today.weekday()), "%Y-%m-%d")) ``` 阅读全文 »
2021年火车票退改签规则 售票时间 春运日历 发表于 2020-12-30 | 分类于 生活实用 | 暂无评论 ### 2021年售票时间 12306网站售票服务时间延长,从每日的6:00至23:30,提前到**每日5:00至23:30**; ### 2021年改签规则 同步12306网站和线下窗口改签规则,线上也可改签乘车当日24点前其他列车车票。 ### 2021年退票规则 线上退票业务办理时间优化至**全天候24小时**,同时退票截止时间由开车前25分钟调整至**乘车站开车前**; 对现金购票和已取报销凭证的旅客,可先在12306网站办理退票手续,**180天内**到全国铁路任一车站领取退票款项; 车站自助售票设备新增退票功能,满足使用电子支付方式且未换取纸质报销凭证旅客的退票需求,提供24小时全天候服务; 阅读全文 »
Nginx 转发时的一个坑 下划线 中横线问题 发表于 2020-12-10 | 分类于 nginx | 暂无评论 最近遇到一个 Nginx 转发的坑,一个请求转发到 Tomcat 时发现有几个 http header 始终获取不到,导致线上出现 bug,运维说不是他的问题,这个锅我背了。 ### 新增的几个 header 是这样的: accept_sign accept_token 反复检查代码,确定这些 header 是传了的,而且本地测试单独在 tomcat 中是可以接受到这些参数的,所以 tomcat 和命名本身是没问题的,初步断定是 Nginx 的问题。 经过一翻搜索,终于找到了一个 Nginx 的配置参数:**underscores_in_headers**,这个参数默认值为:off,即默认忽略带下划线的 header。 ### 解决方案: 阅读全文 »