摘要: 承蒙大家的支持,刚上市的《MySQL实战》已经跃居京东自营数据库图书热卖榜第 1 名,收到的反馈也普遍不错。对该书感兴趣的童鞋可通过右边的链接购买。目前,京东自营有活动,只需 5 折。 主从延迟作为 MySQL 的痛点已经存在很多年了,以至于大家都有一种错觉:有 MySQL 复制的地方就有主从延迟。 阅读全文
posted @ 2023-04-19 09:13 iVictor 阅读(1858) 评论(2) 推荐(4) 编辑
摘要: 对于MySQL的历史,相信很多人早已耳熟能详,这里就不要赘述。下面仅从产品特性的角度梳理其发展过程中的里程碑事件。 1995年,MySQL 1.0发布,仅供内部使用。 1996年,MySQL 3.11.1发布,直接跳过了MySQL 2.x版本。 1999年,MySQL AB公司成立。同年,发布MyS 阅读全文
posted @ 2018-10-18 08:54 iVictor 阅读(32828) 评论(11) 推荐(20) 编辑
摘要: MHA(Master High Availability)是一套相对成熟的MySQL高可用方案,能做到在0~30s内自动完成数据库的故障切换操作,在master服务器不宕机的情况下,基本能保证数据的一致性。 它由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。其中,MH 阅读全文
posted @ 2017-05-21 21:37 iVictor 阅读(13213) 评论(6) 推荐(3) 编辑
摘要: 对于MySQL的备份,可分为以下两种: 1. 冷备 2. 热备 其中,冷备,顾名思义,就是将数据库关掉,利用操作系统命令拷贝数据库相关文件。而热备指的是在线热备,即在不关闭数据库的情况下,对数据库进行备份。实际生产中基本上都是后者。 关于热备,也可分为两种方式: 1. 逻辑备份 2. 物理备份 对于 阅读全文
posted @ 2016-05-19 11:08 iVictor 阅读(18278) 评论(5) 推荐(5) 编辑
摘要: 同一个SQL,在mysql客户端中可以执行,但在java程序中却报错 阅读全文
posted @ 2024-03-04 09:13 iVictor 阅读(490) 评论(4) 推荐(4) 编辑
摘要: 最近在分析ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)这个报错的常见原因。 在分析的过程中,不可避免会涉及到 MySQL 身份验证的一些实现细节。 加之之前对这一块就有很多疑问, 阅读全文
posted @ 2024-01-08 20:25 iVictor 阅读(989) 评论(2) 推荐(4) 编辑
摘要: 在回答这个问题之前,首先我们看看 MySQL 中有哪些常用的 JDBC 连接池: c3p0 DBCP Druid Tomcat JDBC Pool HikariCP 这些连接池中,c3p0 是一个老牌的连接池,很多流行框架,在其老版本中,都将 c3p0 作为默认的连接池。 DBCP 和 Tomcat 阅读全文
posted @ 2023-12-26 10:57 iVictor 阅读(503) 评论(0) 推荐(2) 编辑
摘要: 问题 最近有好几个朋友问,如何将 performance_schema.events_statements_xxx 中的 TIMER 字段(主要是TIMER_START和TIMER_END)转换为日期时间。 因为 TIMER 字段的单位是皮秒(picosecond),所以很多童鞋会尝试直接转换,但转 阅读全文
posted @ 2023-12-12 14:51 iVictor 阅读(131) 评论(0) 推荐(1) 编辑
摘要: 以前对异步删除几个参数的作用比较模糊,包括网上的很多资料都是一笔带过,语焉不详。 所以这次从源码(基于 Redis 7.0.5)的角度来深入分析下这几个参数的具体作用: lazyfree-lazy-user-del lazyfree-lazy-user-flush lazyfree-lazy-ser 阅读全文
posted @ 2023-11-27 10:06 iVictor 阅读(361) 评论(0) 推荐(1) 编辑
摘要: 预告: 《MySQL实战》即将出版,敬请关注! 有过线上 MySQL 维护经验的童鞋都知道,主从延迟往往是一个让人头疼不已的问题。 不仅仅是其造成的潜在问题比较严重,而且主从延迟原因的定位尤其考量 DBA 的综合能力:既要熟悉复制的内部原理,又能解读主机层面的资源使用情况,甚至还要会分析 binlo 阅读全文
posted @ 2023-03-06 15:38 iVictor 阅读(905) 评论(0) 推荐(2) 编辑
摘要: sysbench是一个开源的、基于LuaJIT(LuaJIT 是 Lua 的即时编译器,可将代码直接翻译成机器码,性能比原生 lua 要高) 的、可自定义脚本的多线程基准测试工具,也是目前用得最多的 MySQL 性能压测工具。 基于 sysbench,我们可以对比 MySQL 在不同版本、不同硬件配 阅读全文
posted @ 2022-12-06 16:01 iVictor 阅读(5541) 评论(2) 推荐(3) 编辑
摘要: 故障检测(Failure Detection)是 Group Replication 的一个核心功能模块,通过它可以及时识别集群中的故障节点,并将故障节点从集群中剔除掉。如果不将故障节点及时剔除的话,一方面会影响集群的性能,另一方面还会阻止集群拓扑的变更。 下面结合一个具体的案例,分析 Group 阅读全文
posted @ 2022-11-07 09:43 iVictor 阅读(1242) 评论(0) 推荐(0) 编辑
摘要: 一文搞懂 MySQL Group Replication 的流控机制~ 阅读全文
posted @ 2022-10-17 08:05 iVictor 阅读(466) 评论(0) 推荐(0) 编辑
摘要: MGR 的新主选举算法,在节点版本一致的情况下,其实也挺简单的。 首先比较权重,权重越高,选为新主的优先级越高。 如果权重一致,则会进一步比较节点的 server_uuid。server_uuid 越小,选为新主的优先级越高。 所以,在节点版本一致的情况下,会选择权重最高,server_uuid 最 阅读全文
posted @ 2022-10-10 16:52 iVictor 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 搭建从库,本质上需要的只是一个一致性备份集及这个备份集对应的位置点信息。之前介绍的几个备份工具( MySQL中如何选择合适的备份策略和备份工具 )均可满足。 这里,我们重点看看如何基于 XtraBackup 搭建从库。 整个过程其实比较简单,无非是备份还原。唯一需要注意的是建立复制时位置点的选择,包 阅读全文
posted @ 2022-06-06 14:35 iVictor 阅读(2066) 评论(0) 推荐(2) 编辑
摘要: mysqldump 和 mydumper 是我们常用的两个逻辑备份工具。 无论是 mysqldump 还是 mydumper 都是将备份数据通过 INSERT 的方式写入到备份文件中。 恢复时,myloader( mydumper 中的恢复工具 ) 是多线程导入,且一个 INSERT 语句中包含多条 阅读全文
posted @ 2022-05-30 13:42 iVictor 阅读(2871) 评论(1) 推荐(4) 编辑
摘要: 数据库升级,是一项让人喜忧参半的工程。喜的是,通过升级,可以享受新版本带来的新特性及性能提升。忧的是,新版本可能与老的版本不兼容,不兼容主要体现在以下三方面: 语法不兼容。 语义不兼容。同一个SQL,在新老版本执行结果不一致。 新版本的查询性能更差。 所以,在对线上数据库进行升级之前,一般都会在测试 阅读全文
posted @ 2022-05-16 10:09 iVictor 阅读(3266) 评论(3) 推荐(3) 编辑
摘要: JSON 数据类型是 MySQL 5.7.8 开始支持的。在此之前,只能通过字符类型(CHAR,VARCHAR 或 TEXT )来保存 JSON 文档。 相对字符类型,原生的 JSON 类型具有以下优势: 在插入时能自动校验文档是否满足 JSON 格式的要求。 优化了存储格式。无需读取整个文档就能快 阅读全文
posted @ 2022-05-05 09:12 iVictor 阅读(15690) 评论(2) 推荐(5) 编辑