标签: MySQL
MySQL 的 RR 到底有没有解决幻读
本文由原作者归档自知乎,原文发布于 2026-06-15。原文链接:MySQL 的 RR 到底有没有解决幻读。 MySQL 的 RR 到底有没有解决幻读? 关于数据库隔离级别,有一个流传很多年的结论:Read Committed 解决脏读,Repeatable Read 解决不可重复读,Serializable 解决幻读。 所以很多人的认知是:RR 解决不了幻读。 但如果你查 MySQL 官方文档或者一些数据库专家的分享,又会看到另外一种说法:InnoDB 的 RR 已经解决了幻读。 那么问题 …
本文由原作者归档自知乎,原文发布于 2026-06-15。原文链接:MySQL 的 RR 到底有没有解决幻读。 MySQL 的 RR 到底有没有解决幻读? 关于数据库隔离级别,有一个流传很多年的结论:Read Committed 解决脏读,Repeatable Read 解决不可重复读,Serializable 解决幻读。 所以很多人的认知是:RR 解决不了幻读。 但如果你查 MySQL 官方文档或者一些数据库专家的分享,又会看到另外一种说法:InnoDB 的 RR 已经解决了幻读。 那么问题 …
读写分离后为什么会读到旧数据:MaxScale 的一致性读
问题 读写分离最容易让人困惑的一幕是:写请求已经返回成功,紧接着发起查询,却没有看到刚写入的数据。这里不一定是事务没有提交,而是写落在主库后,读被路由到了尚未追上复制进度的副本。 那么,有什么办法可以解决这个问题呢?那就是本文要分析的 MaxScale,它解决了这个问题。 MaxScale 的解决方案 MaxScale 的一致性读思路是把“这次写已经产生到哪里”的 GTID 获取到,再让之后的读请求以这个位置为边界:要么等待只读节点追上,要么直接选择已经追上的只读节点。 源码中将因果读(就是一致 …
问题 读写分离最容易让人困惑的一幕是:写请求已经返回成功,紧接着发起查询,却没有看到刚写入的数据。这里不一定是事务没有提交,而是写落在主库后,读被路由到了尚未追上复制进度的副本。 那么,有什么办法可以解决这个问题呢?那就是本文要分析的 MaxScale,它解决了这个问题。 MaxScale 的解决方案 MaxScale 的一致性读思路是把“这次写已经产生到哪里”的 GTID 获取到,再让之后的读请求以这个位置为边界:要么等待只读节点追上,要么直接选择已经追上的只读节点。 源码中将因果读(就是一致 …
bitpoke/mysql-operator 技术解读系列 - 部署
mysql-operator chart 说明 安装 mysql-operator 的操作命令在官方仓库和官网都有说明,具体安装命令如下: ## For Helm v3 helm repo add bitpoke https://helm-charts.bitpoke.io helm install mysql-operator bitpoke/mysql-operator 在安装的chart包中,values.yaml文件有些内容可以自定义配置。 如果想要在一个k8s集群里面启动多个 …
mysql-operator chart 说明 安装 mysql-operator 的操作命令在官方仓库和官网都有说明,具体安装命令如下: ## For Helm v3 helm repo add bitpoke https://helm-charts.bitpoke.io helm install mysql-operator bitpoke/mysql-operator 在安装的chart包中,values.yaml文件有些内容可以自定义配置。 如果想要在一个k8s集群里面启动多个 …
bitpoke/mysql-operator 技术解读系列 - 序
目的 接下来的一段时间打算做个bitpoke/mysql-operator的技术解读。 出于两点考虑: 深度使用和改造过,熟悉这个项目 在 k8s 上部署 mysql-operator 的需求比较大,但是有没有比较好的原理解读 项目 https://github.com/bitpoke/mysql-operator 范围 包括但不限于: 创建集群 删除集群 参数修改 db user 操作 配置变更 备份数据 恢复数据 自动高可用 主备切换 … 如果有其他内容想要了解也可以留言~
目的 接下来的一段时间打算做个bitpoke/mysql-operator的技术解读。 出于两点考虑: 深度使用和改造过,熟悉这个项目 在 k8s 上部署 mysql-operator 的需求比较大,但是有没有比较好的原理解读 项目 https://github.com/bitpoke/mysql-operator 范围 包括但不限于: 创建集群 删除集群 参数修改 db user 操作 配置变更 备份数据 恢复数据 自动高可用 主备切换 … 如果有其他内容想要了解也可以留言~
MaxScale不支持MySQL8.0的问题
本文由原作者归档自 CSDN,原文发布于 2022-01-19。原文链接:MaxScale不支持MySQL8.0的问题。 背景 mysql的版本是8.0.12,通过maxsclae进行读写分离时,业务端使用mysql-connctor-java-8.0.15.jar访问一直报错。 现象 使用mysql-connctor-java-8.0.15.jar连接mysql 读写分离时,报错,内容如下: 使用mysql-cli直连mysql不报错,但是版本号有问题 使用mariadb-cli直连 …
本文由原作者归档自 CSDN,原文发布于 2022-01-19。原文链接:MaxScale不支持MySQL8.0的问题。 背景 mysql的版本是8.0.12,通过maxsclae进行读写分离时,业务端使用mysql-connctor-java-8.0.15.jar访问一直报错。 现象 使用mysql-connctor-java-8.0.15.jar连接mysql 读写分离时,报错,内容如下: 使用mysql-cli直连mysql不报错,但是版本号有问题 使用mariadb-cli直连 …
mysql limit offset 原理分析与使用
本文由原作者归档自 CSDN,原文发布于 2021-03-16。原文链接:mysql limit offset 原理分析与使用。 背景 一个行数为4亿条的表。 查询50000000~50000010行之间的数据。发现查询时间达到20s!!! 查询执行计划发现,需要进行全表扫描,没有索引。 但是,sbtest1这个表是有索引的 为什么mysql没有选择索引,而是全表扫描呢? 分析 mysql select 语法 SELECT [ALL | DISTINCT | DISTINCTROW ] …
本文由原作者归档自 CSDN,原文发布于 2021-03-16。原文链接:mysql limit offset 原理分析与使用。 背景 一个行数为4亿条的表。 查询50000000~50000010行之间的数据。发现查询时间达到20s!!! 查询执行计划发现,需要进行全表扫描,没有索引。 但是,sbtest1这个表是有索引的 为什么mysql没有选择索引,而是全表扫描呢? 分析 mysql select 语法 SELECT [ALL | DISTINCT | DISTINCTROW ] …
mysql异步复制、半同步复制、组复制
本文由原作者归档自 CSDN,原文发布于 2021-03-03。原文链接:mysql异步复制、半同步复制、组复制。 异步复制 sorce不管replica的死活,写进binlog后,commit完成就算成功。如果最后一个event没有发给replica,主库就挂了,那么就会有丢失数据的风险。 半同步复制 通过官方的半同步插件,将binlog写完后,发送给replica,当replica写入到relay log后,在主库commit。这样可以最大情况保证数据能发送到replica。但是如果 …
本文由原作者归档自 CSDN,原文发布于 2021-03-03。原文链接:mysql异步复制、半同步复制、组复制。 异步复制 sorce不管replica的死活,写进binlog后,commit完成就算成功。如果最后一个event没有发给replica,主库就挂了,那么就会有丢失数据的风险。 半同步复制 通过官方的半同步插件,将binlog写完后,发送给replica,当replica写入到relay log后,在主库commit。这样可以最大情况保证数据能发送到replica。但是如果 …
xtrabackup备份原理与实现
本文由原作者归档自 CSDN,原文发布于 2021-02-04。原文链接:xtrabackup备份原理与实现。 预备知识 xtrabackup备份时,为了保证数据的一致性,会执行以下几个sql来保证位点的准确。 200817 10:20:33 2141744 Query SET SESSION lock_wait_timeout=31536000 2141744 Query FLUSH NO_WRITE_TO_BINLOG TABLES 2141744 Query FLUSH TABLES …
本文由原作者归档自 CSDN,原文发布于 2021-02-04。原文链接:xtrabackup备份原理与实现。 预备知识 xtrabackup备份时,为了保证数据的一致性,会执行以下几个sql来保证位点的准确。 200817 10:20:33 2141744 Query SET SESSION lock_wait_timeout=31536000 2141744 Query FLUSH NO_WRITE_TO_BINLOG TABLES 2141744 Query FLUSH TABLES …
mysqldump引发数据库不可读写的血案
本文由原作者归档自知乎,原文发布于 2021-01-26。原文链接:mysqldump引发数据库不可读写的血案。 问题 一直认为mysql在dump时候加上 –single-transaction 就不会影响业务,除非有DDL同时在操作同一张表。但是最近发现即是没有DDL也有锁表情况,慢日志记录详情如下: # Time: 210115 3:05:10 # User@Host: sss[sss] @ [x.x.x.x] Id: 6109323 # Query_time: 61.872232 …
本文由原作者归档自知乎,原文发布于 2021-01-26。原文链接:mysqldump引发数据库不可读写的血案。 问题 一直认为mysql在dump时候加上 –single-transaction 就不会影响业务,除非有DDL同时在操作同一张表。但是最近发现即是没有DDL也有锁表情况,慢日志记录详情如下: # Time: 210115 3:05:10 # User@Host: sss[sss] @ [x.x.x.x] Id: 6109323 # Query_time: 61.872232 …