MySQL 大事务和 DDL 的复制延迟优化
本文也有英文版:English version。 MySQL官方从MySQL-5.6开始优化复制延迟问题,最先实现了 Schema 级别的 Binlog 并发应用。然而这个并发能力并不能解决日常的复制延迟。然后官方在 MySQL-5.7上实现了基于提交顺序的并发回放策略(Commit Order), 这种策略依赖主上的事务并发执行数量。主上并发执行的事务非常多的情况下,从库上回放的速度才...
本文也有英文版:English version。 MySQL官方从MySQL-5.6开始优化复制延迟问题,最先实现了 Schema 级别的 Binlog 并发应用。然而这个并发能力并不能解决日常的复制延迟。然后官方在 MySQL-5.7上实现了基于提交顺序的并发回放策略(Commit Order), 这种策略依赖主上的事务并发执行数量。主上并发执行的事务非常多的情况下,从库上回放的速度才...
MySQL 在执行 Online DDL 重建表的时候,可能会碰到 Duplicate Entry 错误,从而导致 DDL 中途失败。失败信息如下所示: mysql> alter table tt add c3 int, algorithm=inplace; ERROR 1062 (23000): Duplicate entry '1' for key 'tt.uk_c2' ...
大事务是MySQL中一个痛点问题, 不仅会带来复制延迟,也会带来大量的稳定性问题。上一篇文章《MySQL大事务提交优化》介绍了大事务在提交时带来的问题,以及AliSQL中做的技术优化。这篇文章会介绍大事务在半同步复制时的问题,以及AliSQL中如何解决这个问题。 在《MySQL大事务提交优化》中,我们提到大事务提交时写Binlog会导致系统出现如下奇怪的慢SQL。 平时执行很快...
本文也有英文版:English version。 在使用和运维MySQL的过程中你一定碰到过下面这种奇怪的慢SQL。 平时执行很快的INSERT语句,竟然执行了1.3s,并且慢SQL记录里也没有看到长时间的锁等待。 多语句事务的所有语句都已经执行完了,但是COMMIT语句竟然执行了1.3s。 当这种情况出现时,最有可能的就是有大事务在提交。以下是一个模拟测试的结果,我...
以下信息是在测试一个 SQL 时,AliSQL 的 Performance Agent 功能采集的 buffer pool 相关的监控信息。你能从这些监控信息看出是什么样的 SQL 在执行吗? 图中:bp = buffer pool, pg = page。 bp_pg_total 是 buffer pool 的总 page 数,一般不会变化的,除非修改了 buffer ...
密码认证的基本要素 基于密码的身份认证包括了两个部分: 服务器端认证信息的存储 密码的认证过程 基于密码的身份认证有一个原则:仅使用者知道密码。密码不能被存储在认证服务器中,在认证过程中也不能通过网络明文传输。因为存储的信息可能被窃取或者滥用,网络可能被监听。这些安全隐患都可能导致密码的泄露。 MySQL中常用的 mysql_native_password 和 caching...
内存泄漏、内存占用高是MySQL中较常见的问题,这些问题的排查非常依赖完善的内存监控信息。MySQL的Performance Schema中提供了内存的监控信息,PFS的内存统计信息粒度比较粗,很难精准的定位到问题代码。 上图是PFS中监控到的内存信息,虽然从内存监控中我们看到String::value和thd::main_mem_root上分配了很多的内存,但是这两个对象是MySQL...